@carto/ps-react-maps 4.0.2 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/providers/map/const.ts","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../src/basemap-controls.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/use-event-manager.ts","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../services/dist/index.js","../src/providers/sources/store.ts","../src/models/use-filters-merged.tsx","../src/models/use-widget-model.ts","../src/models/utils/get-relevant-headers.tsx","../src/models/use-common-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/providers/sources/const.ts","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx","../src/stats/get-query-stats.ts","../src/stats/get-table-stats.ts","../src/stats/use-stats.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={false}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n controller,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n const _controller: ControllerOptions = useMemo(() => {\n if (typeof controller === 'boolean') {\n return {\n dragPan: controller,\n doubleClickZoom: controller,\n scrollZoom: controller,\n }\n }\n const _controller = controller as ControllerOptions\n\n return {\n dragPan: _controller?.dragPan ?? true,\n doubleClickZoom: _controller?.doubleClickZoom ?? true,\n scrollZoom: _controller?.scrollZoom ?? true,\n }\n }, [controller])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n id={id}\n mapTypeId={basemap}\n disableDefaultUI={true}\n {..._gmapsProps}\n center={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n zoom={(rest.initialViewState?.zoom ?? 0) + 1}\n tilt={rest.initialViewState?.pitch}\n heading={rest.initialViewState?.bearing}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n scrollwheel={\n typeof _controller.scrollZoom === 'boolean'\n ? _controller.scrollZoom\n : !!_controller.scrollZoom\n }\n gestureHandling={!_controller.dragPan ? 'none' : 'greedy'}\n disableDoubleClickZoom={!_controller.doubleClickZoom}\n >\n <MapReferences id={id} overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n id,\n overlayRef,\n}: {\n id: DeckGLComponentProps['id']\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap(id)!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n return () => {\n handleLoad({\n type: 'load',\n value: false,\n })\n handleLoad({\n type: 'deckgl',\n value: false,\n })\n }\n }, [handleLoad])\n\n useEffect(() => {\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n onLoad?.(isAllLoaded)\n }, [isLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","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","'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 { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n SpatialFilterSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { DeckGLComponentProps, InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport deepmerge from 'deepmerge'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n controller: curr.controller ?? true,\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n getBounds: (id, bounds, options) => {\n const store = get()\n if (!store.maps?.[id]?.isLoaded) return\n\n const viewState = store.getViewState(id)\n if (!viewState) return\n\n const viewport = new WebMercatorViewport(viewState)\n\n const newBounds = viewport.fitBounds(bounds, options?.boundsOptions)\n\n return {\n latitude: newBounds.latitude,\n longitude: newBounds.longitude,\n zoom: newBounds.zoom,\n ...options?.viewStateOptions,\n }\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 setController: (id, controller) =>\n set((state) => {\n const currentController = state.maps[id]?.controller ?? {}\n\n const _currentController =\n typeof currentController === 'boolean' ? {} : currentController\n\n const newController =\n !controller || typeof controller === 'boolean'\n ? controller\n : deepmerge<DeckGLComponentProps['controller']>(\n _currentController,\n controller,\n )\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n controller: newController,\n },\n },\n }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const initialViewState = curr.initialViewState ?? curr.viewState\n acc.initialViewStates[curr.id] = initialViewState\n acc.viewStates[curr.id] = initialViewState\n acc.viewports[curr.id] = null\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n initialViewStates: {} as ViewStateSlice['initialViewStates'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n initialViewStates: defaultProps.initialViewStates,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id],\n ...viewState,\n },\n },\n })),\n setInitialViewState: (id, viewState) =>\n set((state) => ({\n initialViewStates: {\n ...state.initialViewStates,\n [id]: viewState,\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 newViewState = store.getBounds(id, bounds, options)\n\n if (!newViewState) return\n\n store.setViewState(id, newViewState)\n store.updateViewPort(id)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\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 store.updateViewPort(id)\n },\n loadInitialViewState: (id, initialViewState) => {\n const store = get()\n store.setInitialViewState(id, initialViewState)\n store.flyTo(id, initialViewState, {\n viewStateOptions: { transitionDuration: 0 },\n })\n },\n resetViewState: (id: string) => {\n const store = get()\n const initialViewStates = store.initialViewStates\n if (!initialViewStates[id]) return\n store.flyTo(id, initialViewStates[id])\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nconst createSpatialFilterSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.spatialFilter ?? {} // Initialize every mapId to an empty record\n return acc\n },\n {} as SpatialFilterSlice['spatialFilter'],\n )\n return ((set) => ({\n spatialFilter: defaultProps,\n setSpatialFilter: (mapId, id, value) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n\n spatialFilter[mapId] = {\n ...spatialFilter[mapId],\n [id]: value,\n }\n\n return {\n spatialFilter,\n }\n })\n },\n removeSpatialFilter: (mapId, id) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n if (spatialFilter[mapId]) {\n delete spatialFilter[mapId][id]\n }\n return {\n spatialFilter,\n }\n })\n },\n })) as StateCreator<SpatialFilterSlice, [], [], SpatialFilterSlice>\n}\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createSpatialFilterSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","import type { BasemapsControlsProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function BasemapsControls({ children, mapId }: BasemapsControlsProps) {\n const { basemap } = useMapStore((state) => state.maps[mapId]!)\n const setBasemap = useMapStore((state) => state.setBasemap)\n\n return children({\n basemap,\n setBasemap: useCallback(\n (basemap: NonNullable<MapComponentProps['basemap']>) =>\n setBasemap(mapId, basemap),\n [setBasemap, mapId],\n ),\n })\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n const legend =\n !!_layer.legend || !!layer.legend\n ? {\n ..._layer.legend,\n ...layer.legend,\n }\n : undefined\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n updateTriggers: {\n ...(_layer.props.updateTriggers ?? {}),\n ...(layer.props?.updateTriggers ?? {}),\n },\n extensions,\n },\n legend,\n }\n\n return { layers }\n }),\n removeLayer: (id) =>\n set((state) => {\n const layers = { ...state.layers }\n delete layers[id]\n return { layers }\n }),\n}))\n","import { useEffect } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport {\n type RecognizerTuple,\n EventManager,\n Pan,\n InputDirection,\n Pinch,\n Tap,\n} from 'mjolnir.js'\nimport type { Layer } from './providers/layers/types'\nimport { useLayerStore } from './providers/layers/store'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport const EVENT_HANDLERS = [\n 'click',\n 'keyup',\n 'panstart',\n 'panmove',\n 'panend',\n 'pointermove',\n] as const\n\nconst RECOGNIZERS = {\n multipan: [\n Pan,\n { threshold: 10, direction: InputDirection.Vertical, pointers: 2 },\n ],\n pinch: [Pinch, {}, null, ['multipan']],\n click: [Tap, { event: 'click' }, null, ['dblclick']],\n dblclick: [Tap, { event: 'dblclick', taps: 2 }],\n pan: [Pan, { threshold: 1 }, ['pinch'], ['multipan']],\n} as const\n\nexport function useEventManager({\n mapId,\n layerId,\n}: {\n mapId: MapComponentProps['id']\n layerId: NonNullable<Layer['props']['id']>\n}) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n useEffect(() => {\n let eventManager: EventManager | null = null\n\n if (isGmaps && isLoaded) {\n const overlayInstance = getOverlayInstance(mapId) as google.maps.Map\n eventManager = new EventManager(overlayInstance.getDiv(), {\n recognizers: Object.keys(RECOGNIZERS).map((eventName: string) => {\n const [\n RecognizerConstructor,\n defaultOptions,\n recognizeWith,\n requestFailure,\n ] = RECOGNIZERS[eventName as keyof typeof RECOGNIZERS]\n\n const options = { ...defaultOptions, event: eventName }\n\n return {\n recognizer: new RecognizerConstructor(options),\n recognizeWith,\n requestFailure,\n } as RecognizerTuple\n }),\n })\n }\n\n setLayer(layerId, {\n props: {\n eventManager,\n } as LayerProps & {\n eventManager: EventManager | null\n },\n })\n }, [getOverlayInstance, isGmaps, isLoaded, layerId, mapId, setLayer])\n}\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\nimport { EVENT_HANDLERS } from '../use-event-manager'\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_HANDLERS) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_HANDLERS) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps & {}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n ...value.properties,\n visible: value.properties.visible,\n label: value.properties.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback(\n (id, data) => setValue(mapId, id, data),\n [mapId, setValue],\n ),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length, { type LengthUnits } 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 CONVERSIONS_UNITS_AREA,\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\nimport type { AreaUnits } from 'convert-units/definitions/area'\nimport area from 'convert-units/definitions/area'\n\nconst convert = configureMeasurements({\n length,\n})\n\nconst convertArea = configureMeasurements({\n area,\n})\n\nfunction validateUnitForAreaConversion(\n unit: string,\n): asserts unit is keyof typeof CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA {\n if (!(unit in CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)) {\n const validUnits = Object.keys(CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)\n throw new Error(\n `Unit \"${unit}\" cannot be converted to area. Valid units are: ${validUnits.join(', ')}`,\n )\n }\n}\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n dimension: 'length' | 'area',\n) {\n switch (dimension) {\n case 'length': {\n const unitFrom: LengthUnits = CONVERSIONS_UNITS[MapMeasurementUnit.meter]\n const unitTo: LengthUnits = CONVERSIONS_UNITS[unit]\n\n return convert(distance).from(unitFrom).to(unitTo)\n }\n case 'area': {\n validateUnitForAreaConversion(unit)\n const unitFrom: AreaUnits =\n CONVERSIONS_UNITS_AREA[\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[MapMeasurementUnit.meter]\n ]\n const unitTo: AreaUnits =\n CONVERSIONS_UNITS_AREA[CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[unit]]\n\n return convertArea(distance).from(unitFrom).to(unitTo)\n }\n default: {\n throw new Error(\n `Invalid dimension: ${dimension as string}, valid dimensions are: length, area`,\n )\n }\n }\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, customFormatter, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n dimension = 'length',\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n dimension?: 'length' | 'area'\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, dimension)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit, dimension)\n }\n\n let result = `${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 if (dimension === 'area') {\n result += '2'\n }\n\n if (customFormatter) {\n return customFormatter(result)\n }\n\n return result\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'\nimport type { TentativeFeature } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\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 const latestClickSequence = this.getClickSequence()\n const polygonCoordinates = [...latestClickSequence, latestClickSequence[0]!]\n this.area = area({\n type: 'Polygon',\n coordinates: [polygonCoordinates],\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 updateTooltip(\n polygon: Polygon | TentativeFeature,\n props: ModeProps<FeatureCollection>,\n ): void {\n const position = centroid(polygon) as FeatureOf<Point>\n this.area = area(polygon)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\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 this.updateTooltip(tentativeGuide, props)\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 // Update the tooltip with the final area\n this.updateTooltip(polygonToAdd, props)\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 getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n dimension: 'area',\n })\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n dimension: 'area',\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'\nimport type { AreaUnits } from 'convert-units/definitions/area'\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 MapMeasurementUnitArea = {\n squareMeter: 'squareMeter',\n squareKilometer: 'squareKilometer',\n squareMile: 'squareMile',\n squareFeet: 'squareFeet',\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 type MapMeasurementUnitAreaValue = Pick<\n typeof MapMeasurementUnit,\n 'kilometer' | 'meter' | 'mile' | 'feet'\n>\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 CONVERSIONS_UNITS_AREA: Record<\n ValueOf<typeof MapMeasurementUnitArea>,\n AreaUnits\n> = {\n [MapMeasurementUnitArea.squareMeter]: 'm2',\n [MapMeasurementUnitArea.squareKilometer]: 'km2',\n [MapMeasurementUnitArea.squareMile]: 'mi2',\n [MapMeasurementUnitArea.squareFeet]: 'ft2',\n} as const\n\nexport const CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA: Record<\n keyof MapMeasurementUnitAreaValue,\n ValueOf<typeof MapMeasurementUnitArea>\n> = {\n [MapMeasurementUnit.meter]: MapMeasurementUnitArea.squareMeter,\n [MapMeasurementUnit.kilometer]: MapMeasurementUnitArea.squareKilometer,\n [MapMeasurementUnit.mile]: MapMeasurementUnitArea.squareMile,\n [MapMeasurementUnit.feet]: MapMeasurementUnitArea.squareFeet,\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const previousEnabled = useRef(enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_LASSO_TOOLS_LAYER_ID })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n if (enabled === previousEnabled.current && !previousEnabled.current) return\n\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (!currentLayer) return\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n\n previousEnabled.current = enabled\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps & {}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps,\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 previousEnabled = useRef(enabled)\n const setLayer = useLayerStore((state) => state.setLayer)\n const setController = useMapStore((state) => state.setController)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_MEASURE_LAYER_ID })\n\n useEffect(() => {\n const previousController = getDeckInstance(mapId)?.props.controller\n\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n\n setController(mapId, {\n doubleClickZoom: false,\n })\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n setController(mapId, previousController)\n }\n }, [\n addLayers,\n clearLayerOnStart,\n mapId,\n removeLayers,\n enabled,\n getDeckInstance,\n setController,\n ])\n\n useEffect(() => {\n if (enabled === previousEnabled.current && !previousEnabled.current) return\n\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (!currentLayer) return\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n\n previousEnabled.current = enabled\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps?.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const basemap = useMapStore((state) => state.maps[id]!.basemap)\n const instanceRef = useMapStore((state) => state.maps[id]!.instanceRef)\n const overlayRef = useMapStore((state) => state.maps[id]!.overlayRef)\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const controller = useMapStore((state) => state.maps[id]!.controller)\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n controller={controller}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import R from \"cross-fetch\";\nconst h = \"https://gcp-us-east1.api.carto.com\", j = \"v3\", J = \"ps\", g = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n};\nfunction I(e, n) {\n return Array.isArray(n) ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : n == null || n === \"\" ? \"\" : typeof n == \"object\" ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : `${e}=${encodeURIComponent(n)}`;\n}\nfunction q({\n params: e,\n url: n\n}) {\n if (!e)\n return n;\n const t = Object.entries(e).map(\n ([a, s]) => I(a, s)\n );\n return `${n}?${t.filter(Boolean).join(\"&\")}`;\n}\nfunction w(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar A, V;\nfunction C() {\n if (V) return A;\n V = 1;\n var e = function(o) {\n return n(o) && !t(o);\n };\n function n(r) {\n return !!r && typeof r == \"object\";\n }\n function t(r) {\n var o = Object.prototype.toString.call(r);\n return o === \"[object RegExp]\" || o === \"[object Date]\" || l(r);\n }\n var a = typeof Symbol == \"function\" && Symbol.for, s = a ? Symbol.for(\"react.element\") : 60103;\n function l(r) {\n return r.$$typeof === s;\n }\n function u(r) {\n return Array.isArray(r) ? [] : {};\n }\n function i(r, o) {\n return o.clone !== !1 && o.isMergeableObject(r) ? d(u(r), r, o) : r;\n }\n function y(r, o, c) {\n return r.concat(o).map(function(m) {\n return i(m, c);\n });\n }\n function p(r, o) {\n if (!o.customMerge)\n return d;\n var c = o.customMerge(r);\n return typeof c == \"function\" ? c : d;\n }\n function b(r) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(r).filter(function(o) {\n return Object.propertyIsEnumerable.call(r, o);\n }) : [];\n }\n function f(r) {\n return Object.keys(r).concat(b(r));\n }\n function _(r, o) {\n try {\n return o in r;\n } catch {\n return !1;\n }\n }\n function O(r, o) {\n return _(r, o) && !(Object.hasOwnProperty.call(r, o) && Object.propertyIsEnumerable.call(r, o));\n }\n function E(r, o, c) {\n var m = {};\n return c.isMergeableObject(r) && f(r).forEach(function(T) {\n m[T] = i(r[T], c);\n }), f(o).forEach(function(T) {\n O(r, T) || (_(r, T) && c.isMergeableObject(o[T]) ? m[T] = p(T, c)(r[T], o[T], c) : m[T] = i(o[T], c));\n }), m;\n }\n function d(r, o, c) {\n c = c || {}, c.arrayMerge = c.arrayMerge || y, c.isMergeableObject = c.isMergeableObject || e, c.cloneUnlessOtherwiseSpecified = i;\n var m = Array.isArray(o), T = Array.isArray(r), P = m === T;\n return P ? m ? c.arrayMerge(r, o, c) : E(r, o, c) : i(o, c);\n }\n d.all = function(o, c) {\n if (!Array.isArray(o))\n throw new Error(\"first argument should be an array\");\n return o.reduce(function(m, T) {\n return d(m, T, c);\n }, {});\n };\n var U = d;\n return A = U, A;\n}\nvar L = C();\nconst M = /* @__PURE__ */ w(L);\nfunction k(e) {\n return M(\n {\n method: g.get,\n headers: {\n Accept: \"application/json\"\n }\n },\n e\n );\n}\nfunction S(e, n) {\n return M(\n {\n method: g.post,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(n)\n },\n e\n );\n}\nconst B = {\n GET: k,\n POST: S,\n PUT: S,\n PATCH: S,\n DELETE: k\n};\nfunction x({\n body: e,\n accessToken: n,\n method: t,\n ...a\n}) {\n let s = n;\n return s && !s.includes(\"Bearer\") && (s = \"Bearer \" + s), B[t](\n M(\n {\n method: t,\n headers: { ...!!s && { authorization: s } }\n },\n a\n ),\n e\n );\n}\nconst D = 6144;\nasync function $({\n signal: e,\n body: n,\n accessToken: t,\n credentials: a,\n method: s = g.get,\n params: l,\n url: u,\n requestOptions: { getMaxUrlLength: i } = {\n getMaxUrlLength: D\n },\n ...y\n}) {\n let p = q({ url: u, params: l }), b = n, f = s;\n s === g.get && p.length > i && (b = l, f = g.post, p = u);\n const _ = x({\n body: b,\n accessToken: t ?? a?.accessToken,\n method: f,\n ...y\n });\n e && (_.signal = e);\n const O = await R(p, _);\n if (!O.ok) {\n const d = await O.text();\n throw new Error(d);\n }\n return O.status === 204 ? Promise.resolve() : await O.json();\n}\nconst v = {\n running: \"running\",\n pending: \"pending\",\n failure: \"failure\",\n cancelled: \"cancelled\",\n success: \"success\"\n};\nfunction G({\n accessToken: e,\n connection: n,\n credentials: t,\n sources: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.post,\n body: {\n sources: a\n },\n ...i\n });\n}\nasync function Q({\n accessToken: e,\n connection: n,\n credentials: t,\n query: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.post,\n body: {\n query: a.trim(),\n metadata: s\n },\n ...y\n });\n}\nasync function H({\n url: e,\n accessToken: n,\n credentials: t,\n params: a = {},\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = n ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/lds/${e}`;\n return $({\n signal: u,\n accessToken: y,\n url: f,\n method: g.get,\n params: a,\n ...i\n });\n}\nasync function z({\n accessToken: e,\n connection: n,\n query: t,\n credentials: a,\n params: s = {},\n queryParameters: l,\n method: u = g.get,\n baseUrl: i = h,\n apiVersion: y = j,\n fetcherOptions: { signal: p, ...b } = {}\n}) {\n const f = e ?? a?.accessToken, _ = i ?? a?.apiBaseUrl, O = y ?? a?.apiVersion, E = `${_}/${O}/sql/${n}/query`, d = N(t), U = u !== g.get ? \"body\" : \"params\";\n return $({\n signal: p,\n accessToken: f,\n url: E,\n method: u,\n [U]: {\n q: d,\n ...s,\n queryParameters: l\n },\n ...b\n });\n}\nfunction N(e) {\n return e && e.replace(\n /'([^'\\\\]*(\\\\.[^'\\\\]*)*)'|\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"/g,\n (n) => n\n ).replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--.*$/gm, \"\").replace(/\\s+/g, \" \").trim();\n}\nasync function K({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function X({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/job/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function Y({\n accessToken: e,\n connection: n,\n credentials: t,\n metadataFilter: a = void 0,\n createdSince: s = void 0,\n userId: l = void 0,\n baseUrl: u = h,\n apiVersion: i = j,\n fetcherOptions: { signal: y, ...p } = {}\n}) {\n const b = e ?? t?.accessToken, f = u ?? t?.apiBaseUrl, _ = i ?? t?.apiVersion, O = `${f}/${_}/sql/${n}/jobs`;\n return $({\n accessToken: b,\n signal: y,\n url: O,\n method: g.get,\n params: {\n user_id: l,\n created_since: s,\n metadata_filter: a\n },\n ...p\n });\n}\nfunction W({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job/${a}`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.patch,\n body: {\n metadata: s\n },\n ...y\n });\n}\nexport {\n h as DEFAULT_CARTO_API_URL,\n j as DEFAULT_CARTO_API_VERSION,\n J as DEFAULT_CLIENT_ID,\n g as RequestMethods,\n G as createExport,\n Q as createJob,\n $ as executeFetch,\n H as executeLDS,\n z as executeSQL,\n K as getExport,\n X as getJob,\n v as jobStatus,\n Y as listJobs,\n W as updateJob\n};\n//# sourceMappingURL=index.js.map\n","import { create } from 'zustand'\nimport type {\n QuerySource,\n RasterSource,\n TableSource,\n TilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport {\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n DEFAULT_CLIENT_ID,\n} from '@carto/ps-services'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n type Filters,\n FilterType,\n type SpatialDataType,\n} from '@carto/api-client'\nimport { useMemo } from 'react'\nimport { devtools } from 'zustand/middleware'\n\nexport const useSourceStore = create<SourceStore>()(\n devtools((set, get) => ({\n sources: {},\n filters: {},\n setSource: (id, source) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n const previousSource = sources[id]\n const newSource = {\n apiBaseUrl: DEFAULT_CARTO_API_URL,\n clientId: DEFAULT_CLIENT_ID,\n apiVersion: DEFAULT_CARTO_API_VERSION,\n ...previousSource,\n ...source,\n } as Source\n\n newSource.widgets = getWidgetSource({\n source: newSource,\n })\n\n sources[id] = newSource\n\n return { sources }\n },\n undefined,\n 'setSource',\n ),\n removeSource: (id) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n delete sources[id]\n return { sources }\n },\n undefined,\n 'removeSource',\n ),\n setFilters: (id, newFilters) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n\n const filters = newFilters.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, currentFilters)\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'setFilters',\n ),\n removeFilters: (id, column, owner) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n if (!currentFilters) {\n return state\n }\n\n let filters = {}\n if (column) {\n filters = removeFilter(currentFilters, { column, owner })\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'removeFilters',\n ),\n invalidateSourcesCache: (ids, { timeout = 500, maxAge = 10 } = {}) => {\n ids.forEach((id) => {\n get().setSource(id, {\n headers: {\n 'Cache-Control': `no-cache, max-age=${maxAge}`,\n },\n })\n })\n\n setTimeout(() => {\n ids.forEach((id) => {\n const source = get().sources[id]\n if (source) {\n delete source.headers\n get().setSource(id, source)\n }\n })\n }, timeout)\n },\n })),\n)\n\n/**\n * Shortcut to grabbing the source from the sources store object\n * @param id - the id of the source you want to grab\n * @returns source object without filters\n */\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\n/**\n * Shortcut to grabbing the filters from the filters store object\n * @param id - the id of the source the filters are applied to\n * @returns filters object as used in the `@carto/api-client` methods calls\n */\nexport function useFilters(id: string) {\n return useSourceStore((state) => state.filters[id])\n}\n\n/**\n * Returns a source together with its filters, pulling from the separate `sources` and `filters` state objects\n * @param id - the id of the source\n * @returns source object as used in `@carto/api-client`\n */\nexport function useSourceWithFilters(id: string) {\n const source = useSourceStore((state) => state.sources[id])\n const filters = useSourceStore((state) => state.filters[id])\n\n return useMemo(() => {\n if (!source) {\n return undefined\n }\n return {\n ...source,\n filters: filters ?? {},\n }\n }, [source, filters])\n}\n\nexport function getFilterValues(\n filters: Filters | undefined,\n { column, type }: { column: string; type: FilterType },\n) {\n return filters?.[column]?.[type]?.values ?? []\n}\n\nfunction getSpatialDataFallback(source: Source) {\n const [, fallback] = source.type.split('+', 2)\n return {\n spatialDataType: (source.spatialDataType ??\n fallback ??\n 'geo') as SpatialDataType,\n spatialDataColumn: source.spatialDataColumn ?? fallback ?? 'geom',\n }\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const { spatialDataType, spatialDataColumn } = getSpatialDataFallback(source)\n\n const options = {\n query: () => {\n const newSource = source as Source & QuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n table: () => {\n const newSource = source as Source & TableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n tileset: () => {\n const newSource = source as Source & TilesetSource\n\n if (!newSource.spatialDataBounds) {\n return null\n }\n\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType,\n spatialDataColumn,\n spatialDataBounds: newSource.spatialDataBounds,\n })\n },\n raster: () => {\n const newSource = source as Source & RasterSource\n\n if (!newSource.rasterMetadata || !newSource.spatialDataBounds) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n spatialDataColumn: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n spatialDataBounds: newSource.spatialDataBounds,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useFilters } from '../providers/sources/store'\nimport { useMemo } from 'react'\nimport deepmerge from 'deepmerge'\nimport { addFilter, type AddFilterOptions } from '@carto/api-client'\n\nexport function useFiltersMerged(\n sourceId: string,\n additionalFilter?: AddFilterOptions[],\n) {\n const filters = useFilters(sourceId)\n\n return useMemo(() => {\n if (!additionalFilter?.length) return filters\n const computedFilters = additionalFilter.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, {})\n return deepmerge(filters ?? {}, computedFilters) as typeof filters\n }, [filters, additionalFilter])\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-hooks/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","const RELEVANT_HEADERS = ['authorization', 'cache-control']\n\nexport function getRelevantHeaders(\n headers: Record<string, string> | undefined,\n) {\n if (!headers || typeof headers !== 'object') {\n return ''\n }\n\n const entries = Object.fromEntries(\n Object.entries(headers).filter(([key]) =>\n RELEVANT_HEADERS.includes(key.toLowerCase()),\n ),\n )\n\n return JSON.stringify(entries)\n}\n","import type { ModelProps } from './types'\nimport { useFiltersMerged } from './use-filters-merged'\nimport { useWidgetModel } from './use-widget-model'\nimport { getRelevantHeaders } from './utils/get-relevant-headers'\n\nexport function useCommonModel<TRequestOptions, TResponse>({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n}: Pick<\n ModelProps<TRequestOptions, TResponse>,\n 'accessToken' | 'sourceId' | 'additionalFilter' | 'widgetProps'\n>) {\n const mergedFilters = useFiltersMerged(sourceId, additionalFilter)\n const widgetModel = useWidgetModel(accessToken, sourceId)\n\n const queryKey: unknown[] = [sourceId, widgetProps]\n\n if (\n widgetModel?.props &&\n 'queryParameters' in widgetModel.props &&\n widgetModel.props.queryParameters\n ) {\n queryKey.push(widgetModel.props.queryParameters)\n }\n\n if (mergedFilters) {\n queryKey.push(mergedFilters)\n }\n\n const relevantHeaders = getRelevantHeaders(widgetModel?.props.headers)\n\n if (relevantHeaders) {\n queryKey.push(relevantHeaders)\n }\n\n queryKey.push(accessToken)\n\n return { mergedFilters, widgetModel, queryKey }\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['categories', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getCategories({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['features', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFeatures({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['formula', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFormula({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['histogram', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getHistogram({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['range', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getRange({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['scatter', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getScatter({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['table', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTable({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['timeSeries', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTimeSeries({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","export const clientID = 'ps'\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(\n layersId.map((id) => layers[id]).filter((l): l is Layer => !!l?.legend),\n ).toReversed()\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 onChangeRowCollapse = 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 onChangeRowCollapse,\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 [error, setError] = useState<Error | undefined>(undefined)\n\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n\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 setError(err as Error)\n\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 setError(undefined)\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n error,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/turf'\nimport type { Polygon, Position } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n const staticSpatialFilter = useStaticSpatialFilter({ mapId })\n\n return {\n spatialFilter:\n lassoToolsSpatialFilter ?? staticSpatialFilter ?? viewportSpatialFilter,\n staticSpatialFilter,\n lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n\nexport function useStaticSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}): SpatialFilter | undefined {\n const spatialFilter = useMapStore((state) => state.spatialFilter[mapId])\n\n return useMemo(() => {\n if (!spatialFilter || !Object.keys(spatialFilter).length) return\n\n // Flatten the array to match the expected Position[][][] type\n const coordinates: Position[][][] = Object.values(spatialFilter)\n .filter((value) => value !== null && value !== undefined)\n .flatMap((geom) => {\n // If it's a Polygon, wrap its coordinates in an array to make it compatible with MultiPolygon format\n if (geom.type === 'Polygon') {\n return [geom.coordinates]\n }\n\n // Otherwise, validate or transform `geom` to ensure it matches the expected format\n return geom.coordinates\n })\n\n return multiPolygon(coordinates).geometry\n }, [spatialFilter])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n const resetViewState = useMapStore((state) => state.resetViewState)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n resetViewState: useCallback(\n () => resetViewState(mapId),\n [resetViewState, mapId],\n ),\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetQueryStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getQueryStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n query,\n attribute,\n fetcherOptions: { signal, ...other } = {},\n queryParameters,\n params,\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetQueryStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { q: query, ...queryParameters, ...params },\n ...other,\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetTableStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getTableStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n table,\n attribute,\n params,\n fetcherOptions: { signal, ...other } = {},\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetTableStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${table}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { ...params },\n ...other,\n })\n}\n","import { vectorTilesetSource } from '@carto/api-client'\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getQueryStats } from './get-query-stats'\nimport { getTableStats } from './get-table-stats'\nimport type { QuerySource, Source } from '../providers/sources/types'\nimport type { Stats, StatsResponse } from './types'\n\nexport function useStats<Attribute extends string | number>({\n source,\n attribute,\n accessToken,\n params,\n fetcherOptions,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: {\n source: Source | undefined\n attribute: Stats['attribute']\n accessToken: Stats['accessToken']\n params?: Stats['params']\n fetcherOptions?: Stats['fetcherOptions']\n useQueryProps?: Omit<\n UseQueryOptions<StatsResponse<Attribute>, Error>,\n 'queryKey' | 'queryFn'\n >\n}) {\n return useQuery<StatsResponse<Attribute>, Error>({\n queryKey: [source, attribute],\n queryFn: () =>\n getQueryFunction<Attribute>({\n source: source!,\n params,\n attribute,\n accessToken: accessToken!,\n fetcherOptions,\n }),\n select(data) {\n return {\n ...data,\n type: data.type.toLowerCase(),\n }\n },\n enabled: !!source && enabled,\n ...useQueryProps,\n })\n}\n\nfunction getQueryFunction<Attribute extends string | number>({\n source,\n params,\n attribute,\n accessToken,\n fetcherOptions,\n}: {\n source: Source\n params?: Stats['params']\n attribute: Stats['attribute']\n accessToken: NonNullable<Stats['accessToken']>\n fetcherOptions?: Stats['fetcherOptions']\n}) {\n if (source.type.startsWith('query')) {\n return getQueryStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n accessToken,\n params,\n query: source.data,\n queryParameters: (source as QuerySource).queryParameters,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('table')) {\n return getTableStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n params,\n accessToken,\n table: source.data,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('tileset')) {\n return getStatsFromTileset<Attribute>({\n source,\n accessToken,\n target: source.data,\n attribute,\n })\n }\n\n throw new Error(`Unsupported source type: ${source.type}`)\n}\n\n// Catch Stats from tileset\n\nasync function getStatsFromTileset<Attribute extends string | number>({\n source,\n accessToken,\n target,\n attribute,\n}: {\n source: Source\n accessToken: string\n target: string\n attribute: string\n}) {\n const tileJson = await vectorTilesetSource({\n connectionName: source.connectionName,\n apiBaseUrl: source.apiBaseUrl,\n accessToken: accessToken,\n clientId: source.clientId,\n tableName: target,\n })\n if (!tileJson?.tilestats?.layers?.[0]?.attributes) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n const tileStatsAttributes = tileJson.tilestats.layers[0].attributes\n const columnStats = tileStatsAttributes.find((p) => p.attribute === attribute)\n\n if (!columnStats) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n return columnStats as StatsResponse<Attribute>\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","filter","_temp","map","_temp2","_layers","t2","t3","value","t4","depthTest","t5","MapReferences","t6","t7","jsx","Map","_temp3","t8","MapProvider","jsxs","DeckGL","$el","document","querySelector","classList","remove","Layer","props","l","default","mapLibre","useMapLibre","useImperativeHandle","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","useEffect","setProps","GoogleMaps","basemap","gmapsProps","undefined","apiKey","APIProviderProps","_gmapsProps","bb0","dragPan","doubleClickZoom","scrollZoom","_controller","_controller_0","mappingGmapsToDeck","newViewState","current","_deck","viewState","_viewState","latitude","longitude","zoom","pitch","bearing","width","height","interactionState","isZooming","handleViewStateChange","initialViewState","lat","lng","t9","t10","t11","t12","t13","t14","props_0","props_1","t15","t16","t17","t18","t19","t20","t21","t22","t23","APIProvider","detail","center","heading","tilt","gmaps","DeckGLComponent","isLoaded","setLoaded","useState","isGmaps","e","index","state","loaded","i","handleLoad","isAllLoaded","every","loaded_0","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","createMapSlice","initProps","defaultProps","reduce","acc","curr","set","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","getDeckInstance","getViewState","getViewports","rect","getViewport","getBounds","bounds","store","newBounds","WebMercatorViewport","fitBounds","boundsOptions","viewStateOptions","addLayers","Set","removeLayers","layer","includes","setController","currentController","newController","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","initialViewStates","viewStates","viewports","updateViewPort","vp","setViewState","setInitialViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","flyTo","finalViewState","loadInitialViewState","resetViewState","createSpatialFilterSlice","spatialFilter","setSpatialFilter","mapId","structuredClone","removeSpatialFilter","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","BasemapsControls","basemap_0","state_0","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","setLayer","_layer","extension","some","equals","push","legend","updateTriggers","removeLayer","EVENT_HANDLERS","RECOGNIZERS","multipan","Pan","threshold","direction","InputDirection","Vertical","pointers","pinch","Pinch","click","Tap","dblclick","taps","pan","useEventManager","layerId","store_0","eventManager","overlayInstance","getDiv","recognizers","eventName","RecognizerConstructor","defaultOptions","recognizeWith","requestFailure","recognizer","store_1","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","useMemo","serialize","label","handleModeSelected","useCallback","getMaskValues","convert","configureMeasurements","convertArea","area","validateUnitForAreaConversion","unit","CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA","validUnits","join","convertMetersTo","distance","dimension","unitFrom","CONVERSIONS_UNITS","MapMeasurementUnit","meter","unitTo","from","to","CONVERSIONS_UNITS_AREA","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","customFormatter","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","result","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","latestClickSequence","polygonCoordinates","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","updateTooltip","centroid","geometry","handlePointerMove","tentativeGuide","getTentativeGuide","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitArea","squareMeter","squareKilometer","squareMile","squareFeet","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","EXCEPTED_LAYER_IDS","LassoTools","defaultType","previousEnabled","useRef","mapLayers","useShallow","mapLayersVisibilityRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","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","ModeClass","enable","MeasurementTools","previousController","l_0","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","__global__","global","__globalThis__","F","globalThis","exports","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","match","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","ctrl","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","error","Response","bodyInit","response","redirectStatuses","status","message","fetch","init","request","xhr","abortXhr","fixUrl","names","ctx","module","h","j","J","post","useSourceStore","devtools","sources","filters","setSource","widgetClient","widgets","destroy","previousSource","newSource","apiBaseUrl","DEFAULT_CARTO_API_URL","clientId","DEFAULT_CLIENT_ID","apiVersion","DEFAULT_CARTO_API_VERSION","getWidgetSource","removeSource","setFilters","newFilters","currentFilters","addFilter","removeFilters","column","owner","removeFilter","invalidateSourcesCache","ids","timeout","maxAge","useSource","useFilters","useSourceWithFilters","getFilterValues","getSpatialDataFallback","fallback","spatialDataType","spatialDataColumn","query","WidgetQuerySource","accessToken","sqlQuery","table","WidgetTableSource","tableName","tileset","spatialDataBounds","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","option","useFiltersMerged","sourceId","additionalFilter","computedFilters","useWidgetModel","widgetModel","RELEVANT_HEADERS","getRelevantHeaders","entries","fromEntries","toLowerCase","JSON","stringify","useCommonModel","widgetProps","mergedFilters","queryKey","queryParameters","relevantHeaders","useCategories","useQueryProps","signal","getCategories","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","clientID","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","toReversed","onChangeVisibility","onChangeRowCollapse","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","setError","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","staticSpatialFilter","useStaticSpatialFilter","viewport","createViewportSpatialFilter","_values","multiPolygon","value_0","flatMap","geom","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","cur","formatter","valueTransformed","columnName","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","ZoomControls","zoom_0","getQueryStats","baseUrl","connection","attribute","fetcherOptions","other","params","statsUrl","executeFetch","RequestMethods","q","getTableStats","useStats","getQueryFunction","select","startsWith","connectionName","getStatsFromTileset","tileJson","vectorTilesetSource","tilestats","attributes","columnStats","p"],"mappings":"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","x_google_ignoreList":[7,37]}
1
+ {"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/maps/map-libre.tsx","../src/maps/deck-overlay.tsx","../src/maps/google-maps.tsx","../src/maps/deckgl.tsx","../src/providers/map/const.ts","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../src/basemap-controls.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/use-event-manager.ts","../src/editable/custom-editable-geojson-layer.tsx","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/maps/map.tsx","../../../node_modules/.pnpm/cross-fetch@4.1.0/node_modules/cross-fetch/dist/browser-ponyfill.js","../../services/dist/index.js","../src/providers/sources/store.ts","../src/models/use-filters-merged.tsx","../src/models/use-widget-model.ts","../src/models/utils/get-relevant-headers.tsx","../src/models/use-common-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/providers/sources/const.ts","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx","../src/stats/get-query-stats.ts","../src/stats/get-table-stats.ts","../src/stats/use-stats.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import { Map, MapProvider, useMap as useMapLibre } from 'react-map-gl/maplibre'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport DeckGL from '@deck.gl/react'\nimport { useImperativeHandle, useMemo, type RefObject } from 'react'\n\nexport function MapLibre({\n instanceRef,\n overlayRef,\n controller,\n id,\n layers,\n mapStyle,\n parameters,\n getCursor,\n getTooltip,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n mapStyle: string | undefined\n}) {\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n return (\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef as RefObject<InstanceRef>}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }\n onViewStateChange={onViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n <Map\n reuseMaps={false}\n mapStyle={mapStyle}\n onLoad={() =>\n onLoad({\n type: 'load',\n value: true,\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n </DeckGL>\n </div>\n </MapProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre\n }, [mapLibre])\n\n return null\n}\n","import { useMap } from '@vis.gl/react-google-maps'\nimport { useEffect, useImperativeHandle, useMemo } from 'react'\n\nimport {\n GoogleMapsOverlay,\n type GoogleMapsOverlayProps,\n} from '@deck.gl/google-maps'\nimport type { DeckGLComponentProps } from '../types'\n\n/**\n * A very simple implementation of a component that renders a list of deck.gl layers\n * via the GoogleMapsOverlay into the <Map> component containing it.\n */\nexport const DeckGlOverlay = (\n props: GoogleMapsOverlayProps & {\n instanceRef?: DeckGLComponentProps['instanceRef']\n },\n) => {\n // the GoogleMapsOverlay can persist throughout the lifetime of the DeckGlOverlay\n const deck = useMemo(\n () =>\n new GoogleMapsOverlay({\n interleaved: true,\n }),\n [],\n )\n\n // add the overlay to the map once the map is available\n const map = useMap()\n\n useImperativeHandle(\n props.instanceRef,\n () => {\n return deck\n },\n [deck],\n )\n\n useEffect(() => {\n deck.setMap(map)\n\n return () => {\n deck.finalize()\n }\n }, [deck, map])\n\n // whenever the rendered data changes, the layers will be updated\n useEffect(() => {\n deck.setProps(props)\n }, [deck, props])\n\n // no dom rendered by this component\n return null\n}\n","import {\n APIProvider,\n Map,\n useMap,\n type MapCameraChangedEvent,\n} from '@vis.gl/react-google-maps'\nimport type { DeckGLComponentProps, InstanceRef } from '../types'\nimport { useCallback, useImperativeHandle, useMemo } from 'react'\nimport { DeckGlOverlay } from './deck-overlay'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\n\nexport function GoogleMaps({\n id,\n instanceRef,\n basemap,\n layers,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n overlayRef,\n parameters,\n controller,\n onLoad,\n onViewStateChange,\n ...rest\n}: Omit<DeckGLComponentProps, 'onLoad'> & {\n onLoad: (event: { type: 'deckgl' | 'load'; value: boolean }) => void\n}) {\n const _controller: ControllerOptions = useMemo(() => {\n if (typeof controller === 'boolean') {\n return {\n dragPan: controller,\n doubleClickZoom: controller,\n scrollZoom: controller,\n }\n }\n const _controller = controller as ControllerOptions\n\n return {\n dragPan: _controller?.dragPan ?? true,\n doubleClickZoom: _controller?.doubleClickZoom ?? true,\n scrollZoom: _controller?.scrollZoom ?? true,\n }\n }, [controller])\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const mappingGmapsToDeck = useCallback(\n ({ detail: { center, zoom, heading, tilt } }: MapCameraChangedEvent) => ({\n latitude: center.lat,\n longitude: center.lng,\n zoom: zoom - 1,\n bearing: heading,\n pitch: tilt,\n }),\n [],\n )\n\n const handleViewStateChange = useCallback(\n (newViewState: MapViewState) => {\n const current = instanceRef?.current as GoogleMapsOverlay\n // @ts-expect-error accessing protected props\n const deck = current?._deck as InstanceRef['deck']\n const viewState = {\n // @ts-expect-error accessing protected props\n ...deck?.viewState,\n ...newViewState,\n }\n const _viewState: MapViewState = {\n latitude: viewState.latitude,\n longitude: viewState.longitude,\n zoom: viewState.zoom,\n pitch: viewState.pitch,\n bearing: viewState.bearing,\n // @ts-expect-error - `width` and `height` is not in the types\n width: deck?.width,\n height: deck?.height,\n }\n onViewStateChange?.({\n viewState: _viewState,\n interactionState: {\n isZooming: true,\n },\n } as ViewStateChangeParameters<MapViewState>)\n },\n [instanceRef, onViewStateChange],\n )\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <div className='deckgl-map'>\n <Map\n id={id}\n mapTypeId={basemap}\n disableDefaultUI={true}\n {..._gmapsProps}\n center={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n zoom={(rest.initialViewState?.zoom ?? 0) + 1}\n tilt={rest.initialViewState?.pitch}\n heading={rest.initialViewState?.bearing}\n onTilesLoaded={() => {\n onLoad({\n type: 'load',\n value: true,\n })\n handleViewStateChange(rest.initialViewState!)\n }}\n onBoundsChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n onZoomChanged={(props) =>\n handleViewStateChange(mappingGmapsToDeck(props))\n }\n scrollwheel={\n typeof _controller.scrollZoom === 'boolean'\n ? _controller.scrollZoom\n : !!_controller.scrollZoom\n }\n gestureHandling={!_controller.dragPan ? 'none' : 'greedy'}\n disableDoubleClickZoom={!_controller.doubleClickZoom}\n >\n <MapReferences id={id} overlayRef={overlayRef} />\n <DeckGlOverlay\n id={id}\n instanceRef={instanceRef}\n layers={_layers}\n onLoad={() => {\n onLoad({\n type: 'deckgl',\n value: true,\n })\n }}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n />\n </Map>\n </div>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n id,\n overlayRef,\n}: {\n id: DeckGLComponentProps['id']\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const gmaps = useMap(id)!\n\n useImperativeHandle(overlayRef, () => {\n return gmaps\n }, [gmaps])\n\n return null\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from '../const'\nimport type { DeckGLComponentProps } from '../types'\nimport { getCursorDefault, getTooltipDefault } from '../helpers'\nimport { MapLibre } from '../maps/map-libre'\nimport { GoogleMaps } from '../maps/google-maps'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n gmapsProps,\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const handleLoad = useCallback(\n (e: { type: 'deckgl' | 'load'; value: boolean }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? e.value : loaded)),\n )\n },\n [],\n )\n\n useEffect(() => {\n return () => {\n handleLoad({\n type: 'load',\n value: false,\n })\n handleLoad({\n type: 'deckgl',\n value: false,\n })\n }\n }, [handleLoad])\n\n useEffect(() => {\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n onLoad?.(isAllLoaded)\n }, [isLoaded, onLoad])\n\n if (isGmaps) {\n return (\n <GoogleMaps\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n basemap={basemap}\n layers={layers}\n gmapsProps={gmapsProps}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n }\n\n return (\n <MapLibre\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n controller={controller}\n id={id}\n layers={layers}\n mapStyle={mapStyle}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={handleLoad}\n onViewStateChange={onViewStateChange}\n {...rest}\n />\n )\n}\n","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","'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 { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n AreLayerLoadedSlice,\n SpatialFilterSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { DeckGLComponentProps, InstanceRef } from '../../types'\nimport { MAPS_BASEMAP } from '../../const'\nimport type { GoogleMapsOverlay } from '@deck.gl/google-maps'\nimport deepmerge from 'deepmerge'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n controller: curr.controller ?? true,\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => {\n const { type: currentType } = MAPS_BASEMAP[state.maps[id]!.basemap]\n const { type: newType } = MAPS_BASEMAP[basemap]\n\n const isLoaded = currentType === newType && !!state.maps[id]?.isLoaded\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n basemap,\n },\n },\n }\n }),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n const current = store.maps[id]?.instanceRef?.current\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return (\n // @ts-expect-error accessing protected props\n (current as InstanceRef)?.deck ?? (current as GoogleMapsOverlay)._deck\n )\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n getBounds: (id, bounds, options) => {\n const store = get()\n if (!store.maps?.[id]?.isLoaded) return\n\n const viewState = store.getViewState(id)\n if (!viewState) return\n\n const viewport = new WebMercatorViewport(viewState)\n\n const newBounds = viewport.fitBounds(bounds, options?.boundsOptions)\n\n return {\n latitude: newBounds.latitude,\n longitude: newBounds.longitude,\n zoom: newBounds.zoom,\n ...options?.viewStateOptions,\n }\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 setController: (id, controller) =>\n set((state) => {\n const currentController = state.maps[id]?.controller ?? {}\n\n const _currentController =\n typeof currentController === 'boolean' ? {} : currentController\n\n const newController =\n !controller || typeof controller === 'boolean'\n ? controller\n : deepmerge<DeckGLComponentProps['controller']>(\n _currentController,\n controller,\n )\n\n return {\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n controller: newController,\n },\n },\n }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createAreLayersLoaded = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id } = curr\n acc[id] = false\n return acc\n },\n {} as AreLayerLoadedSlice['areLayersLoaded'],\n )\n\n return ((set) => ({\n areLayersLoaded: defaultProps,\n setLayersLoad: (id, isLoaded) =>\n set((state) => ({\n areLayersLoaded: {\n ...state.areLayersLoaded,\n [id]: isLoaded,\n },\n })),\n })) as StateCreator<AreLayerLoadedSlice, [], [], AreLayerLoadedSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const initialViewState = curr.initialViewState ?? curr.viewState\n acc.initialViewStates[curr.id] = initialViewState\n acc.viewStates[curr.id] = initialViewState\n acc.viewports[curr.id] = null\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n initialViewStates: {} as ViewStateSlice['initialViewStates'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n initialViewStates: defaultProps.initialViewStates,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id],\n ...viewState,\n },\n },\n })),\n setInitialViewState: (id, viewState) =>\n set((state) => ({\n initialViewStates: {\n ...state.initialViewStates,\n [id]: viewState,\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 newViewState = store.getBounds(id, bounds, options)\n\n if (!newViewState) return\n\n store.setViewState(id, newViewState)\n store.updateViewPort(id)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\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 store.updateViewPort(id)\n },\n loadInitialViewState: (id, initialViewState) => {\n const store = get()\n store.setInitialViewState(id, initialViewState)\n store.flyTo(id, initialViewState, {\n viewStateOptions: { transitionDuration: 0 },\n })\n },\n resetViewState: (id: string) => {\n const store = get()\n const initialViewStates = store.initialViewStates\n if (!initialViewStates[id]) return\n store.flyTo(id, initialViewStates[id])\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nconst createSpatialFilterSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n acc[curr.id] = curr.spatialFilter ?? {} // Initialize every mapId to an empty record\n return acc\n },\n {} as SpatialFilterSlice['spatialFilter'],\n )\n return ((set) => ({\n spatialFilter: defaultProps,\n setSpatialFilter: (mapId, id, value) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n\n spatialFilter[mapId] = {\n ...spatialFilter[mapId],\n [id]: value,\n }\n\n return {\n spatialFilter,\n }\n })\n },\n removeSpatialFilter: (mapId, id) => {\n set((state) => {\n const spatialFilter = structuredClone(state.spatialFilter)\n if (spatialFilter[mapId]) {\n delete spatialFilter[mapId][id]\n }\n return {\n spatialFilter,\n }\n })\n },\n })) as StateCreator<SpatialFilterSlice, [], [], SpatialFilterSlice>\n}\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createAreLayersLoaded(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createSpatialFilterSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","import type { BasemapsControlsProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function BasemapsControls({ children, mapId }: BasemapsControlsProps) {\n const { basemap } = useMapStore((state) => state.maps[mapId]!)\n const setBasemap = useMapStore((state) => state.setBasemap)\n\n return children({\n basemap,\n setBasemap: useCallback(\n (basemap: NonNullable<MapComponentProps['basemap']>) =>\n setBasemap(mapId, basemap),\n [setBasemap, mapId],\n ),\n })\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n const legend =\n !!_layer.legend || !!layer.legend\n ? {\n ..._layer.legend,\n ...layer.legend,\n }\n : undefined\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n updateTriggers: {\n ...(_layer.props.updateTriggers ?? {}),\n ...(layer.props?.updateTriggers ?? {}),\n },\n extensions,\n },\n legend,\n }\n\n return { layers }\n }),\n removeLayer: (id) =>\n set((state) => {\n const layers = { ...state.layers }\n delete layers[id]\n return { layers }\n }),\n}))\n","import { useEffect } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport {\n type RecognizerTuple,\n EventManager,\n Pan,\n InputDirection,\n Pinch,\n Tap,\n} from 'mjolnir.js'\nimport type { Layer } from './providers/layers/types'\nimport { useLayerStore } from './providers/layers/store'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport const EVENT_HANDLERS = [\n 'click',\n 'keyup',\n 'panstart',\n 'panmove',\n 'panend',\n 'pointermove',\n] as const\n\nconst RECOGNIZERS = {\n multipan: [\n Pan,\n { threshold: 10, direction: InputDirection.Vertical, pointers: 2 },\n ],\n pinch: [Pinch, {}, null, ['multipan']],\n click: [Tap, { event: 'click' }, null, ['dblclick']],\n dblclick: [Tap, { event: 'dblclick', taps: 2 }],\n pan: [Pan, { threshold: 1 }, ['pinch'], ['multipan']],\n} as const\n\nexport function useEventManager({\n mapId,\n layerId,\n}: {\n mapId: MapComponentProps['id']\n layerId: NonNullable<Layer['props']['id']>\n}) {\n const basemap = useMapStore((store) => store.maps[mapId]?.basemap)!\n const isLoaded = useMapStore((store) => store.maps[mapId]?.isLoaded)\n const getOverlayInstance = useMapStore((store) => store.getOverlayInstance)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n useEffect(() => {\n let eventManager: EventManager | null = null\n\n if (isGmaps && isLoaded) {\n const overlayInstance = getOverlayInstance(mapId) as google.maps.Map\n eventManager = new EventManager(overlayInstance.getDiv(), {\n recognizers: Object.keys(RECOGNIZERS).map((eventName: string) => {\n const [\n RecognizerConstructor,\n defaultOptions,\n recognizeWith,\n requestFailure,\n ] = RECOGNIZERS[eventName as keyof typeof RECOGNIZERS]\n\n const options = { ...defaultOptions, event: eventName }\n\n return {\n recognizer: new RecognizerConstructor(options),\n recognizeWith,\n requestFailure,\n } as RecognizerTuple\n }),\n })\n }\n\n setLayer(layerId, {\n props: {\n eventManager,\n } as LayerProps & {\n eventManager: EventManager | null\n },\n })\n }, [getOverlayInstance, isGmaps, isLoaded, layerId, mapId, setLayer])\n}\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { UpdateParameters } from '@deck.gl/core'\nimport { EventManager } from 'mjolnir.js'\nimport { EVENT_HANDLERS } from '../use-event-manager'\n\nexport class CustomEditableGeojsonLayer extends EditableGeoJsonLayer {\n declare props: EditableGeoJsonLayer['props'] & {\n eventManager?: EventManager | null\n }\n\n override updateState({\n props,\n oldProps,\n context,\n changeFlags,\n }: UpdateParameters<this>) {\n if (props.eventManager !== oldProps.eventManager) {\n this._removeEventHandlers(props.eventManager)\n this._removeEventHandlers(oldProps.eventManager)\n this._addEventHandlers()\n }\n super.updateState({ props, oldProps, context, changeFlags })\n }\n\n override _addEventHandlers() {\n const eventManager = this._getEventManager()!\n // _editableLayerState is not in the types, but it's a private property that can be accessed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_HANDLERS) {\n // error derived from the _editableLayerState. The type is not exists\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.on(eventType as 'anyclick', eventHandler, {\n // give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers\n priority: 100,\n })\n }\n }\n\n override _removeEventHandlers(_eventManager?: EventManager | null) {\n const eventManager = _eventManager ?? this._getEventManager()!\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { eventHandler } = this.state._editableLayerState\n\n for (const eventType of EVENT_HANDLERS) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eventManager.off(eventType as 'anyclick', eventHandler)\n }\n }\n\n _getEventManager() {\n return (\n this.props.eventManager ??\n // @ts-expect-error accessing protected props\n this.context.deck.eventManager\n )\n }\n}\n","import type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps & {}): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n ...value.properties,\n visible: value.properties.visible,\n label: value.properties.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback(\n (id, data) => setValue(mapId, id, data),\n [mapId, setValue],\n ),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length, { type LengthUnits } 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 CONVERSIONS_UNITS_AREA,\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\nimport type { AreaUnits } from 'convert-units/definitions/area'\nimport area from 'convert-units/definitions/area'\n\nconst convert = configureMeasurements({\n length,\n})\n\nconst convertArea = configureMeasurements({\n area,\n})\n\nfunction validateUnitForAreaConversion(\n unit: string,\n): asserts unit is keyof typeof CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA {\n if (!(unit in CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)) {\n const validUnits = Object.keys(CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA)\n throw new Error(\n `Unit \"${unit}\" cannot be converted to area. Valid units are: ${validUnits.join(', ')}`,\n )\n }\n}\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n dimension: 'length' | 'area',\n) {\n switch (dimension) {\n case 'length': {\n const unitFrom: LengthUnits = CONVERSIONS_UNITS[MapMeasurementUnit.meter]\n const unitTo: LengthUnits = CONVERSIONS_UNITS[unit]\n\n return convert(distance).from(unitFrom).to(unitTo)\n }\n case 'area': {\n validateUnitForAreaConversion(unit)\n const unitFrom: AreaUnits =\n CONVERSIONS_UNITS_AREA[\n CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[MapMeasurementUnit.meter]\n ]\n const unitTo: AreaUnits =\n CONVERSIONS_UNITS_AREA[CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA[unit]]\n\n return convertArea(distance).from(unitFrom).to(unitTo)\n }\n default: {\n throw new Error(\n `Invalid dimension: ${dimension as string}, valid dimensions are: length, area`,\n )\n }\n }\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, customFormatter, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n dimension = 'length',\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n dimension?: 'length' | 'area'\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, dimension)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit, dimension)\n }\n\n let result = `${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 if (dimension === 'area') {\n result += '2'\n }\n\n if (customFormatter) {\n return customFormatter(result)\n }\n\n return result\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'\nimport type { TentativeFeature } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\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 const latestClickSequence = this.getClickSequence()\n const polygonCoordinates = [...latestClickSequence, latestClickSequence[0]!]\n this.area = area({\n type: 'Polygon',\n coordinates: [polygonCoordinates],\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 updateTooltip(\n polygon: Polygon | TentativeFeature,\n props: ModeProps<FeatureCollection>,\n ): void {\n const position = centroid(polygon) as FeatureOf<Point>\n this.area = area(polygon)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\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 this.updateTooltip(tentativeGuide, props)\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 // Update the tooltip with the final area\n this.updateTooltip(polygonToAdd, props)\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 getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n dimension: 'area',\n })\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n dimension: 'area',\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'\nimport type { AreaUnits } from 'convert-units/definitions/area'\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 MapMeasurementUnitArea = {\n squareMeter: 'squareMeter',\n squareKilometer: 'squareKilometer',\n squareMile: 'squareMile',\n squareFeet: 'squareFeet',\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 type MapMeasurementUnitAreaValue = Pick<\n typeof MapMeasurementUnit,\n 'kilometer' | 'meter' | 'mile' | 'feet'\n>\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 CONVERSIONS_UNITS_AREA: Record<\n ValueOf<typeof MapMeasurementUnitArea>,\n AreaUnits\n> = {\n [MapMeasurementUnitArea.squareMeter]: 'm2',\n [MapMeasurementUnitArea.squareKilometer]: 'km2',\n [MapMeasurementUnitArea.squareMile]: 'mi2',\n [MapMeasurementUnitArea.squareFeet]: 'ft2',\n} as const\n\nexport const CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA: Record<\n keyof MapMeasurementUnitAreaValue,\n ValueOf<typeof MapMeasurementUnitArea>\n> = {\n [MapMeasurementUnit.meter]: MapMeasurementUnitArea.squareMeter,\n [MapMeasurementUnit.kilometer]: MapMeasurementUnitArea.squareKilometer,\n [MapMeasurementUnit.mile]: MapMeasurementUnitArea.squareMile,\n [MapMeasurementUnit.feet]: MapMeasurementUnitArea.squareFeet,\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport type {\n LassoToolsLayerEditProps,\n LassoToolsProps,\n LassoToolsData,\n} from './types'\nimport { getLassoToolsLayer } from './layer'\nimport {\n DEFAULT_MASK_LAYER_PROPS,\n DEFAULT_LASSO_TOOLS_PROPS,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from './const'\nimport { useLassoToolsState } from './provider/provider'\nimport type { FeatureCollection } from 'geojson'\nimport { GeoJsonLayer, type GeoJsonLayerProps } from '@deck.gl/layers'\nimport { MaskExtension } from '@deck.gl/extensions'\nimport { LassoToolsControls } from './lasso-tools-control'\nimport { EditType } from '../const'\nimport { useShallow } from 'zustand/shallow'\nimport { getMaskValues } from './util'\nimport { MAP_MEASURE_LAYER_ID } from '../measurement-tools/const'\nimport type { Layer, LayerProps, PickingInfo } from '@deck.gl/core'\nimport { ViewMode } from '@deck.gl-community/editable-layers'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_LASSO_TOOLS_LAYER_ID })\n\n const maskValues = useMemo(() => {\n return getMaskValues({ values })\n }, [values])\n\n const maskFeatureCollection: FeatureCollection = useMemo(() => {\n return {\n type: 'FeatureCollection',\n features: maskValues.map((value) => ({\n type: 'Feature',\n geometry: value.geometry,\n properties: value.properties,\n id: value.id,\n })),\n }\n }, [maskValues])\n\n const maskVisible = useMemo(() => {\n return maskValues\n .filter((value) => value.properties.visible)\n .map((value) => value.id)\n }, [maskValues])\n\n const [data, setData] = useState<FeatureCollection>(maskFeatureCollection)\n const [selectedFeatureIndexes, setSelectedFeatureIndexes] = useState<\n number[]\n >([])\n\n const setDataByValues = useCallback(() => {\n const _data = {\n ...maskFeatureCollection,\n features: maskFeatureCollection.features.filter(\n (feature) => feature.properties?.visible,\n ),\n }\n setData(_data)\n }, [maskFeatureCollection])\n\n useEffect(() => {\n setDataByValues()\n }, [setDataByValues])\n\n const autoIncrement = useRef(maskValues.length)\n\n useEffect(() => {\n addLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n\n return () => {\n removeLayers(mapId, [MAP_LASSO_TOOLS_LAYER_ID])\n }\n }, [addLayers, mapId, removeLayers])\n\n const handleCancelEdit = useCallback(() => {\n setDataByValues()\n setSelectedFeatureIndexes([])\n setEnabled(mapId, false)\n }, [mapId, setDataByValues, setEnabled])\n\n const onEdit = useCallback(\n ({ editType, updatedData }: LassoToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n handleCancelEdit()\n return\n }\n\n setData(updatedData)\n\n if (editType === EditType.updateTentativeFeature) {\n return\n }\n\n if (editType === EditType.addFeature) {\n if (modeSelected !== 'edit') {\n autoIncrement.current = autoIncrement.current + 1\n }\n updatedData.features.forEach((feature, index) => {\n feature.properties.label ??= `${labels?.mask} ${autoIncrement.current}`\n feature.properties.index = index\n feature.properties.visible = feature.properties.visible ?? true\n\n const id = (feature.id as string) ?? crypto.randomUUID()\n\n setValue(mapId, id, {\n geometry: feature.geometry,\n properties: feature.properties,\n // visible: true,\n type: defaultType,\n })\n })\n handleCancelEdit()\n }\n },\n [\n defaultType,\n handleCancelEdit,\n labels?.mask,\n mapId,\n modeSelected,\n setValue,\n ],\n )\n\n useEffect(() => {\n const pickable = enabled\n\n const {\n border: guideColorEditing,\n point: pointColorEditing,\n fill: fillColorEditing,\n } = styles.colors.editing\n\n const { border: borderFinished, fill: fillFinished } =\n styles.colors.finished\n\n const layer = getLassoToolsLayer({\n layerProps: {\n ...layerProps.mask,\n pickable,\n data,\n selectedFeatureIndexes,\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n onClick: (e: PickingInfo) => {\n const _e = e as PickingInfo<never, { isGuide: boolean }>\n if (_e.isGuide) {\n return\n }\n setSelectedFeatureIndexes([_e.index])\n },\n },\n getLineColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? guideColorEditing\n : borderFinished,\n getFillColor: (d: LassoToolsData) =>\n selectedFeatureIndexes[0] === d.properties.index\n ? fillColorEditing\n : fillFinished,\n pointColor: {\n fill: pointColorEditing,\n outline: guideColorEditing,\n },\n onEdit,\n mode: !pickable ? new ViewMode() : modeInstance,\n })\n\n setLayer(MAP_LASSO_TOOLS_LAYER_ID, layer)\n }, [\n data,\n enabled,\n layerProps.mask,\n maskVisible,\n modeInstance,\n onEdit,\n selectedFeatureIndexes,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n ])\n\n useEffect(() => {\n const props = {\n ...DEFAULT_MASK_LAYER_PROPS,\n data: maskFeatureCollection,\n getFilterValue: (f: LassoToolsData) => Number(maskVisible.includes(f.id)),\n updateTriggers: {\n getFilterValue: maskVisible,\n },\n } as GeoJsonLayerProps\n\n setLayer(DEFAULT_MASK_LAYER_PROPS.id, {\n type: GeoJsonLayer,\n props,\n })\n\n addLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n return () => {\n removeLayers(mapId, [DEFAULT_MASK_LAYER_PROPS.id])\n }\n }, [\n addLayers,\n mapId,\n maskFeatureCollection,\n maskVisible,\n removeLayers,\n setLayer,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (!currentLayer) return\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable: pickable,\n extensions: [new MaskExtension()],\n maskId:\n !enabled && maskVisible.length ? MAP_MASK_LAYER_ID : undefined,\n } as Partial<GeoJsonLayerProps>,\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, maskVisible.length, setLayer])\n\n return children\n}\n\nLassoTools.Controls = LassoToolsControls\n","import deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\nimport { CustomEditableGeojsonLayer } from '../custom-editable-geojson-layer'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps & {}): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: CustomEditableGeojsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\nimport { useEventManager } from '../../use-event-manager'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps,\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 setController = useMapStore((state) => state.setController)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEventManager({ mapId, layerId: MAP_MEASURE_LAYER_ID })\n\n useEffect(() => {\n const previousController = getDeckInstance(mapId)?.props.controller\n\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n\n setController(mapId, {\n doubleClickZoom: false,\n })\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n setController(mapId, previousController)\n }\n }, [\n addLayers,\n clearLayerOnStart,\n mapId,\n removeLayers,\n enabled,\n getDeckInstance,\n setController,\n ])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (!currentLayer) return\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps?.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from '../types'\nimport { useMapStore } from '../providers/map/provider'\nimport { useLayers } from '../use-layers'\nimport { sortLayers } from '../utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const basemap = useMapStore((state) => state.maps[id]!.basemap)\n const instanceRef = useMapStore((state) => state.maps[id]!.instanceRef)\n const overlayRef = useMapStore((state) => state.maps[id]!.overlayRef)\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const controller = useMapStore((state) => state.maps[id]!.controller)\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = getDeckInstance(id)?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [getDeckInstance, id, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n controller={controller}\n id={id}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","// Save global object in a variable\nvar __global__ =\n(typeof globalThis !== 'undefined' && globalThis) ||\n(typeof self !== 'undefined' && self) ||\n(typeof global !== 'undefined' && global);\n// Create an object that extends from __global__ without the fetch function\nvar __globalThis__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = __global__.DOMException\n}\nF.prototype = __global__; // Needed for feature detection on whatwg-fetch's code\nreturn new F();\n})();\n// Wraps whatwg-fetch with a function scope to hijack the global object\n// \"globalThis\" that's going to be patched\n(function(globalThis) {\n\nvar irrelevant = (function (exports) {\n\n /* eslint-disable no-prototype-builtins */\n var g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {};\n\n var support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n var encoding = match ? match[1] : 'utf-8';\n reader.readAsText(blob, encoding);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed;\n this._bodyInit = body;\n if (!body) {\n this._noBody = true;\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this);\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n };\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/;\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/;\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();\n }\n }\n }\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n try {\n headers.append(key, value);\n } catch (error) {\n console.warn('Response ' + error.message);\n }\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText;\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 200, statusText: ''});\n response.ok = false;\n response.status = 0;\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = g.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n setTimeout(function() {\n resolve(new Response(body, options));\n }, 0);\n };\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'));\n }, 0);\n };\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'));\n }, 0);\n };\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n }, 0);\n };\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob';\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer';\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name));\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]));\n });\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value);\n }\n });\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!g.fetch) {\n g.fetch = fetch;\n g.Headers = Headers;\n g.Request = Request;\n g.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n})({});\n})(__globalThis__);\n// This is a ponyfill, so...\n__globalThis__.fetch.ponyfill = true;\ndelete __globalThis__.fetch.polyfill;\n// Choose between native implementation (__global__) or custom implementation (__globalThis__)\nvar ctx = __global__.fetch ? __global__ : __globalThis__;\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","import R from \"cross-fetch\";\nconst h = \"https://gcp-us-east1.api.carto.com\", j = \"v3\", J = \"ps\", g = {\n get: \"GET\",\n post: \"POST\",\n put: \"PUT\",\n patch: \"PATCH\",\n delete: \"DELETE\"\n};\nfunction I(e, n) {\n return Array.isArray(n) ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : n == null || n === \"\" ? \"\" : typeof n == \"object\" ? `${e}=${encodeURIComponent(JSON.stringify(n))}` : `${e}=${encodeURIComponent(n)}`;\n}\nfunction q({\n params: e,\n url: n\n}) {\n if (!e)\n return n;\n const t = Object.entries(e).map(\n ([a, s]) => I(a, s)\n );\n return `${n}?${t.filter(Boolean).join(\"&\")}`;\n}\nfunction w(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nvar A, V;\nfunction C() {\n if (V) return A;\n V = 1;\n var e = function(o) {\n return n(o) && !t(o);\n };\n function n(r) {\n return !!r && typeof r == \"object\";\n }\n function t(r) {\n var o = Object.prototype.toString.call(r);\n return o === \"[object RegExp]\" || o === \"[object Date]\" || l(r);\n }\n var a = typeof Symbol == \"function\" && Symbol.for, s = a ? Symbol.for(\"react.element\") : 60103;\n function l(r) {\n return r.$$typeof === s;\n }\n function u(r) {\n return Array.isArray(r) ? [] : {};\n }\n function i(r, o) {\n return o.clone !== !1 && o.isMergeableObject(r) ? d(u(r), r, o) : r;\n }\n function y(r, o, c) {\n return r.concat(o).map(function(m) {\n return i(m, c);\n });\n }\n function p(r, o) {\n if (!o.customMerge)\n return d;\n var c = o.customMerge(r);\n return typeof c == \"function\" ? c : d;\n }\n function b(r) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(r).filter(function(o) {\n return Object.propertyIsEnumerable.call(r, o);\n }) : [];\n }\n function f(r) {\n return Object.keys(r).concat(b(r));\n }\n function _(r, o) {\n try {\n return o in r;\n } catch {\n return !1;\n }\n }\n function O(r, o) {\n return _(r, o) && !(Object.hasOwnProperty.call(r, o) && Object.propertyIsEnumerable.call(r, o));\n }\n function E(r, o, c) {\n var m = {};\n return c.isMergeableObject(r) && f(r).forEach(function(T) {\n m[T] = i(r[T], c);\n }), f(o).forEach(function(T) {\n O(r, T) || (_(r, T) && c.isMergeableObject(o[T]) ? m[T] = p(T, c)(r[T], o[T], c) : m[T] = i(o[T], c));\n }), m;\n }\n function d(r, o, c) {\n c = c || {}, c.arrayMerge = c.arrayMerge || y, c.isMergeableObject = c.isMergeableObject || e, c.cloneUnlessOtherwiseSpecified = i;\n var m = Array.isArray(o), T = Array.isArray(r), P = m === T;\n return P ? m ? c.arrayMerge(r, o, c) : E(r, o, c) : i(o, c);\n }\n d.all = function(o, c) {\n if (!Array.isArray(o))\n throw new Error(\"first argument should be an array\");\n return o.reduce(function(m, T) {\n return d(m, T, c);\n }, {});\n };\n var U = d;\n return A = U, A;\n}\nvar L = C();\nconst M = /* @__PURE__ */ w(L);\nfunction k(e) {\n return M(\n {\n method: g.get,\n headers: {\n Accept: \"application/json\"\n }\n },\n e\n );\n}\nfunction S(e, n) {\n return M(\n {\n method: g.post,\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(n)\n },\n e\n );\n}\nconst B = {\n GET: k,\n POST: S,\n PUT: S,\n PATCH: S,\n DELETE: k\n};\nfunction x({\n body: e,\n accessToken: n,\n method: t,\n ...a\n}) {\n let s = n;\n return s && !s.includes(\"Bearer\") && (s = \"Bearer \" + s), B[t](\n M(\n {\n method: t,\n headers: { ...!!s && { authorization: s } }\n },\n a\n ),\n e\n );\n}\nconst D = 6144;\nasync function $({\n signal: e,\n body: n,\n accessToken: t,\n credentials: a,\n method: s = g.get,\n params: l,\n url: u,\n requestOptions: { getMaxUrlLength: i } = {\n getMaxUrlLength: D\n },\n ...y\n}) {\n let p = q({ url: u, params: l }), b = n, f = s;\n s === g.get && p.length > i && (b = l, f = g.post, p = u);\n const _ = x({\n body: b,\n accessToken: t ?? a?.accessToken,\n method: f,\n ...y\n });\n e && (_.signal = e);\n const O = await R(p, _);\n if (!O.ok) {\n const d = await O.text();\n throw new Error(d);\n }\n return O.status === 204 ? Promise.resolve() : await O.json();\n}\nconst v = {\n running: \"running\",\n pending: \"pending\",\n failure: \"failure\",\n cancelled: \"cancelled\",\n success: \"success\"\n};\nfunction G({\n accessToken: e,\n connection: n,\n credentials: t,\n sources: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.post,\n body: {\n sources: a\n },\n ...i\n });\n}\nasync function Q({\n accessToken: e,\n connection: n,\n credentials: t,\n query: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.post,\n body: {\n query: a.trim(),\n metadata: s\n },\n ...y\n });\n}\nasync function H({\n url: e,\n accessToken: n,\n credentials: t,\n params: a = {},\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = n ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/lds/${e}`;\n return $({\n signal: u,\n accessToken: y,\n url: f,\n method: g.get,\n params: a,\n ...i\n });\n}\nasync function z({\n accessToken: e,\n connection: n,\n query: t,\n credentials: a,\n params: s = {},\n queryParameters: l,\n method: u = g.get,\n baseUrl: i = h,\n apiVersion: y = j,\n fetcherOptions: { signal: p, ...b } = {}\n}) {\n const f = e ?? a?.accessToken, _ = i ?? a?.apiBaseUrl, O = y ?? a?.apiVersion, E = `${_}/${O}/sql/${n}/query`, d = N(t), U = u !== g.get ? \"body\" : \"params\";\n return $({\n signal: p,\n accessToken: f,\n url: E,\n method: u,\n [U]: {\n q: d,\n ...s,\n queryParameters: l\n },\n ...b\n });\n}\nfunction N(e) {\n return e && e.replace(\n /'([^'\\\\]*(\\\\.[^'\\\\]*)*)'|\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)\"/g,\n (n) => n\n ).replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--.*$/gm, \"\").replace(/\\s+/g, \" \").trim();\n}\nasync function K({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/export/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function X({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n baseUrl: s = h,\n apiVersion: l = j,\n fetcherOptions: { signal: u, ...i } = {}\n}) {\n const y = e ?? t?.accessToken, p = s ?? t?.apiBaseUrl, b = l ?? t?.apiVersion, f = `${p}/${b}/sql/${n}/job/${a}`;\n return $({\n accessToken: y,\n signal: u,\n url: f,\n method: g.get,\n ...i\n });\n}\nasync function Y({\n accessToken: e,\n connection: n,\n credentials: t,\n metadataFilter: a = void 0,\n createdSince: s = void 0,\n userId: l = void 0,\n baseUrl: u = h,\n apiVersion: i = j,\n fetcherOptions: { signal: y, ...p } = {}\n}) {\n const b = e ?? t?.accessToken, f = u ?? t?.apiBaseUrl, _ = i ?? t?.apiVersion, O = `${f}/${_}/sql/${n}/jobs`;\n return $({\n accessToken: b,\n signal: y,\n url: O,\n method: g.get,\n params: {\n user_id: l,\n created_since: s,\n metadata_filter: a\n },\n ...p\n });\n}\nfunction W({\n accessToken: e,\n connection: n,\n credentials: t,\n jobId: a,\n metadata: s,\n baseUrl: l = h,\n apiVersion: u = j,\n fetcherOptions: { signal: i, ...y } = {}\n}) {\n const p = e ?? t?.accessToken, b = l ?? t?.apiBaseUrl, f = u ?? t?.apiVersion, _ = `${b}/${f}/sql/${n}/job/${a}`;\n return $({\n accessToken: p,\n signal: i,\n url: _,\n method: g.patch,\n body: {\n metadata: s\n },\n ...y\n });\n}\nexport {\n h as DEFAULT_CARTO_API_URL,\n j as DEFAULT_CARTO_API_VERSION,\n J as DEFAULT_CLIENT_ID,\n g as RequestMethods,\n G as createExport,\n Q as createJob,\n $ as executeFetch,\n H as executeLDS,\n z as executeSQL,\n K as getExport,\n X as getJob,\n v as jobStatus,\n Y as listJobs,\n W as updateJob\n};\n//# sourceMappingURL=index.js.map\n","import { create } from 'zustand'\nimport type {\n QuerySource,\n RasterSource,\n TableSource,\n TilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport {\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n DEFAULT_CLIENT_ID,\n} from '@carto/ps-services'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n addFilter,\n removeFilter,\n type Filters,\n FilterType,\n type SpatialDataType,\n} from '@carto/api-client'\nimport { useMemo } from 'react'\nimport { devtools } from 'zustand/middleware'\n\nexport const useSourceStore = create<SourceStore>()(\n devtools((set, get) => ({\n sources: {},\n filters: {},\n setSource: (id, source) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n const previousSource = sources[id]\n const newSource = {\n apiBaseUrl: DEFAULT_CARTO_API_URL,\n clientId: DEFAULT_CLIENT_ID,\n apiVersion: DEFAULT_CARTO_API_VERSION,\n ...previousSource,\n ...source,\n } as Source\n\n newSource.widgets = getWidgetSource({\n source: newSource,\n })\n\n sources[id] = newSource\n\n return { sources }\n },\n undefined,\n 'setSource',\n ),\n removeSource: (id) =>\n set(\n (state) => {\n const sources = { ...state.sources }\n\n const widgetClient = sources[id]?.widgets\n if (widgetClient) {\n widgetClient.destroy()\n delete sources[id]!.widgets\n }\n\n delete sources[id]\n return { sources }\n },\n undefined,\n 'removeSource',\n ),\n setFilters: (id, newFilters) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n\n const filters = newFilters.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, currentFilters)\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'setFilters',\n ),\n removeFilters: (id, column, owner) =>\n set(\n (state) => {\n const currentFilters = state.filters[id] ?? {}\n if (!currentFilters) {\n return state\n }\n\n let filters = {}\n if (column) {\n filters = removeFilter(currentFilters, { column, owner })\n }\n\n return {\n filters: {\n ...state.filters,\n [id]: { ...filters }, // important: destructuring here to not conservere the reference to the same object\n },\n }\n },\n undefined,\n 'removeFilters',\n ),\n invalidateSourcesCache: (ids, { timeout = 500, maxAge = 10 } = {}) => {\n ids.forEach((id) => {\n get().setSource(id, {\n headers: {\n 'Cache-Control': `no-cache, max-age=${maxAge}`,\n },\n })\n })\n\n setTimeout(() => {\n ids.forEach((id) => {\n const source = get().sources[id]\n if (source) {\n delete source.headers\n get().setSource(id, source)\n }\n })\n }, timeout)\n },\n })),\n)\n\n/**\n * Shortcut to grabbing the source from the sources store object\n * @param id - the id of the source you want to grab\n * @returns source object without filters\n */\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\n/**\n * Shortcut to grabbing the filters from the filters store object\n * @param id - the id of the source the filters are applied to\n * @returns filters object as used in the `@carto/api-client` methods calls\n */\nexport function useFilters(id: string) {\n return useSourceStore((state) => state.filters[id])\n}\n\n/**\n * Returns a source together with its filters, pulling from the separate `sources` and `filters` state objects\n * @param id - the id of the source\n * @returns source object as used in `@carto/api-client`\n */\nexport function useSourceWithFilters(id: string) {\n const source = useSourceStore((state) => state.sources[id])\n const filters = useSourceStore((state) => state.filters[id])\n\n return useMemo(() => {\n if (!source) {\n return undefined\n }\n return {\n ...source,\n filters: filters ?? {},\n }\n }, [source, filters])\n}\n\nexport function getFilterValues(\n filters: Filters | undefined,\n { column, type }: { column: string; type: FilterType },\n) {\n return filters?.[column]?.[type]?.values ?? []\n}\n\nfunction getSpatialDataFallback(source: Source) {\n const [, fallback] = source.type.split('+', 2)\n return {\n spatialDataType: (source.spatialDataType ??\n fallback ??\n 'geo') as SpatialDataType,\n spatialDataColumn: source.spatialDataColumn ?? fallback ?? 'geom',\n }\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const { spatialDataType, spatialDataColumn } = getSpatialDataFallback(source)\n\n const options = {\n query: () => {\n const newSource = source as Source & QuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n table: () => {\n const newSource = source as Source & TableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType,\n spatialDataColumn,\n })\n },\n tileset: () => {\n const newSource = source as Source & TilesetSource\n\n if (!newSource.spatialDataBounds) {\n return null\n }\n\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType,\n spatialDataColumn,\n spatialDataBounds: newSource.spatialDataBounds,\n })\n },\n raster: () => {\n const newSource = source as Source & RasterSource\n\n if (!newSource.rasterMetadata || !newSource.spatialDataBounds) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n spatialDataColumn: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n spatialDataBounds: newSource.spatialDataBounds,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.() as Source['widgets']\n}\n","import { useFilters } from '../providers/sources/store'\nimport { useMemo } from 'react'\nimport deepmerge from 'deepmerge'\nimport { addFilter, type AddFilterOptions } from '@carto/api-client'\n\nexport function useFiltersMerged(\n sourceId: string,\n additionalFilter?: AddFilterOptions[],\n) {\n const filters = useFilters(sourceId)\n\n return useMemo(() => {\n if (!additionalFilter?.length) return filters\n const computedFilters = additionalFilter.reduce((acc, filter) => {\n return addFilter(acc, filter)\n }, {})\n return deepmerge(filters ?? {}, computedFilters) as typeof filters\n }, [filters, additionalFilter])\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-hooks/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","const RELEVANT_HEADERS = ['authorization', 'cache-control']\n\nexport function getRelevantHeaders(\n headers: Record<string, string> | undefined,\n) {\n if (!headers || typeof headers !== 'object') {\n return ''\n }\n\n const entries = Object.fromEntries(\n Object.entries(headers).filter(([key]) =>\n RELEVANT_HEADERS.includes(key.toLowerCase()),\n ),\n )\n\n return JSON.stringify(entries)\n}\n","import type { ModelProps } from './types'\nimport { useFiltersMerged } from './use-filters-merged'\nimport { useWidgetModel } from './use-widget-model'\nimport { getRelevantHeaders } from './utils/get-relevant-headers'\n\nexport function useCommonModel<TRequestOptions, TResponse>({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n}: Pick<\n ModelProps<TRequestOptions, TResponse>,\n 'accessToken' | 'sourceId' | 'additionalFilter' | 'widgetProps'\n>) {\n const mergedFilters = useFiltersMerged(sourceId, additionalFilter)\n const widgetModel = useWidgetModel(accessToken, sourceId)\n\n const queryKey: unknown[] = [sourceId, widgetProps]\n\n if (\n widgetModel?.props &&\n 'queryParameters' in widgetModel.props &&\n widgetModel.props.queryParameters\n ) {\n queryKey.push(widgetModel.props.queryParameters)\n }\n\n if (mergedFilters) {\n queryKey.push(mergedFilters)\n }\n\n const relevantHeaders = getRelevantHeaders(widgetModel?.props.headers)\n\n if (relevantHeaders) {\n queryKey.push(relevantHeaders)\n }\n\n queryKey.push(accessToken)\n\n return { mergedFilters, widgetModel, queryKey }\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['categories', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getCategories({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['features', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFeatures({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['formula', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getFormula({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['histogram', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getHistogram({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['range', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getRange({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['scatter', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getScatter({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['table', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTable({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\nimport { useCommonModel } from './use-common-model'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n additionalFilter,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const { mergedFilters, queryKey, widgetModel } = useCommonModel({\n accessToken,\n additionalFilter,\n sourceId,\n widgetProps,\n })\n\n return useQuery({\n queryKey: ['timeSeries', ...queryKey],\n queryFn: ({ signal }) =>\n widgetModel!.getTimeSeries({\n ...widgetProps,\n filters: mergedFilters,\n signal,\n }),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","export const clientID = 'ps'\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(\n layersId.map((id) => layers[id]).filter((l): l is Layer => !!l?.legend),\n ).toReversed()\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 onChangeRowCollapse = 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 onChangeRowCollapse,\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 [error, setError] = useState<Error | undefined>(undefined)\n\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore((state) => state.areLayersLoaded[mapId])!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n\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 setError(err as Error)\n\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 setError(undefined)\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n error,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/turf'\nimport type { Polygon, Position } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n const staticSpatialFilter = useStaticSpatialFilter({ mapId })\n\n return {\n spatialFilter:\n lassoToolsSpatialFilter ?? staticSpatialFilter ?? viewportSpatialFilter,\n staticSpatialFilter,\n lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n\nexport function useStaticSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}): SpatialFilter | undefined {\n const spatialFilter = useMapStore((state) => state.spatialFilter[mapId])\n\n return useMemo(() => {\n if (!spatialFilter || !Object.keys(spatialFilter).length) return\n\n // Flatten the array to match the expected Position[][][] type\n const coordinates: Position[][][] = Object.values(spatialFilter)\n .filter((value) => value !== null && value !== undefined)\n .flatMap((geom) => {\n // If it's a Polygon, wrap its coordinates in an array to make it compatible with MultiPolygon format\n if (geom.type === 'Polygon') {\n return [geom.coordinates]\n }\n\n // Otherwise, validate or transform `geom` to ensure it matches the expected format\n return geom.coordinates\n })\n\n return multiPolygon(coordinates).geometry\n }, [spatialFilter])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.areLayersLoaded[mapId])\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n const resetViewState = useMapStore((state) => state.resetViewState)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n resetViewState: useCallback(\n () => resetViewState(mapId),\n [resetViewState, mapId],\n ),\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetQueryStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getQueryStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n query,\n attribute,\n fetcherOptions: { signal, ...other } = {},\n queryParameters,\n params,\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetQueryStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { q: query, ...queryParameters, ...params },\n ...other,\n })\n}\n","import {\n RequestMethods,\n executeFetch,\n DEFAULT_CARTO_API_URL,\n DEFAULT_CARTO_API_VERSION,\n} from '@carto/ps-services'\nimport type { GetTableStats } from './types'\nimport type { StatsResponse } from './types'\n\nexport async function getTableStats<Attribute extends string | number>({\n baseUrl = DEFAULT_CARTO_API_URL,\n connection,\n accessToken,\n table,\n attribute,\n params,\n fetcherOptions: { signal, ...other } = {},\n apiVersion = DEFAULT_CARTO_API_VERSION,\n}: GetTableStats) {\n const statsUrl = `${baseUrl}/${apiVersion}/stats/${connection}/${table}/${attribute}`\n\n return executeFetch<StatsResponse<Attribute>>({\n accessToken,\n signal,\n url: statsUrl,\n method: RequestMethods.get,\n params: { ...params },\n ...other,\n })\n}\n","import { vectorTilesetSource } from '@carto/api-client'\nimport { useQuery, type UseQueryOptions } from '@tanstack/react-query'\nimport { getQueryStats } from './get-query-stats'\nimport { getTableStats } from './get-table-stats'\nimport type { QuerySource, Source } from '../providers/sources/types'\nimport type { Stats, StatsResponse } from './types'\n\nexport function useStats<Attribute extends string | number>({\n source,\n attribute,\n accessToken,\n params,\n fetcherOptions,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: {\n source: Source | undefined\n attribute: Stats['attribute']\n accessToken: Stats['accessToken']\n params?: Stats['params']\n fetcherOptions?: Stats['fetcherOptions']\n useQueryProps?: Omit<\n UseQueryOptions<StatsResponse<Attribute>, Error>,\n 'queryKey' | 'queryFn'\n >\n}) {\n return useQuery<StatsResponse<Attribute>, Error>({\n queryKey: [source, attribute],\n queryFn: () =>\n getQueryFunction<Attribute>({\n source: source!,\n params,\n attribute,\n accessToken: accessToken!,\n fetcherOptions,\n }),\n select(data) {\n return {\n ...data,\n type: data.type.toLowerCase(),\n }\n },\n enabled: !!source && enabled,\n ...useQueryProps,\n })\n}\n\nfunction getQueryFunction<Attribute extends string | number>({\n source,\n params,\n attribute,\n accessToken,\n fetcherOptions,\n}: {\n source: Source\n params?: Stats['params']\n attribute: Stats['attribute']\n accessToken: NonNullable<Stats['accessToken']>\n fetcherOptions?: Stats['fetcherOptions']\n}) {\n if (source.type.startsWith('query')) {\n return getQueryStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n accessToken,\n params,\n query: source.data,\n queryParameters: (source as QuerySource).queryParameters,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('table')) {\n return getTableStats<Attribute>({\n connection: source.connectionName,\n baseUrl: source.apiBaseUrl,\n apiVersion: source.apiVersion,\n params,\n accessToken,\n table: source.data,\n attribute,\n fetcherOptions,\n })\n }\n if (source.type.startsWith('tileset')) {\n return getStatsFromTileset<Attribute>({\n source,\n accessToken,\n target: source.data,\n attribute,\n })\n }\n\n throw new Error(`Unsupported source type: ${source.type}`)\n}\n\n// Catch Stats from tileset\n\nasync function getStatsFromTileset<Attribute extends string | number>({\n source,\n accessToken,\n target,\n attribute,\n}: {\n source: Source\n accessToken: string\n target: string\n attribute: string\n}) {\n const tileJson = await vectorTilesetSource({\n connectionName: source.connectionName,\n apiBaseUrl: source.apiBaseUrl,\n accessToken: accessToken,\n clientId: source.clientId,\n tableName: target,\n })\n if (!tileJson?.tilestats?.layers?.[0]?.attributes) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n const tileStatsAttributes = tileJson.tilestats.layers[0].attributes\n const columnStats = tileStatsAttributes.find((p) => p.attribute === attribute)\n\n if (!columnStats) {\n throw new Error(`${attribute} not found in tileset attributes`)\n }\n\n return columnStats as StatsResponse<Attribute>\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","MapLibre","t0","$","_c","controller","getCursor","getTooltip","id","instanceRef","layers","mapStyle","onLoad","onViewStateChange","overlayRef","parameters","rest","t1","filter","_temp","map","_temp2","_layers","t2","t3","value","t4","depthTest","t5","MapReferences","t6","t7","jsx","Map","_temp3","t8","MapProvider","jsxs","DeckGL","$el","document","querySelector","classList","remove","Layer","props","l","default","mapLibre","useMapLibre","useImperativeHandle","DeckGlOverlay","Symbol","for","GoogleMapsOverlay","interleaved","deck","useMap","setMap","finalize","useEffect","setProps","GoogleMaps","basemap","gmapsProps","undefined","apiKey","APIProviderProps","_gmapsProps","bb0","dragPan","doubleClickZoom","scrollZoom","_controller","_controller_0","mappingGmapsToDeck","newViewState","current","_deck","viewState","_viewState","latitude","longitude","zoom","pitch","bearing","width","height","interactionState","isZooming","handleViewStateChange","initialViewState","lat","lng","t9","t10","t11","t12","t13","t14","props_0","props_1","t15","t16","t17","t18","t19","t20","t21","t22","t23","APIProvider","detail","center","heading","tilt","gmaps","DeckGLComponent","isLoaded","setLoaded","useState","isGmaps","e","index","state","loaded","i","handleLoad","isAllLoaded","every","loaded_0","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","options","deepmerge","defaultArrayMerge","target","source","element","getMergeFunction","key","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","createMapSlice","initProps","defaultProps","reduce","acc","curr","set","get","maps","setBasemap","currentType","newType","setLoad","getOverlayInstance","getDeckInstance","getViewState","getViewports","rect","getViewport","getBounds","bounds","store","newBounds","WebMercatorViewport","fitBounds","boundsOptions","viewStateOptions","addLayers","Set","removeLayers","layer","includes","setController","currentController","newController","createAreLayersLoaded","areLayersLoaded","setLayersLoad","createViewStateSlice","initialViewStates","viewStates","viewports","updateViewPort","vp","setViewState","setInitialViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","flyTo","finalViewState","loadInitialViewState","resetViewState","createSpatialFilterSlice","spatialFilter","setSpatialFilter","mapId","structuredClone","removeSpatialFilter","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","BasemapsControls","basemap_0","state_0","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","billboard","editHandlePointRadiusUnits","editHandlePointRadiusMinPixels","editHandlePointRadiusMaxPixels","editHandlePointStrokeWidth","getEditHandlePointRadius","stroked","filled","lineWidthUnits","getLineWidth","lineWidthMinPixels","DEFAULT_LASSO_TOOLS_COLORS","editing","border","fill","point","finished","DEFAULT_LASSO_TOOLS_PROPS","styles","colors","labels","mask","EXTENSION_FILTER","DataFilterExtension","filterSize","DEFAULT_MASK_LAYER_PROPS","operation","pickable","visible","extensions","filterRange","DEFAULT_LASSO_TOOLS_MODES","polygon","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","setLayer","_layer","extension","some","equals","push","legend","updateTriggers","removeLayer","EVENT_HANDLERS","RECOGNIZERS","multipan","Pan","threshold","direction","InputDirection","Vertical","pointers","pinch","Pinch","click","Tap","dblclick","taps","pan","useEventManager","layerId","store_0","eventManager","overlayInstance","getDiv","recognizers","eventName","RecognizerConstructor","defaultOptions","recognizeWith","requestFailure","recognizer","store_1","CustomEditableGeojsonLayer","EditableGeoJsonLayer","updateState","oldProps","context","changeFlags","_removeEventHandlers","_addEventHandlers","_getEventManager","eventHandler","_editableLayerState","eventType","on","priority","_eventManager","off","getLassoToolsLayer","getLayerProps","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","useMemo","serialize","label","handleModeSelected","useCallback","getMaskValues","convert","configureMeasurements","convertArea","area","validateUnitForAreaConversion","unit","CONVERSIONS_UNITS_FROM_LINEAR_TO_AREA","validUnits","join","convertMetersTo","distance","dimension","unitFrom","CONVERSIONS_UNITS","MapMeasurementUnit","meter","unitTo","from","to","CONVERSIONS_UNITS_AREA","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","customFormatter","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","result","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","latestClickSequence","polygonCoordinates","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","updateTooltip","centroid","geometry","handlePointerMove","tentativeGuide","getTentativeGuide","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitArea","squareMeter","squareKilometer","squareMile","squareFeet","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","_temp4","finished_0","state_10","_setLocale","_temp5","locale_0","state_12","_setInstance","_temp6","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","ModeClass","enable","MeasurementTools","previousController","l_0","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","clearInterval","setTimeout","onAfterRender","handleAfterRender","_onDragEnd","onDragEnd","handleDragEnd","__global__","global","__globalThis__","F","globalThis","exports","g","support","isDataView","obj","viewClasses","isArrayBufferView","normalizeName","name","normalizeValue","iteratorFor","items","iterator","Headers","headers","header","oldValue","thisArg","consumed","body","fileReaderReady","reader","resolve","reject","readBlobAsArrayBuffer","blob","promise","readBlobAsText","match","encoding","readArrayBufferAsText","buf","view","chars","bufferClone","Body","rejected","isConsumed","decode","methods","normalizeMethod","method","upcased","Request","input","ctrl","reParamSearch","reQueryString","form","bytes","split","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","error","Response","bodyInit","response","redirectStatuses","status","message","fetch","init","request","xhr","abortXhr","fixUrl","names","ctx","module","h","j","J","post","useSourceStore","devtools","sources","filters","setSource","widgetClient","widgets","destroy","previousSource","newSource","apiBaseUrl","DEFAULT_CARTO_API_URL","clientId","DEFAULT_CLIENT_ID","apiVersion","DEFAULT_CARTO_API_VERSION","getWidgetSource","removeSource","setFilters","newFilters","currentFilters","addFilter","removeFilters","column","owner","removeFilter","invalidateSourcesCache","ids","timeout","maxAge","useSource","useFilters","useSourceWithFilters","getFilterValues","getSpatialDataFallback","fallback","spatialDataType","spatialDataColumn","query","WidgetQuerySource","accessToken","sqlQuery","table","WidgetTableSource","tableName","tileset","spatialDataBounds","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","option","useFiltersMerged","sourceId","additionalFilter","computedFilters","useWidgetModel","widgetModel","RELEVANT_HEADERS","getRelevantHeaders","entries","fromEntries","toLowerCase","JSON","stringify","useCommonModel","widgetProps","mergedFilters","queryKey","queryParameters","relevantHeaders","useCategories","useQueryProps","signal","getCategories","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","clientID","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","toReversed","onChangeVisibility","onChangeRowCollapse","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","setError","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","canvas","createElement","getContext","_overlayInstance","getRenderingType","html2canvas","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","staticSpatialFilter","useStaticSpatialFilter","viewport","createViewportSpatialFilter","_values","multiPolygon","value_0","flatMap","geom","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","cur","formatter","valueTransformed","columnName","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","ZoomControls","zoom_0","getQueryStats","baseUrl","connection","attribute","fetcherOptions","other","params","statsUrl","executeFetch","RequestMethods","q","getTableStats","useStats","getQueryFunction","select","startsWith","connectionName","getStatsFromTileset","tileJson","vectorTilesetSource","tilestats","attributes","columnStats","p"],"mappings":"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","x_google_ignoreList":[7,37]}