This commit is contained in:
Andras Schmelczer 2026-05-06 19:54:50 +01:00
parent e3e8a4522e
commit 58bb3cb4f8
9 changed files with 49 additions and 174 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 375 KiB

Before After
Before After

Binary file not shown.

View file

@ -233,7 +233,6 @@ export default memo(function Map({
}, [viewState, dimensions, onViewChange]);
const handleMove = useCallback((evt: { viewState: ViewState }) => {
if (window.__demoRecording) window.__demoMapIdle = false;
setInternalViewState((prev) => {
const next = evt.viewState;
// Skip re-render when viewport values haven't changed (e.g. container resize
@ -254,10 +253,6 @@ export default memo(function Map({
const handleIdle = useCallback(() => {
if (screenshotMode) window.__map_idle = true;
if (window.__demoRecording) {
window.__demoMapIdle = true;
window.__demoMapIdleVersion = (window.__demoMapIdleVersion ?? 0) + 1;
}
}, [screenshotMode]);
const handleFlyTo = useCallback((lat: number, lng: number, zoom: number) => {

View file

@ -55,18 +55,6 @@ const MapPageSelectionPane = lazy(() =>
const UpgradeModal = lazy(() => import('../ui/UpgradeModal'));
const Joyride = lazy(() => import('react-joyride'));
declare global {
interface Window {
__demoRecording?: boolean;
__demoOpenBestHexagon?: () => string | null;
__demoMapSettled?: boolean;
__demoMapSettleVersion?: number;
__demoMapIdle?: boolean;
__demoMapIdleVersion?: number;
__demoSelectionReady?: boolean;
}
}
function MapFallback() {
return (
<div className="flex h-full w-full items-center justify-center bg-warm-100 dark:bg-navy-950">
@ -231,10 +219,6 @@ export default function MapPage({
travelTimeEntries: entries,
shareCode,
});
const demoMapHasData = mapData.usePostcodeView
? mapData.postcodeData.length > 0
: mapData.data.length > 0;
const handleAiFilterSubmit = useCallback(
async (query: string) => {
// Build context from current filters for conversational refinement
@ -432,48 +416,6 @@ export default function MapPage({
setRightPaneTab(initialTab);
}, []); // eslint-disable-line react-hooks/exhaustive-deps
useEffect(() => {
if (!window.__demoRecording) return;
void import('./MapPageSelectionPane');
void import('./AreaPane');
void import('./PropertiesPane');
}, []);
useEffect(() => {
if (!window.__demoRecording) return;
window.__demoMapSettled = !mapData.loading && demoMapHasData;
if (window.__demoMapSettled) {
window.__demoMapSettleVersion = (window.__demoMapSettleVersion ?? 0) + 1;
}
return () => {
window.__demoMapSettled = false;
};
}, [demoMapHasData, mapData.loading]);
useEffect(() => {
if (!window.__demoRecording) return;
window.__demoSelectionReady = Boolean(selectedHexagon && areaStats && !loadingAreaStats);
return () => {
window.__demoSelectionReady = false;
};
}, [areaStats, loadingAreaStats, selectedHexagon]);
useEffect(() => {
if (!window.__demoRecording) return;
window.__demoOpenBestHexagon = () => {
const best = mapData.data.reduce<(typeof mapData.data)[number] | null>((winner, item) => {
if (!winner || item.count > winner.count) return item;
return winner;
}, null);
if (!best) return null;
handleHexagonClick(best.h3);
return best.h3;
};
return () => {
delete window.__demoOpenBestHexagon;
};
}, [handleHexagonClick, mapData.data]);
// Navigate to a specific postcode on mount (e.g. from saved properties)
useEffect(() => {
if (!initialPostcode) return;
@ -1124,7 +1066,6 @@ export default function MapPage({
onClose={handleCloseSelection}
renderAreaPane={renderAreaPane}
renderPropertiesPane={renderPropertiesPane}
demoReady={Boolean(areaStats && !loadingAreaStats)}
/>
</Suspense>
)}

View file

@ -18,7 +18,6 @@ interface MapPageSelectionPaneProps {
onClose: () => void;
renderAreaPane: () => ReactNode;
renderPropertiesPane: () => ReactNode;
demoReady?: boolean;
}
export function MapPageSelectionPane({
@ -30,12 +29,10 @@ export function MapPageSelectionPane({
onClose,
renderAreaPane,
renderPropertiesPane,
demoReady = false,
}: MapPageSelectionPaneProps) {
return (
<div
data-tutorial="right-pane"
data-demo-ready={demoReady ? 'true' : 'false'}
className="flex bg-white dark:bg-navy-950 shadow-lg z-10"
style={{ width }}
>