@carto/ps-react-maps 3.0.0-canary.1 → 3.0.0-canary.3
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 +2040 -1448
- package/dist/index.js.map +1 -1
- package/dist/types/editable/lasso-tools/const.d.ts +1 -0
- package/dist/types/editable/lasso-tools/lasso-tools.d.ts +1 -1
- package/dist/types/editable/lasso-tools/util.d.ts +4 -0
- package/dist/types/editable/measurement-tools/measurement-tools.d.ts +1 -1
- package/dist/types/editable/measurement-tools/provider/types.d.ts +1 -1
- package/dist/types/editable/measurement-tools/types.d.ts +1 -1
- package/dist/types/editable/measurement-tools/use-measurement-tools.d.ts +1 -1
- package/dist/types/index.d.ts +22 -7
- package/dist/types/models/categories.d.ts +7 -0
- package/dist/types/models/features.d.ts +7 -0
- package/dist/types/models/formula.d.ts +7 -0
- package/dist/types/models/histogram..d.ts +7 -0
- package/dist/types/models/range.d.ts +7 -0
- package/dist/types/models/scatter.d.ts +7 -0
- package/dist/types/models/table.d.ts +7 -0
- package/dist/types/models/time-series.d.ts +7 -0
- package/dist/types/models/types.d.ts +7 -0
- package/dist/types/models/use-widget-model.d.ts +1 -0
- package/dist/types/provider.d.ts +11 -0
- package/dist/types/providers/layers/store.d.ts +1 -1
- package/dist/types/providers/layers/types.d.ts +13 -1
- package/dist/types/providers/map/provider.d.ts +2 -2
- package/dist/types/providers/map/store.d.ts +2 -2
- package/dist/types/providers/map/types.d.ts +6 -4
- package/dist/types/providers/sources/store.d.ts +3 -2
- package/dist/types/providers/sources/types.d.ts +46 -5
- package/dist/types/types.d.ts +9 -9
- package/dist/types/use-layers.d.ts +4 -0
- package/dist/types/use-legend.d.ts +16 -0
- package/dist/types/use-spatial-filter.d.ts +15 -0
- package/dist/types/utils/mapping-meridian.d.ts +15 -0
- package/dist/types/utils/sort-layers.d.ts +2 -0
- package/dist/types/zoom-controls.d.ts +1 -1
- package/package.json +23 -17
- package/dist/types/use-get-layers.d.ts +0 -4
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/lasso-tools.tsx","../../../node_modules/.pnpm/@turf+helpers@7.1.0/node_modules/@turf/helpers/dist/esm/index.js","../../../node_modules/.pnpm/@turf+meta@7.1.0/node_modules/@turf/meta/dist/esm/index.js","../../../node_modules/.pnpm/@turf+area@7.1.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.1.0/node_modules/@turf/line-intersect/dist/esm/index.js","../../../node_modules/.pnpm/@turf+centroid@7.1.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/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-get-layers.ts","../src/map.tsx","../src/providers/sources/const.ts","../src/providers/sources/store.ts","../src/use-map-screenshot.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/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}\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 useLayers = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const _props = _layer.props ?? {}\n\n const props = layer.props ?? {}\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._props,\n ...props,\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 type { MapViewState } from '@deck.gl/core'\nimport type {\n CommonStore,\n MapProviderProps,\n MapStateStore,\n MapStore,\n ViewStateStore,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from 'src/types'\n\nconst createMapStore = (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 MapStore['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<MapStore, [], [], MapStore>\n}\n\nconst createViewStateStore = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.viewState\n return acc\n },\n {} as ViewStateStore['viewStates'],\n )\n\n return ((set) => ({\n viewStates: defaultProps,\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<ViewStateStore, [], [], ViewStateStore>\n}\n\nconst createCommonStore = ((_, 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<MapStateStore, [], [], CommonStore>\n\nexport const createMapStateStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStateStore>()((...args) => {\n return {\n ...createMapStore(initProps)(...args),\n ...createViewStateStore(initProps)(...args),\n ...createCommonStore(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStateStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStateStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStateStore>>(\n {} as StoreApi<MapStateStore>,\n)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStateStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapState<T>(selector: (state: MapStateStore) => T): T {\n const store = useContext(MapContext)\n if (!store) throw new Error('Missing Map.Provider in the tree')\n return useStore(store, selector)\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { 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'\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 },\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 (!store) throw new Error('Missing Map.Provider in the tree')\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) {\n const ModeClass = data.mode\n const instance = new ModeClass() as LassoToolsState['modeInstance']\n setModeInstance(mapId, instance)\n }\n }, [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 {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayers } from '../../providers/layers/store'\nimport { useMapState } 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} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { Feature, FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { DataFilterExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\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 = useLayers((state) => state.setLayer)\n const addLayers = useMapState((state) => state.addLayers)\n const removeLayers = useMapState((state) => state.removeLayers)\n\n const [data, setData] = useState<FeatureCollection>(() => getEmptyData())\n\n const maskValues = useMemo(() => {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\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 return children\n}\n\nfunction getEmptyData(): FeatureCollection {\n return {\n type: 'FeatureCollection',\n features: [],\n }\n}\n\nLassoTools.Controls = LassoToolsControls\n","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 0)\n return angle > 180 ? angle - 360 : angle;\n return angle < -180 ? angle + 360 : angle;\n}\nfunction radiansToDegrees(radians) {\n const degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.js\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null)\n 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)\n 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\")\n multiFeatureIndex++;\n }\n if (geomType === \"LineString\")\n 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\")\n multiFeatureIndex++;\n if (geomType === \"Polygon\")\n geometryIndex++;\n }\n if (geomType === \"Polygon\")\n 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)\n 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)\n 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\n 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)\n return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\")\n 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)\n throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null)\n 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))\n 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)\n 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)\n 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)\n 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))\n 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)\n 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)\n coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0)\n 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)\n 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 = false } = options;\n let features = [];\n if (line1.type === \"FeatureCollection\")\n features = features.concat(line1.features);\n else if (line1.type === \"Feature\")\n 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\")\n 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._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 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 { 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'\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 },\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 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 setEnable: (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 (!store) throw new Error('Missing Map.Provider 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 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 _setModeSelected(mapId, mode),\n [_setModeSelected, mapId],\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnable)\n\n const setEnable = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\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 setEnable(enabled)\n },\n [setEnable],\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 setEnable,\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 setEnable,\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 setEnable(true)\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnable])\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 setEnable,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect } from 'react'\nimport { useLayers } from '../../providers/layers/store'\nimport { useMapState } 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'\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 = useLayers((state) => state.setLayer)\n const addLayers = useMapState((state) => state.addLayers)\n const removeLayers = useMapState((state) => state.removeLayers)\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 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 { useLayers } from './providers/layers/store'\nimport { useMapState } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useGetLayers({ id }: { id: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapState((state) => state.maps[id]!)\n const layers = useLayers((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 { useCallback, useMemo } 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 { useMapState } from './providers/map/provider'\nimport { useGetLayers } from './use-get-layers'\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const { basemap, instanceRef, overlayRef } = useMapState(\n (state) => state.maps[id]!,\n )\n const viewState = useMapState((state) => state.viewStates[id])\n const setViewState = useMapState((state) => state.setViewState)\n const setLoad = useMapState((state) => state.setLoad)\n const setLayersLoad = useMapState((state) => state.setLayersLoad)\n\n const layers = useGetLayers({ id })\n const computedLayers = useMemo(() => {\n return layers.sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n },\n [id, onLoad, setLoad],\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 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 />\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 { SourceStore } from './types'\nimport { ApiBaseUrl, clientID } from './const'\n\nexport const useSource = 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 { apiBaseUrl = ApiBaseUrl, clientId = clientID, ...props } = source\n\n const _source = sources[id]! ?? {\n apiBaseUrl,\n clientId,\n }\n\n sources[id] = {\n ..._source,\n ...props,\n }\n\n return { sources }\n }),\n}))\n","import { useCallback, useState } from 'react'\nimport { useMapState } 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 = useMapState((state) => state.maps[mapId]?.basemap)!\n const deckInstance = useMapState((state) => state.getDeckInstance(mapId))!\n const overlayInstance = useMapState((state) =>\n state.getOverlayInstance(mapId),\n )\n\n const areLayersLoaded = useMapState(\n (state) => state.maps[mapId]?.areLayersLoaded,\n )!\n const isLoaded = useMapState((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 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 }, [deckInstance, isGmaps, overlayInstance])\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","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 { ZoomControl } from './types'\nimport { useMapState } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, id }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapState(\n (state) => state.viewStates[id]!,\n )\n const isLoaded = useMapState((state) => state.maps[id]!.areLayersLoaded)\n\n const setZoom = useMapState((state) => state.setZoom)\n const flyTo = useMapState((state) => state.flyTo)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(id, zoom), [id, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(id, viewState),\n [flyTo, id],\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","DEFAULT_LASSO_TOOLS_MODES","polygon","value","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayers","create","set","setLayer","layer","_layer","_props","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapStore","initProps","defaultProps","reduce","acc","curr","areLayersLoaded","current","get","maps","setBasemap","setLoad","setLayersLoad","getOverlayInstance","store","getDeckInstance","deck","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createViewStateStore","viewStates","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonStore","_","fitBounds","bounds","options","viewport","newViewState","boundsOptions","viewStateOptions","flyTo","target","finalViewState","createMapStateStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapState","selector","useContext","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","Object","handleModeSelected","useCallback","EXTENSION_FILTER","DataFilterExtension","filterSize","LassoTools","defaultType","setData","getEmptyData","maskValues","autoIncrement","useRef","length","handleCancelEdit","feature","crypto","randomUUID","geometry","isEditing","selectedFeatureIndexes","maskFeatureCollection","value_0","maskVisible","maskIds","featureIds","extensions","getFilterValue","f","Number","filterRange","updateTriggers","onClick","push","GeoJsonLayer","Controls","earthRadius","geom","feat","coordinates","isNumber","featureCollection","fc","num","coordEach","geojson","callback","excludeWrapCoord","j","k","stopG","coords","geometryMaybeCollection","wrapShrink","coordIndex","isGeometryCollection","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","geomEach","g","featureProperties","featureBBox","featureId","geomReduce","initialValue","previousValue","currentGeometry","area","calculateArea","total","polygonArea","ringArea","FACTOR","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","intersections","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","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","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","getMeasurementToolsLayer","textOptions","_distance","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","setEnable","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setModeSelected","state_6","_setVisibility","enabled_0","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","useGetLayers","layersMap","layerId","MapComponent","computedLayers","sort","order","Infinity","handleAfterRender","context","onAfterRender","ApiBaseUrl","clientID","useSource","sources","setSource","apiBaseUrl","clientId","_source","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","deckInstance","overlayInstance","_takeScreenshot","canvas","createElement","width","height","getContext","_overlayInstance","getRenderingType","html2canvas","getDiv","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","keys","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","header","body","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[10,16,17,18,19,20,21]}
|
|
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]}
|