@carto/ps-react-maps 3.1.0-canary.1 → 3.1.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +754 -754
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/providers/map/const.ts","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/use-event-manager.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../src/providers/sources/const.ts","../src/providers/sources/store.ts","../src/models/use-widget-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram..tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useEffect, useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n useEffect(() => {\n onLoad({\n type: 'load',\n value: false,\n })\n onLoad({\n type: 'deckgl',\n value: false,\n })\n }, [onLoad])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useEffect, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n // const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n\n useEffect(() => {\n onLoad({\n type: 'load',\n value: false,\n })\n onLoad({\n type: 'deckgl',\n value: false,\n })\n }, [onLoad])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n mapTypeId={basemap}\n disableDefaultUI={true}\n gestureHandling={'greedy'}\n {..._gmapsProps}\n defaultCenter={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n defaultZoom={(rest.initialViewState?.zoom ?? 0) + 1}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n >\n <MapReferences overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap()!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions,\n },\n legend: {\n ..._layer.legend,\n ...layer.legend,\n },\n }\n\n return { layers }\n }),\n}))\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n if (curr.viewState) {\n acc.viewStates[curr.id] = curr.viewState\n acc.viewports[curr.id] = null\n }\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n ...viewState,\n },\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const viewport = store.getViewport(id)\n if (!viewport) return\n\n const newBounds = viewport?.fitBounds(bounds, options?.boundsOptions)\n\n const newViewState = {\n ...newBounds,\n ...options?.viewStateOptions,\n } as MapViewState\n\n store.setViewState(id, newViewState)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n const viewport = store.getViewport(id)\n\n if (!viewport) return\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\n\nconst EVENT_TYPES = [\n 'anyclick',\n 'pointermove',\n 'panstart',\n 'panmove',\n 'panend',\n 'keyup',\n]\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\nimport type { EventManager } from 'mjolnir.js'\n\nexport function getLassoToolsLayer({\n mode,\n eventManager,\n ...defaultProps\n}: LassoToolsLayerProps & {\n eventManager: EventManager | null\n}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n eventManager,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((data) => setValue(mapId, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\n\nconst convert = configureMeasurements({\n length,\n})\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n) {\n return convert(distance)\n .from(CONVERSIONS_UNITS[MapMeasurementUnit.meter])\n .to(CONVERSIONS_UNITS[unit])\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n this.area = area({\n type: 'Polygon',\n coordinates: [this.getClickSequence()],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const position = centroid(tentativeGuide) as FeatureOf<Point>\n this.area = area(tentativeGuide)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport { EventManager } from 'mjolnir.js'\n\nexport function useEventManager({ mapId }: { mapId: MapComponentProps['id'] }) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const eventManager = useMemo(() => {\n if (!isGmaps || !isLoaded) {\n // if is null CustomEditableGeojsonLayer uses the deck.gl eventManager\n return null\n }\n\n const instance = getOverlayInstance(mapId) as google.maps.Map\n\n const eventManager = new EventManager(instance.getDiv(), {})\n return eventManager\n }, [getOverlayInstance, isGmaps, isLoaded, mapId])\n\n return eventManager\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const eventManager = useEventManager({ mapId })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n eventManager,\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n eventManager,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\nimport type { EventManager } from 'mjolnir.js'\n\nexport function getMeasurementToolsLayer({\n mode,\n eventManager,\n ...defaultProps\n}: MeasurementToolsLayerProps & {\n eventManager: EventManager | null\n}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n eventManager,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsLayerProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps = {} as MeasurementToolsLayerProps['layerProps'],\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const eventManager = useEventManager({ mapId })\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n }, [addLayers, clearLayerOnStart, mapId, removeLayers, enabled])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n eventManager,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n eventManager,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const { basemap, instanceRef, overlayRef } = useMapStore(\n (state) => state.maps[id]!,\n )\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (newViewState.interactionState.isZooming) {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n }\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","export const ApiBaseUrl = 'https://gcp-us-east1.api.carto.com'\n\nexport const clientID = 'ps'\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport { ApiBaseUrl, clientID } from './const'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n} from '@carto/api-client'\n\nexport const useSourceStore = create<SourceStore>((set) => ({\n sources: {},\n setSource: (id, source) =>\n set((state) => {\n const sources = { ...state.sources }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const newSource = {\n ...(sources[id] ?? {\n apiBaseUrl: ApiBaseUrl,\n clientId: clientID,\n }),\n ...source,\n } as Source\n\n const widgets = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n }),\n setFilters: (id, newFilters) =>\n set((state) => {\n let filters = {}\n const source = state.sources[id] ?? ({} as Source)\n\n if (newFilters.length !== 0) {\n filters = newFilters.reduce((acc, cur) => {\n if (!('values' in cur) || !cur.values?.length) {\n acc = removeFilter(acc, cur)\n return acc\n }\n\n acc = addFilter(acc, cur)\n return acc\n }, source?.filters ?? {})\n }\n\n return {\n sources: {\n ...state.sources,\n [id]: { ...source, filters },\n },\n }\n }),\n}))\n\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-compiler/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'categories',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getCategories(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'features',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFeatures(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'formula',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFormula(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'histogram',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getHistogram(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'range',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getRange(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'scatter',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getScatter(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'table',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTable(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'time-series',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTimeSeries(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(layersId.map((id) => layers[id]).filter((l) => !!l))\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangRowCollapsed = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangRowCollapsed,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/helpers'\nimport type { Polygon } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n return {\n spatialFilter: lassoToolsSpatialFilter ?? viewportSpatialFilter,\n lassoToolsSpatialFilter: lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n })\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","t2","value","useEffect","t3","t4","filter","_temp","map","_temp2","_layers","t5","t6","t7","depthTest","t8","MapReferences","t9","t10","jsx","Map","_temp3","t11","MapProvider","jsxs","DeckGL","$el","document","querySelector","classList","remove","Layer","props","l","default","mapLibre","useMapLibre","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","setProps","GoogleMaps","basemap","gmapsProps","apiKey","APIProviderProps","_gmapsProps","useMemo","mappingGmapsToDeck","useCallback","detail","center","zoom","heading","tilt","latitude","lat","longitude","lng","bearing","pitch","handleViewStateChange","newViewState","current","_deck","viewState","_viewState","width","height","interactionState","isZooming","APIProvider","initialViewState","gmaps","DeckGLComponent","undefined","isLoaded","setLoaded","useState","every","isAllLoaded","isGmaps","e","index","state","loaded_0","i","loaded","handleLoad","t12","t13","t14","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","key","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","reduce","acc","extension","some","equals","push","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","curr","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","store","getDeckInstance","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","boundsOptions","viewStateOptions","flyTo","target","finalViewState","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","EVENT_TYPES","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","eventManager","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","serialize","label","handleModeSelected","getMaskValues","convert","configureMeasurements","convertMetersTo","distance","unit","from","CONVERSIONS_UNITS","MapMeasurementUnit","meter","to","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","doubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","area","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","geometry","centroid","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","useEventManager","store_0","bb0","instance","EventManager","getDiv","store_1","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","layerId","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_0","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","t15","modeInstance_0","t16","state_14","_setPositions","_temp7","t17","positions_0","t18","state_16","_setUnit","_temp8","t19","unit_0","t20","clearLayer","t21","enabled_1","toggleLayer","t22","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","layers_0","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","setFilters","newFilters","filters","cur","removeFilter","addFilter","useSource","query","WidgetQuerySource","accessToken","sqlQuery","spatialDataType","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","split","option","useWidgetModel","sourceId","widgetModel","useCategories","widgetProps","useQueryProps","getCategories","queryKey","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","onChangeVisibility","onChangRowCollapsed","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","overlayInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","createViewportSpatialFilter","getBounds","_values","multiPolygon","value_0","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","header","body","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[13]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/providers/map/const.ts","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/use-event-manager.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../src/providers/sources/const.ts","../src/providers/sources/store.ts","../src/models/use-widget-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram..tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useEffect, useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n useEffect(() => {\n onLoad({\n type: 'load',\n value: false,\n })\n onLoad({\n type: 'deckgl',\n value: false,\n })\n }, [onLoad])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useEffect, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n useEffect(() => {\n onLoad({\n type: 'load',\n value: false,\n })\n onLoad({\n type: 'deckgl',\n value: false,\n })\n }, [onLoad])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n mapTypeId={basemap}\n disableDefaultUI={true}\n gestureHandling={'greedy'}\n {..._gmapsProps}\n center={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n zoom={(rest.initialViewState?.zoom ?? 0) + 1}\n tilt={rest.initialViewState?.pitch}\n heading={rest.initialViewState?.bearing}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n >\n <MapReferences overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap()!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions,\n },\n legend: {\n ..._layer.legend,\n ...layer.legend,\n },\n }\n\n return { layers }\n }),\n}))\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n if (curr.viewState) {\n acc.viewStates[curr.id] = curr.viewState\n acc.viewports[curr.id] = null\n }\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n ...viewState,\n },\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const viewport = store.getViewport(id)\n if (!viewport) return\n\n const newBounds = viewport?.fitBounds(bounds, options?.boundsOptions)\n\n const newViewState = {\n ...newBounds,\n ...options?.viewStateOptions,\n } as MapViewState\n\n store.setViewState(id, newViewState)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n const viewport = store.getViewport(id)\n\n if (!viewport) return\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\n\nconst EVENT_TYPES = [\n 'anyclick',\n 'pointermove',\n 'panstart',\n 'panmove',\n 'panend',\n 'keyup',\n]\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_TYPES) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\nimport type { EventManager } from 'mjolnir.js'\n\nexport function getLassoToolsLayer({\n mode,\n eventManager,\n ...defaultProps\n}: LassoToolsLayerProps & {\n eventManager: EventManager | null\n}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n eventManager,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((data) => setValue(mapId, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\n\nconst convert = configureMeasurements({\n length,\n})\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n) {\n return convert(distance)\n .from(CONVERSIONS_UNITS[MapMeasurementUnit.meter])\n .to(CONVERSIONS_UNITS[unit])\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n this.area = area({\n type: 'Polygon',\n coordinates: [this.getClickSequence()],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const position = centroid(tentativeGuide) as FeatureOf<Point>\n this.area = area(tentativeGuide)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport { EventManager } from 'mjolnir.js'\n\nexport function useEventManager({ mapId }: { mapId: MapComponentProps['id'] }) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const eventManager = useMemo(() => {\n if (!isGmaps || !isLoaded) {\n // if is null CustomEditableGeojsonLayer uses the deck.gl eventManager\n return null\n }\n\n const instance = getOverlayInstance(mapId) as google.maps.Map\n\n const eventManager = new EventManager(instance.getDiv(), {})\n return eventManager\n }, [getOverlayInstance, isGmaps, isLoaded, mapId])\n\n return eventManager\n}\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const eventManager = useEventManager({ mapId })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n eventManager,\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n eventManager,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\nimport type { EventManager } from 'mjolnir.js'\n\nexport function getMeasurementToolsLayer({\n mode,\n eventManager,\n ...defaultProps\n}: MeasurementToolsLayerProps & {\n eventManager: EventManager | null\n}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n eventManager,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsLayerProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps = {} as MeasurementToolsLayerProps['layerProps'],\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const eventManager = useEventManager({ mapId })\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n }, [addLayers, clearLayerOnStart, mapId, removeLayers, enabled])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n eventManager,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n eventManager,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const { basemap, instanceRef, overlayRef } = useMapStore(\n (state) => state.maps[id]!,\n )\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (newViewState.interactionState.isZooming) {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n }\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","export const ApiBaseUrl = 'https://gcp-us-east1.api.carto.com'\n\nexport const clientID = 'ps'\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport { ApiBaseUrl, clientID } from './const'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n} from '@carto/api-client'\n\nexport const useSourceStore = create<SourceStore>((set) => ({\n sources: {},\n setSource: (id, source) =>\n set((state) => {\n const sources = { ...state.sources }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const newSource = {\n ...(sources[id] ?? {\n apiBaseUrl: ApiBaseUrl,\n clientId: clientID,\n }),\n ...source,\n } as Source\n\n const widgets = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n }),\n setFilters: (id, newFilters) =>\n set((state) => {\n let filters = {}\n const source = state.sources[id] ?? ({} as Source)\n\n if (newFilters.length !== 0) {\n filters = newFilters.reduce((acc, cur) => {\n if (!('values' in cur) || !cur.values?.length) {\n acc = removeFilter(acc, cur)\n return acc\n }\n\n acc = addFilter(acc, cur)\n return acc\n }, source?.filters ?? {})\n }\n\n return {\n sources: {\n ...state.sources,\n [id]: { ...source, filters },\n },\n }\n }),\n}))\n\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-compiler/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'categories',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getCategories(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'features',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFeatures(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'formula',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFormula(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'histogram',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getHistogram(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'range',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getRange(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'scatter',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getScatter(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'table',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTable(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'time-series',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTimeSeries(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(layersId.map((id) => layers[id]).filter((l) => !!l))\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangRowCollapsed = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangRowCollapsed,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/helpers'\nimport type { Polygon } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n return {\n spatialFilter: lassoToolsSpatialFilter ?? viewportSpatialFilter,\n lassoToolsSpatialFilter: lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n })\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","t2","value","useEffect","t3","t4","filter","_temp","map","_temp2","_layers","t5","t6","t7","depthTest","t8","MapReferences","t9","t10","jsx","Map","_temp3","t11","MapProvider","jsxs","DeckGL","$el","document","querySelector","classList","remove","Layer","props","l","default","mapLibre","useMapLibre","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","setProps","GoogleMaps","basemap","gmapsProps","apiKey","APIProviderProps","_gmapsProps","useMemo","mappingGmapsToDeck","useCallback","detail","center","zoom","heading","tilt","latitude","lat","longitude","lng","bearing","pitch","handleViewStateChange","newViewState","current","_deck","viewState","_viewState","width","height","interactionState","isZooming","APIProvider","initialViewState","gmaps","DeckGLComponent","undefined","isLoaded","setLoaded","useState","every","isAllLoaded","isGmaps","e","index","state","loaded_0","i","loaded","handleLoad","t12","t13","t14","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","key","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","reduce","acc","extension","some","equals","push","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","curr","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","store","getDeckInstance","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","boundsOptions","viewStateOptions","flyTo","target","finalViewState","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","EVENT_TYPES","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","eventManager","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","serialize","label","handleModeSelected","getMaskValues","convert","configureMeasurements","convertMetersTo","distance","unit","from","CONVERSIONS_UNITS","MapMeasurementUnit","meter","to","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","doubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","area","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","geometry","centroid","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","useEventManager","store_0","bb0","instance","EventManager","getDiv","store_1","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","layerId","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_0","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","t15","modeInstance_0","t16","state_14","_setPositions","_temp7","t17","positions_0","t18","state_16","_setUnit","_temp8","t19","unit_0","t20","clearLayer","t21","enabled_1","toggleLayer","t22","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","layers_0","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","setFilters","newFilters","filters","cur","removeFilter","addFilter","useSource","query","WidgetQuerySource","accessToken","sqlQuery","spatialDataType","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","split","option","useWidgetModel","sourceId","widgetModel","useCategories","widgetProps","useQueryProps","getCategories","queryKey","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","onChangeVisibility","onChangRowCollapsed","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","overlayInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","createViewportSpatialFilter","getBounds","_values","multiPolygon","value_0","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","header","body","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[13]}
|