@carto/ps-react-maps 3.0.0-canary.1 → 3.0.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1226 -854
- package/dist/index.js.map +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 +20 -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/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 +3 -1
- package/dist/types/types.d.ts +5 -5
- package/dist/types/{use-get-layers.d.ts → use-layers.d.ts} +1 -1
- package/dist/types/use-legend.d.ts +16 -0
- package/dist/types/utils/mapping-meridian.d.ts +15 -0
- package/dist/types/utils/sort-layers.d.ts +2 -0
- package/package.json +9 -5
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/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-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/use-legend.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/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}\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 },\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 'src/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] = new WebMercatorViewport(curr.viewState)\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()\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 (!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 {\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 (!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 { 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} 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 = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((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'\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 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 (!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.setEnabled)\n\n const setEnabled = 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 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 setEnabled(true)\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'\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\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 { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ id }: { id: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[id]!)\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 type { Layer } from '../providers/layers/types'\n\nexport function sortLayers(layers: Layer[]) {\n return layers.sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\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 { useMapStore } from './providers/map/provider'\nimport { useLayers } from './use-layers'\nimport { sortLayers } from './utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\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 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({ 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 (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 // 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 { Source, SourceStore } from './types'\nimport { ApiBaseUrl, clientID } from './const'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\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 let widgets: Source['widgets'] = undefined\n\n if (newSource.type === 'query') {\n widgets = new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n })\n }\n if (newSource.type === 'table') {\n widgets = new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n })\n }\n if (newSource.type === 'tileset') {\n widgets = new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n }\n // NOTE: support other future types of sources like raster and boundary when implemented in carto-api-client\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","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,\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['categories', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getCategories(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['features', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getFeatures(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['formula', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getFormula(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['histogram', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getHistogram(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['range', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getRange(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['scatter', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getScatter(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['table', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getTable(widgetProps),\n enabled: !!widgetModel,\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,\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: ['time-series', sourceId, accessToken, widgetProps],\n queryFn: () => widgetModel?.getTimeSeries(widgetProps),\n enabled: !!widgetModel,\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 { 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","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 const props = layer.props!\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: props.id,\n legend: layer.legend?.variables as T,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: props?.opacity ?? 1,\n opacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: 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, id }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[id]!,\n )\n const isLoaded = useMapStore((state) => state.maps[id]!.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(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","useLayerStore","create","set","setLayer","layer","_layer","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","WebMercatorViewport","updateViewPort","vp","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","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","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","useLayers","layersMap","layerId","sortLayers","sort","order","Infinity","MapComponent","computedLayers","handleAfterRender","context","onAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","WidgetQuerySource","accessToken","sqlQuery","WidgetTableSource","tableName","WidgetTilesetSource","tileFormat","TileFormat","BINARY","spatialDataType","useSource","useWidgetModel","sourceId","widgetModel","useCategories","widgetProps","useQueryProps","getCategories","queryKey","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","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","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","mappingLegendMeridian","collapsible","helperText","variables","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[10,16,17,18,19,20,21]}
|