@carto/ps-react-maps 3.0.0-canary.3 → 3.0.0-canary.4
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 +1580 -1908
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +24 -25
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/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/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","../../../node_modules/.pnpm/@turf+meta@7.2.0/node_modules/@turf/meta/dist/esm/index.js","../../../node_modules/.pnpm/@turf+area@7.2.0/node_modules/@turf/area/dist/esm/index.js","../../../node_modules/.pnpm/sweepline-intersections@1.5.0/node_modules/sweepline-intersections/dist/sweeplineIntersections.esm.js","../../../node_modules/.pnpm/@turf+line-intersect@7.2.0/node_modules/@turf/line-intersect/dist/esm/index.js","../../../node_modules/.pnpm/@turf+centroid@7.2.0/node_modules/@turf/centroid/dist/esm/index.js","../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/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/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 {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport { DeckGL } from '@deck.gl/react'\nimport {\n Map as MapLibre,\n MapProvider,\n useMap as useMapLibre,\n} from 'react-map-gl/maplibre'\nimport {\n APIProvider,\n Map as Gmaps,\n limitTiltRange,\n useMap as useMapGmaps,\n} from '@vis.gl/react-google-maps'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from './const'\nimport type { DeckGLComponentProps } from './types'\nimport { getCursorDefault, getTooltipDefault } from './helpers'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n parameters,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onResize,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const handleResize = useCallback(\n (props: { width: number; height: number }) => {\n onResize?.(props)\n },\n [onResize],\n )\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\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 handleViewStateChange = useCallback(\n (state: ViewStateChangeParameters<MapViewState>) => {\n const newState = !isGmaps\n ? state\n : {\n ...state,\n viewState: limitTiltRange(state) as MapViewState,\n }\n onViewStateChange(newState)\n },\n [isGmaps, onViewStateChange],\n )\n\n const handleLoad = useCallback((e: { type: 'deckgl' | 'load' }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? true : loaded)),\n )\n }, [])\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n handleLoad({\n type: 'deckgl',\n })\n }\n onResize={handleResize}\n onViewStateChange={handleViewStateChange}\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 {!isGmaps ? (\n <MapLibre\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n handleLoad({\n type: 'load',\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n ) : (\n <Gmaps\n mapTypeId={basemap}\n reuseMaps={true}\n renderingType='RASTER'\n {..._gmapsProps}\n defaultCenter={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n defaultZoom={rest.initialViewState?.zoom ?? 0}\n onTilesLoaded={() =>\n handleLoad({\n type: 'load',\n })\n }\n />\n )}\n </DeckGL>\n </div>\n </MapProvider>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n const gmaps = useMapGmaps()!\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre ?? gmaps\n }, [mapLibre, gmaps])\n\n return null\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} 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'\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 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 guides: {\n getLineWidth: 2,\n },\n },\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: 'Geometry',\n },\n} as const\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n operation: 'mask+draw',\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<LassoToolsMode> = {\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'\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 layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions: [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ],\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} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\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 areLayersLoaded: 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 maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n basemap,\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 setLayersLoad: (id, areLayersLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n areLayersLoaded,\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 return store.maps[id]?.instanceRef?.current?.deck\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 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 ...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 {\n EditableGeoJsonLayer,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport 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'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps & { mode: GeoJsonEditMode },\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 guideColor,\n fillColor,\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: guideColor,\n getTentativeFillColor: fillColor,\n getLineColor: guideColor,\n getFillColor: fillColor,\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\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,\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.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 ModeClass = data.mode\n const instance = new ModeClass() as LassoToolsState['modeInstance']\n setModeInstance(mapId, instance)\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.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","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[featureIndex].geometry : isFeature ? geojson.geometry : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? geojson.features[i].geometry : isFeature ? geojson.geometry : geojson;\n featureProperties = isFeatureCollection ? geojson.features[i].properties : isFeature ? geojson.properties : {};\n featureBBox = isFeatureCollection ? geojson.features[i].bbox : isFeature ? geojson.bbox : void 0;\n featureId = isFeatureCollection ? geojson.features[i].id : isFeature ? geojson.id : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (callback(\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false)\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false)\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false)\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (callback(\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false)\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false)\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false)\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[geometryIndex][segmentIndex],\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][segmentIndex],\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { earthRadius } from \"@turf/helpers\";\nimport { geomReduce } from \"@turf/meta\";\nfunction area(geojson) {\n return geomReduce(\n geojson,\n (value, geom) => {\n return value + calculateArea(geom);\n },\n 0\n );\n}\nfunction calculateArea(geom) {\n let total = 0;\n let i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n let total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (let i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\nvar FACTOR = earthRadius * earthRadius / 2;\nvar PI_OVER_180 = Math.PI / 180;\nfunction ringArea(coords) {\n const coordsLength = coords.length - 1;\n if (coordsLength <= 2) return 0;\n let total = 0;\n let i = 0;\n while (i < coordsLength) {\n const lower = coords[i];\n const middle = coords[i + 1 === coordsLength ? 0 : i + 1];\n const upper = coords[i + 2 >= coordsLength ? (i + 2) % coordsLength : i + 2];\n const lowerX = lower[0] * PI_OVER_180;\n const middleY = middle[1] * PI_OVER_180;\n const upperX = upper[0] * PI_OVER_180;\n total += (upperX - lowerX) * Math.sin(middleY);\n i++;\n }\n return total * FACTOR;\n}\nvar turf_area_default = area;\nexport {\n area,\n turf_area_default as default\n};\n//# sourceMappingURL=index.js.map","class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction checkWhichEventIsLeft (e1, e2) {\n if (e1.p.x > e2.p.x) return 1\n if (e1.p.x < e2.p.x) return -1\n\n if (e1.p.y !== e2.p.y) return e1.p.y > e2.p.y ? 1 : -1\n return 1\n}\n\nfunction checkWhichSegmentHasRightEndpointFirst (seg1, seg2) {\n if (seg1.rightSweepEvent.p.x > seg2.rightSweepEvent.p.x) return 1\n if (seg1.rightSweepEvent.p.x < seg2.rightSweepEvent.p.x) return -1\n\n if (seg1.rightSweepEvent.p.y !== seg2.rightSweepEvent.p.y) return seg1.rightSweepEvent.p.y < seg2.rightSweepEvent.p.y ? 1 : -1\n return 1\n}\n\nclass Event {\n\n constructor (p, featureId, ringId, eventId) {\n this.p = {\n x: p[0],\n y: p[1]\n };\n this.featureId = featureId;\n this.ringId = ringId;\n this.eventId = eventId;\n\n this.otherEvent = null;\n this.isLeftEndpoint = null;\n }\n\n isSamePoint (eventToCheck) {\n return this.p.x === eventToCheck.p.x && this.p.y === eventToCheck.p.y\n }\n}\n\nfunction fillEventQueue (geojson, eventQueue) {\n if (geojson.type === 'FeatureCollection') {\n const features = geojson.features;\n for (let i = 0; i < features.length; i++) {\n processFeature(features[i], eventQueue);\n }\n } else {\n processFeature(geojson, eventQueue);\n }\n}\n\nlet featureId = 0;\nlet ringId = 0;\nlet eventId = 0;\nfunction processFeature (featureOrGeometry, eventQueue) {\n const geom = featureOrGeometry.type === 'Feature' ? featureOrGeometry.geometry : featureOrGeometry;\n let coords = geom.coordinates;\n // standardise the input\n if (geom.type === 'Polygon' || geom.type === 'MultiLineString') coords = [coords];\n if (geom.type === 'LineString') coords = [[coords]];\n\n for (let i = 0; i < coords.length; i++) {\n for (let ii = 0; ii < coords[i].length; ii++) {\n let currentP = coords[i][ii][0];\n let nextP = null;\n ringId = ringId + 1;\n for (let iii = 0; iii < coords[i][ii].length - 1; iii++) {\n nextP = coords[i][ii][iii + 1];\n\n const e1 = new Event(currentP, featureId, ringId, eventId);\n const e2 = new Event(nextP, featureId, ringId, eventId + 1);\n\n e1.otherEvent = e2;\n e2.otherEvent = e1;\n\n if (checkWhichEventIsLeft(e1, e2) > 0) {\n e2.isLeftEndpoint = true;\n e1.isLeftEndpoint = false;\n } else {\n e1.isLeftEndpoint = true;\n e2.isLeftEndpoint = false;\n }\n eventQueue.push(e1);\n eventQueue.push(e2);\n\n currentP = nextP;\n eventId = eventId + 1;\n }\n }\n }\n featureId = featureId + 1;\n}\n\nclass Segment {\n\n constructor (event) {\n this.leftSweepEvent = event;\n this.rightSweepEvent = event.otherEvent;\n }\n}\n\nfunction testSegmentIntersect (seg1, seg2) {\n if (seg1 === null || seg2 === null) return false\n\n if (seg1.leftSweepEvent.ringId === seg2.leftSweepEvent.ringId &&\n (seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.rightSweepEvent.isSamePoint(seg2.rightSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.leftSweepEvent) ||\n seg1.leftSweepEvent.isSamePoint(seg2.rightSweepEvent))) return false\n\n const x1 = seg1.leftSweepEvent.p.x;\n const y1 = seg1.leftSweepEvent.p.y;\n const x2 = seg1.rightSweepEvent.p.x;\n const y2 = seg1.rightSweepEvent.p.y;\n const x3 = seg2.leftSweepEvent.p.x;\n const y3 = seg2.leftSweepEvent.p.y;\n const x4 = seg2.rightSweepEvent.p.x;\n const y4 = seg2.rightSweepEvent.p.y;\n\n const denom = ((y4 - y3) * (x2 - x1)) - ((x4 - x3) * (y2 - y1));\n const numeA = ((x4 - x3) * (y1 - y3)) - ((y4 - y3) * (x1 - x3));\n const numeB = ((x2 - x1) * (y1 - y3)) - ((y2 - y1) * (x1 - x3));\n\n if (denom === 0) {\n if (numeA === 0 && numeB === 0) return false\n return false\n }\n\n const uA = numeA / denom;\n const uB = numeB / denom;\n\n if (uA >= 0 && uA <= 1 && uB >= 0 && uB <= 1) {\n const x = x1 + (uA * (x2 - x1));\n const y = y1 + (uA * (y2 - y1));\n return [x, y]\n }\n return false\n}\n\n// import {debugEventAndSegments, debugRemovingSegment} from './debug'\n\nfunction runCheck (eventQueue, ignoreSelfIntersections) {\n ignoreSelfIntersections = ignoreSelfIntersections ? ignoreSelfIntersections : false;\n\n const intersectionPoints = [];\n const outQueue = new TinyQueue([], checkWhichSegmentHasRightEndpointFirst);\n\n while (eventQueue.length) {\n const event = eventQueue.pop();\n if (event.isLeftEndpoint) {\n // debugEventAndSegments(event.p, outQueue.data)\n const segment = new Segment(event);\n for (let i = 0; i < outQueue.data.length; i++) {\n const otherSeg = outQueue.data[i];\n if (ignoreSelfIntersections) {\n if (otherSeg.leftSweepEvent.featureId === event.featureId) continue\n }\n const intersection = testSegmentIntersect(segment, otherSeg);\n if (intersection !== false) intersectionPoints.push(intersection);\n }\n outQueue.push(segment);\n } else if (event.isLeftEndpoint === false) {\n outQueue.pop();\n // const seg = outQueue.pop()\n // debugRemovingSegment(event.p, seg)\n }\n }\n return intersectionPoints\n}\n\nfunction sweeplineIntersections (geojson, ignoreSelfIntersections) {\n const eventQueue = new TinyQueue([], checkWhichEventIsLeft);\n fillEventQueue(geojson, eventQueue);\n return runCheck(eventQueue, ignoreSelfIntersections)\n}\n\nexport default sweeplineIntersections;\n","// index.ts\nimport { feature, featureCollection, point } from \"@turf/helpers\";\n\n// lib/sweepline-intersections-export.ts\nimport lib from \"sweepline-intersections\";\nvar sweeplineIntersections = lib;\n\n// index.ts\nfunction lineIntersect(line1, line2, options = {}) {\n const { removeDuplicates = true, ignoreSelfIntersections = true } = options;\n let features = [];\n if (line1.type === \"FeatureCollection\")\n features = features.concat(line1.features);\n else if (line1.type === \"Feature\") features.push(line1);\n else if (line1.type === \"LineString\" || line1.type === \"Polygon\" || line1.type === \"MultiLineString\" || line1.type === \"MultiPolygon\") {\n features.push(feature(line1));\n }\n if (line2.type === \"FeatureCollection\")\n features = features.concat(line2.features);\n else if (line2.type === \"Feature\") features.push(line2);\n else if (line2.type === \"LineString\" || line2.type === \"Polygon\" || line2.type === \"MultiLineString\" || line2.type === \"MultiPolygon\") {\n features.push(feature(line2));\n }\n const intersections = sweeplineIntersections(\n featureCollection(features),\n ignoreSelfIntersections\n );\n let results = [];\n if (removeDuplicates) {\n const unique = {};\n intersections.forEach((intersection) => {\n const key = intersection.join(\",\");\n if (!unique[key]) {\n unique[key] = true;\n results.push(intersection);\n }\n });\n } else {\n results = intersections;\n }\n return featureCollection(results.map((r) => point(r)));\n}\nvar turf_line_intersect_default = lineIntersect;\nexport {\n turf_line_intersect_default as default,\n lineIntersect\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { point } from \"@turf/helpers\";\nimport { coordEach } from \"@turf/meta\";\nfunction centroid(geojson, options = {}) {\n let xSum = 0;\n let ySum = 0;\n let len = 0;\n coordEach(\n geojson,\n function(coord) {\n xSum += coord[0];\n ySum += coord[1];\n len++;\n },\n true\n );\n return point([xSum / len, ySum / len], options.properties);\n}\nvar turf_centroid_default = centroid;\nexport {\n centroid,\n turf_centroid_default as default\n};\n//# sourceMappingURL=index.js.map","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 {\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 { Feature, FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { DataFilterExtension, 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'\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\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\n const [data, setData] = useState<FeatureCollection>(() => getEmptyData())\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n\n return () => {\n setData(getEmptyData())\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, enabled, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setData(getEmptyData())\n setEnabled(mapId, false)\n }, [mapId, 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 const feature = updatedData.features[0]!\n\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current + 1}`\n\n autoIncrement.current += 1\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 handleCancelEdit()\n }\n },\n [handleCancelEdit, labels?.mask, setValue, mapId, defaultType],\n )\n\n useEffect(() => {\n const isEditing = data.features.length > 0\n\n const {\n border: guideColor,\n point: pointColor,\n fill: fillColor,\n } = styles.colors.editing\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable: true,\n data: data,\n selectedFeatureIndexes: isEditing ? [0] : [],\n },\n guideColor,\n fillColor,\n pointColor,\n onEdit,\n mode: modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n layerProps.mask,\n modeInstance,\n onEdit,\n setLayer,\n styles.colors.editing,\n ])\n\n const maskFeatureCollection = 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 const maskIds = maskValues\n .filter((value) => value.visible)\n .map((value) => value.id)\n const featureIds = data.features.map((feature) => feature.id as string)\n\n if (!featureIds.length) {\n return maskIds\n }\n\n return maskIds.filter((id) => !featureIds.includes(id))\n }, [data.features, maskValues])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n pickable: enabled && modeSelected === 'edit',\n visible: true,\n data: maskFeatureCollection,\n getLineColor: styles.colors.finished.border,\n getFillColor: styles.colors.finished.fill,\n extensions: EXTENSION_FILTER,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n filterRange: [1, 1],\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: ({ object }) => {\n const feature = getEmptyData()\n feature.features.push(object as Feature)\n setData(feature)\n setEnabled(mapId, true)\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 enabled,\n mapId,\n maskFeatureCollection,\n maskVisible,\n modeSelected,\n removeLayers,\n setEnabled,\n setLayer,\n styles.colors.finished.border,\n styles.colors.finished.fill,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n setLayer(layerId, {\n props: {\n pickable: !enabled,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nfunction getEmptyData(): FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n }\n}\n\nLassoTools.Controls = LassoToolsControls\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport 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'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\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 } 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'\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\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 setLayer(layerId, {\n props: {\n pickable: !enabled,\n },\n })\n })\n }, [enabled, 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 })\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 ])\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 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 = instanceRef?.current?.deck?.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 [id, instanceRef, 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 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} 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: Source['widgets'] = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\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?.()\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(\n (state) => state.maps[mapId]?.areLayersLoaded,\n )!\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.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 as T,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n opacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n }\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.maps[mapId]!.areLayersLoaded)\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","DeckGLComponent","t0","$","_c","instanceRef","onLoad","onResize","overlayRef","parameters","rest","t1","t2","t3","t4","t5","t6","t7","t8","basemap","controller","id","layers","gmapsProps","getCursor","getTooltip","onViewStateChange","undefined","t9","t10","apiKey","APIProviderProps","_gmapsProps","_temp","t11","Symbol","for","isLoaded","setLoaded","useState","t12","every","_temp2","isAllLoaded","t13","props","handleResize","mapStyle","isGmaps","t14","t15","filter","_temp3","map","_temp4","_layers","t16","state","newState","viewState","limitTiltRange","handleViewStateChange","t17","e","index","state_0","loaded_0","i","loaded","handleLoad","t18","t19","useEffect","t20","t21","depthTest","t22","MapReferences","t23","jsx","Gmaps","lat","initialViewState","latitude","lng","longitude","zoom","MapLibre","_temp5","t24","MapProvider","jsxs","DeckGL","t25","APIProvider","$el","document","querySelector","classList","remove","Layer","props_0","l","default","mapLibre","useMapLibre","gmaps","useMapGmaps","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","pickable","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","lineWidthMinPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","_subLayerProps","guides","getLineWidth","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","DEFAULT_MASK_LAYER_PROPS","stroked","filled","lineWidthUnits","operation","DEFAULT_LASSO_TOOLS_MODES","polygon","value","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","extensions","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","reduce","acc","curr","areLayersLoaded","current","get","maps","setBasemap","setLoad","setLayersLoad","getOverlayInstance","store","getDeckInstance","deck","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","newViewState","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","getLassoToolsLayer","getLayerProps","EditableGeoJsonLayer","layerProps","guideColor","fillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getLineColor","getFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","visible","setValue","_value","setVisibility","valueId","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","ModeClass","instance","useMemo","serialize","label","properties","handleModeSelected","useCallback","getMaskValues","coordEach","geojson","callback","excludeWrapCoord","j","k","geometry","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","g","featureProperties","featureBBox","featureId","geomReduce","initialValue","previousValue","currentGeometry","area","geom","calculateArea","total","polygonArea","ringArea","FACTOR","earthRadius","PI_OVER_180","coordsLength","lower","middle","upper","lowerX","middleY","upperX","TinyQueue","compare","defaultCompare","item","top","bottom","pos","parent","halfLength","left","best","right","a","b","checkWhichEventIsLeft","e1","e2","checkWhichSegmentHasRightEndpointFirst","seg1","seg2","Event","p","ringId","eventId","eventToCheck","fillEventQueue","eventQueue","processFeature","featureOrGeometry","ii","currentP","nextP","iii","Segment","testSegmentIntersect","x1","y1","x2","y2","x3","y3","x4","y4","denom","numeA","numeB","uA","uB","x","y","runCheck","ignoreSelfIntersections","intersectionPoints","outQueue","segment","otherSeg","intersection","sweeplineIntersections","lib","lineIntersect","line1","line2","removeDuplicates","feature","intersections","featureCollection","results","unique","r","centroid","xSum","ySum","len","coord","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","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","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","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","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","EXTENSION_FILTER","DataFilterExtension","filterSize","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","setData","getEmptyData","maskValues","autoIncrement","useRef","handleCancelEdit","crypto","randomUUID","isEditing","selectedFeatureIndexes","maskFeatureCollection","maskVisible","maskIds","featureIds","getFilterValue","f","Number","filterRange","onClick","push","GeoJsonLayer","forEach","layerId","MaskExtension","maskId","Controls","getMeasurementToolsLayer","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","finished_0","state_10","_setLocale","locale_0","state_12","_setInstance","_temp6","modeInstance_0","state_14","_setPositions","_temp7","positions_0","state_16","_setUnit","_temp8","unit_0","clearLayer","enabled_1","toggleLayer","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","order","Infinity","lastLayers","find","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","interactionState","isZooming","clearInterval","setTimeout","handleAfterRender","context","onAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","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","filters","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","width","height","getContext","_overlayInstance","getRenderingType","html2canvas","getDiv","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","bb0","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","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[10,16,17,18,19,20]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/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/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/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/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 {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport { DeckGL } from '@deck.gl/react'\nimport {\n Map as MapLibre,\n MapProvider,\n useMap as useMapLibre,\n} from 'react-map-gl/maplibre'\nimport {\n APIProvider,\n Map as Gmaps,\n limitTiltRange,\n useMap as useMapGmaps,\n} from '@vis.gl/react-google-maps'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from './const'\nimport type { DeckGLComponentProps } from './types'\nimport { getCursorDefault, getTooltipDefault } from './helpers'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n parameters,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onResize,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const handleResize = useCallback(\n (props: { width: number; height: number }) => {\n onResize?.(props)\n },\n [onResize],\n )\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\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 handleViewStateChange = useCallback(\n (state: ViewStateChangeParameters<MapViewState>) => {\n const newState = !isGmaps\n ? state\n : {\n ...state,\n viewState: limitTiltRange(state) as MapViewState,\n }\n onViewStateChange(newState)\n },\n [isGmaps, onViewStateChange],\n )\n\n const handleLoad = useCallback((e: { type: 'deckgl' | 'load' }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? true : loaded)),\n )\n }, [])\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n handleLoad({\n type: 'deckgl',\n })\n }\n onResize={handleResize}\n onViewStateChange={handleViewStateChange}\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 {!isGmaps ? (\n <MapLibre\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n handleLoad({\n type: 'load',\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n ) : (\n <Gmaps\n mapTypeId={basemap}\n reuseMaps={true}\n renderingType='RASTER'\n {..._gmapsProps}\n defaultCenter={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n defaultZoom={rest.initialViewState?.zoom ?? 0}\n onTilesLoaded={() =>\n handleLoad({\n type: 'load',\n })\n }\n />\n )}\n </DeckGL>\n </div>\n </MapProvider>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n const gmaps = useMapGmaps()!\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre ?? gmaps\n }, [mapLibre, gmaps])\n\n return null\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} 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'\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 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 guides: {\n getLineWidth: 2,\n },\n },\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: 'Geometry',\n },\n} as const\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n operation: 'mask+draw',\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<LassoToolsMode> = {\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'\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 layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions: [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ],\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} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\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 areLayersLoaded: 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 maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n basemap,\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 setLayersLoad: (id, areLayersLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n areLayersLoaded,\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 return store.maps[id]?.instanceRef?.current?.deck\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 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 ...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 {\n EditableGeoJsonLayer,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport 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'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps & { mode: GeoJsonEditMode },\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 guideColor,\n fillColor,\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: guideColor,\n getTentativeFillColor: fillColor,\n getLineColor: guideColor,\n getFillColor: fillColor,\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\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,\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.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 ModeClass = data.mode\n const instance = new ModeClass() as LassoToolsState['modeInstance']\n setModeInstance(mapId, instance)\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.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 {\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 { Feature, FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { DataFilterExtension, 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 } from '@deck.gl/core'\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\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 [data, setData] = useState<FeatureCollection>(() => getEmptyData())\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n\n return () => {\n setData(getEmptyData())\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, enabled, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setData(getEmptyData())\n setEnabled(mapId, false)\n }, [mapId, 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 const feature = updatedData.features[0]!\n\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current + 1}`\n\n autoIncrement.current += 1\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 handleCancelEdit()\n }\n },\n [handleCancelEdit, labels?.mask, setValue, mapId, defaultType],\n )\n\n useEffect(() => {\n const isEditing = data.features.length > 0\n\n const {\n border: guideColor,\n point: pointColor,\n fill: fillColor,\n } = styles.colors.editing\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable: true,\n data: data,\n selectedFeatureIndexes: isEditing ? [0] : [],\n },\n guideColor,\n fillColor,\n pointColor,\n onEdit,\n mode: modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n layerProps.mask,\n modeInstance,\n onEdit,\n setLayer,\n styles.colors.editing,\n ])\n\n const maskFeatureCollection = 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 const maskIds = maskValues\n .filter((value) => value.visible)\n .map((value) => value.id)\n const featureIds = data.features.map((feature) => feature.id as string)\n\n if (!featureIds.length) {\n return maskIds\n }\n\n return maskIds.filter((id) => !featureIds.includes(id))\n }, [data.features, maskValues])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n pickable: enabled && modeSelected === 'edit',\n visible: true,\n data: maskFeatureCollection,\n getLineColor: styles.colors.finished.border,\n getFillColor: styles.colors.finished.fill,\n extensions: EXTENSION_FILTER,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n filterRange: [1, 1],\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: ({ object }) => {\n const feature = getEmptyData()\n feature.features.push(object as Feature)\n setData(feature)\n setEnabled(mapId, true)\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 enabled,\n mapId,\n maskFeatureCollection,\n maskVisible,\n modeSelected,\n removeLayers,\n setEnabled,\n setLayer,\n styles.colors.finished.border,\n styles.colors.finished.fill,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n if (enabled) {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable = !enabled && mapLayersVisibilityRef.current[layerId]\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\nfunction getEmptyData(): FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n }\n}\n\nLassoTools.Controls = LassoToolsControls\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport 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'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\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'\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 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 if (enabled) {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable = !enabled && mapLayersVisibilityRef.current[layerId]\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 })\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 ])\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 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 = instanceRef?.current?.deck?.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 [id, instanceRef, 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 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} 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: Source['widgets'] = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\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?.()\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(\n (state) => state.maps[mapId]?.areLayersLoaded,\n )!\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.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 as T,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n opacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n }\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.maps[mapId]!.areLayersLoaded)\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","DeckGLComponent","t0","$","_c","instanceRef","onLoad","onResize","overlayRef","parameters","rest","t1","t2","t3","t4","t5","t6","t7","t8","basemap","controller","id","layers","gmapsProps","getCursor","getTooltip","onViewStateChange","undefined","t9","t10","apiKey","APIProviderProps","_gmapsProps","_temp","t11","Symbol","for","isLoaded","setLoaded","useState","t12","every","_temp2","isAllLoaded","t13","props","handleResize","mapStyle","isGmaps","t14","t15","filter","_temp3","map","_temp4","_layers","t16","state","newState","viewState","limitTiltRange","handleViewStateChange","t17","e","index","state_0","loaded_0","i","loaded","handleLoad","t18","t19","useEffect","t20","t21","depthTest","t22","MapReferences","t23","jsx","Gmaps","lat","initialViewState","latitude","lng","longitude","zoom","MapLibre","_temp5","t24","MapProvider","jsxs","DeckGL","t25","APIProvider","$el","document","querySelector","classList","remove","Layer","props_0","l","default","mapLibre","useMapLibre","gmaps","useMapGmaps","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","pickable","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","lineWidthMinPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","_subLayerProps","guides","getLineWidth","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","DEFAULT_MASK_LAYER_PROPS","stroked","filled","lineWidthUnits","operation","DEFAULT_LASSO_TOOLS_MODES","polygon","value","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","extensions","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","reduce","acc","curr","areLayersLoaded","current","get","maps","setBasemap","setLoad","setLayersLoad","getOverlayInstance","store","getDeckInstance","deck","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","newViewState","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","getLassoToolsLayer","getLayerProps","EditableGeoJsonLayer","layerProps","guideColor","fillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getLineColor","getFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","visible","setValue","_value","setVisibility","valueId","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","ModeClass","instance","useMemo","serialize","label","properties","handleModeSelected","useCallback","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","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","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","EXTENSION_FILTER","DataFilterExtension","filterSize","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","setData","getEmptyData","maskValues","autoIncrement","handleCancelEdit","feature","crypto","randomUUID","isEditing","selectedFeatureIndexes","maskFeatureCollection","maskVisible","maskIds","featureIds","getFilterValue","f","Number","filterRange","onClick","push","GeoJsonLayer","forEach","layerId","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","finished_0","state_10","_setLocale","locale_0","state_12","_setInstance","_temp6","modeInstance_0","state_14","_setPositions","_temp7","positions_0","state_16","_setUnit","_temp8","unit_0","clearLayer","enabled_1","toggleLayer","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","interactionState","isZooming","clearInterval","setTimeout","handleAfterRender","context","onAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","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","filters","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","width","height","getContext","_overlayInstance","getRenderingType","html2canvas","getDiv","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","bb0","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","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[10]}
|