@carto/ps-react-maps 3.0.0 → 3.0.1
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 +94 -91
- package/dist/index.js.map +1 -1
- package/dist/types/common/common.d.ts +1 -1
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/common/lasso-tools.d.ts +11 -8
- package/dist/types/common/measurement-tools.d.ts +1 -2
- package/dist/types/editable/lasso-tools/const.d.ts +2 -1
- package/dist/types/editable/lasso-tools/provider/types.d.ts +1 -1
- package/dist/types/editable/lasso-tools/types.d.ts +3 -4
- package/dist/types/editable/measurement-tools/types.d.ts +2 -4
- package/dist/types/utils/mapping-meridian.d.ts +1 -14
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/deckgl.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/providers/map/const.ts","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/map.tsx","../src/providers/sources/const.ts","../src/providers/sources/store.ts","../src/models/use-widget-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram..tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport { DeckGL } from '@deck.gl/react'\nimport {\n Map as MapLibre,\n MapProvider,\n useMap as useMapLibre,\n} from 'react-map-gl/maplibre'\nimport {\n APIProvider,\n Map as Gmaps,\n limitTiltRange,\n useMap as useMapGmaps,\n} from '@vis.gl/react-google-maps'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from './const'\nimport type { DeckGLComponentProps } from './types'\nimport { getCursorDefault, getTooltipDefault } from './helpers'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n parameters,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onResize,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const handleResize = useCallback(\n (props: { width: number; height: number }) => {\n onResize?.(props)\n },\n [onResize],\n )\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const handleViewStateChange = useCallback(\n (state: ViewStateChangeParameters<MapViewState>) => {\n const newState = !isGmaps\n ? state\n : {\n ...state,\n viewState: limitTiltRange(state) as MapViewState,\n }\n onViewStateChange(newState)\n },\n [isGmaps, onViewStateChange],\n )\n\n const handleLoad = useCallback((e: { type: 'deckgl' | 'load' }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? true : loaded)),\n )\n }, [])\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n handleLoad({\n type: 'deckgl',\n })\n }\n onResize={handleResize}\n onViewStateChange={handleViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n {!isGmaps ? (\n <MapLibre\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n handleLoad({\n type: 'load',\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n ) : (\n <Gmaps\n mapTypeId={basemap}\n reuseMaps={true}\n renderingType='RASTER'\n {..._gmapsProps}\n defaultCenter={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n defaultZoom={rest.initialViewState?.zoom ?? 0}\n onTilesLoaded={() =>\n handleLoad({\n type: 'load',\n })\n }\n />\n )}\n </DeckGL>\n </div>\n </MapProvider>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n const gmaps = useMapGmaps()!\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre ?? gmaps\n }, [mapLibre, gmaps])\n\n return null\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\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<LassoToolsMode> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions,\n },\n legend: {\n ..._layer.legend,\n ...layer.legend,\n },\n }\n\n return { layers }\n }),\n}))\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n areLayersLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n basemap,\n },\n },\n })),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n setLayersLoad: (id, areLayersLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n areLayersLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n return store.maps[id]?.instanceRef?.current?.deck\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n if (curr.viewState) {\n acc.viewStates[curr.id] = curr.viewState\n acc.viewports[curr.id] = null\n }\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n ...viewState,\n },\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const viewport = store.getViewport(id)\n if (!viewport) return\n\n const newBounds = viewport?.fitBounds(bounds, options?.boundsOptions)\n\n const newViewState = {\n ...newBounds,\n ...options?.viewStateOptions,\n } as MapViewState\n\n store.setViewState(id, newViewState)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n const viewport = store.getViewport(id)\n\n if (!viewport) return\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\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,\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 setModeInstance(mapId, data.mode)\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((data) => setValue(mapId, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\n\nconst convert = configureMeasurements({\n length,\n})\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n) {\n return convert(distance)\n .from(CONVERSIONS_UNITS[MapMeasurementUnit.meter])\n .to(CONVERSIONS_UNITS[unit])\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n this.area = area({\n type: 'Polygon',\n coordinates: [this.getClickSequence()],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const position = centroid(tentativeGuide) as FeatureOf<Point>\n this.area = area(tentativeGuide)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import {\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'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const 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 ? 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 (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 { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsLayerProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps = {} as MeasurementToolsLayerProps['layerProps'],\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n }, [addLayers, clearLayerOnStart, mapId, removeLayers, enabled])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useLayers } from './use-layers'\nimport { sortLayers } from './utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const { basemap, instanceRef, overlayRef } = useMapStore(\n (state) => state.maps[id]!,\n )\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (newViewState.interactionState.isZooming) {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n }\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = instanceRef?.current?.deck?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [id, instanceRef, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","export const ApiBaseUrl = 'https://gcp-us-east1.api.carto.com'\n\nexport const clientID = 'ps'\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport { ApiBaseUrl, clientID } from './const'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n} from '@carto/api-client'\n\nexport const useSourceStore = create<SourceStore>((set) => ({\n sources: {},\n setSource: (id, source) =>\n set((state) => {\n const sources = { ...state.sources }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const newSource = {\n ...(sources[id] ?? {\n apiBaseUrl: ApiBaseUrl,\n clientId: clientID,\n }),\n ...source,\n } as Source\n\n const widgets: Source['widgets'] = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n }),\n}))\n\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.()\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-compiler/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'categories',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getCategories(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'features',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFeatures(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'formula',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFormula(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'histogram',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getHistogram(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'range',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getRange(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'scatter',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getScatter(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'table',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTable(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'time-series',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTimeSeries(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(layersId.map((id) => layers[id]).filter((l) => !!l))\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangRowCollapsed = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangRowCollapsed,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore(\n (state) => state.maps[mapId]?.areLayersLoaded,\n )!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/helpers'\nimport type { Polygon } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n return {\n spatialFilter: lassoToolsSpatialFilter ?? viewportSpatialFilter,\n lassoToolsSpatialFilter: lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables as T,\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 }\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.maps[mapId]!.areLayersLoaded)\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n })\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","DeckGLComponent","t0","$","_c","instanceRef","onLoad","onResize","overlayRef","parameters","rest","t1","t2","t3","t4","t5","t6","t7","t8","basemap","controller","id","layers","gmapsProps","getCursor","getTooltip","onViewStateChange","undefined","t9","t10","apiKey","APIProviderProps","_gmapsProps","_temp","t11","Symbol","for","isLoaded","setLoaded","useState","t12","every","_temp2","isAllLoaded","t13","props","handleResize","mapStyle","isGmaps","t14","t15","filter","_temp3","map","_temp4","_layers","t16","state","newState","viewState","limitTiltRange","handleViewStateChange","t17","e","index","state_0","loaded_0","i","loaded","handleLoad","t18","t19","useEffect","t20","t21","depthTest","t22","MapReferences","t23","jsx","Gmaps","lat","initialViewState","latitude","lng","longitude","zoom","MapLibre","_temp5","t24","MapProvider","jsxs","DeckGL","t25","APIProvider","$el","document","querySelector","classList","remove","Layer","props_0","l","default","mapLibre","useMapLibre","gmaps","useMapGmaps","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","key","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","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","value","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","reduce","acc","extension","some","equals","push","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","curr","areLayersLoaded","current","get","maps","setBasemap","setLoad","setLayersLoad","getOverlayInstance","store","getDeckInstance","deck","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","newViewState","boundsOptions","viewStateOptions","flyTo","target","finalViewState","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","getLassoToolsLayer","getLayerProps","EditableGeoJsonLayer","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","useMemo","serialize","label","handleModeSelected","useCallback","getMaskValues","convert","configureMeasurements","convertMetersTo","distance","unit","from","CONVERSIONS_UNITS","MapMeasurementUnit","meter","to","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","doubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","area","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","geometry","centroid","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","layerId","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","finished_0","state_10","_setLocale","locale_0","state_12","_setInstance","_temp6","modeInstance_0","state_14","_setPositions","_temp7","positions_0","state_16","_setUnit","_temp8","unit_0","clearLayer","enabled_1","toggleLayer","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","interactionState","isZooming","clearInterval","setTimeout","handleAfterRender","context","onAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","useSource","query","WidgetQuerySource","accessToken","sqlQuery","spatialDataType","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","split","option","useWidgetModel","sourceId","widgetModel","useCategories","widgetProps","useQueryProps","filters","getCategories","queryKey","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","onChangeVisibility","onChangRowCollapsed","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","overlayInstance","canvas","createElement","width","height","getContext","_overlayInstance","getRenderingType","html2canvas","getDiv","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","bb0","createViewportSpatialFilter","getBounds","_values","multiPolygon","value_0","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","header","body","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAMA,KAAe;AAAA,EAC1BC,SAAS;AAAA,EACTC,WAAW;AAAA,EACXC,QAAQ;AACV,GAKaC,KAAgB;AAAA,EAC3BC,YAAY;AAAA,EACZC,UAAU;AAAA,EACVC,SAAS;AACX,GAEaC,KAAkB;AAAA,EAC7B,CAACJ,GAAcE,QAAQ,GACrB;AAAA,EACF,CAACF,GAAcG,OAAO,GACpB;AAAA,EACF,CAACH,GAAcC,UAAU,GACvB;AACJ,GAEaI,KAAY;AAAA,EACvBC,UAAU;AAAA,EACVC,YAAY;AACd,GAEaC,KAOT;AAAA,EACF,CAACR,GAAcE,QAAQ,GAAG;AAAA,IACxBO,KAAKL,GAAgBJ,GAAcE,QAAQ;AAAA,IAC3CQ,MAAML,GAAUC;AAAAA,EAClB;AAAA,EACA,CAACN,GAAcG,OAAO,GAAG;AAAA,IACvBM,KAAKL,GAAgBJ,GAAcG,OAAO;AAAA,IAC1CO,MAAML,GAAUC;AAAAA,EAClB;AAAA,EACA,CAACN,GAAcC,UAAU,GAAG;AAAA,IAC1BQ,KAAKL,GAAgBJ,GAAcC,UAAU;AAAA,IAC7CS,MAAML,GAAUC;AAAAA,IAChBK,MAAM;AAAA,EACR;AAAA,EACA,CAACf,GAAaC,OAAO,GAAG;AAAA,IACtBa,MAAML,GAAUE;AAAAA,EAClB;AAAA,EACA,CAACX,GAAaE,SAAS,GAAG;AAAA,IACxBY,MAAML,GAAUE;AAAAA,EAClB;AAAA,EACA,CAACX,GAAaG,MAAM,GAAG;AAAA,IACrBW,MAAML,GAAUE;AAAAA,EAAAA;AAEpB;AC9DO,SAASK,GAAiB;AAAA,EAC/BC,YAAAA;AAAAA,EACAC,YAAAA;AAIF,GAAG;AACMD,SAAAA,IAAa,aAAaC,IAAa,YAAY;AAC5D;AAEO,SAASC,GAAkBC,GAAe;AAC3C,SAACA,EAAKC,OAEH;AAAA,IACLA,MAAM,qCAAqCD,EAAKC,IAAI;AAAA,IACpDC,OAAO;AAAA,MACLC,SAAS;AAAA,MACTC,YAAY;AAAA,IAAA;AAAA,EAEhB,IARuB;AASzB;ACEO,SAAAC,GAAAC,GAAA;;AAAAC,QAAAA,IAAAC,EAAA,EAAA;AAAAC,MAAAA,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC;AAAAf,EAAAA,SAAAD,KAAyB;AAAA,IAAAG,aAAAA;AAAAA,IAAAG,YAAAA;AAAAA,IAAAW,SAAAR;AAAAA,IAAAS,YAAAR;AAAAA,IAAAS,IAAAR;AAAAA,IAAAS,QAAAR;AAAAA,IAAAL,YAAAA;AAAAA,IAAAc,YAAAR;AAAAA,IAAAS,WAAAR;AAAAA,IAAAS,YAAAR;AAAAA,IAAAX,QAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAmB,mBAAAR;AAAAA,IAAA,GAAAR;AAAAA,EAAAA,IAAAR,GAeTC,OAAAD,GAAAC,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI,GAAAJ,OAAAK,GAAAL,OAAAM,GAAAN,OAAAO,GAAAP,OAAAQ,GAAAR,OAAAS,GAAAT,OAAAU,GAAAV,QAAAW,GAAAX,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAAe,MAAAb,IAAAF,EAAA,CAAA,GAAAG,IAAAH,EAAA,CAAA,GAAAI,IAAAJ,EAAA,CAAA,GAAAK,IAAAL,EAAA,CAAA,GAAAM,IAAAN,EAAA,CAAA,GAAAO,IAAAP,EAAA,CAAA,GAAAQ,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,GAAAU,IAAAV,EAAA,CAAA,GAAAW,IAAAX,EAAA,EAAA,GAAAY,IAAAZ,EAAA,EAAA,GAAAa,IAAAb,EAAA,EAAA,GAAAc,IAAAd,EAAA,EAAA,GAAAe,IAAAf,EAAA,EAAA;AAZrB,QAAAgB,IAAAR,MAAgCgB,SAAA/C,GAAAE,WAAhC6B,GACAS,IAAAR,MAAiBe,cAAjBf,GACAS,IAAAR,MAAkBc,SAAb,gBAALd;AAAkBe,MAAAA;AAAAzB,EAAAA,UAAAW,KAClBA,IAAAA,MAAWa,cAAXb,GAAWX,QAAAW,GAAAX,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAAX,QAAAmB,IAAAM;AAAWC,MAAAA;AAAA1B,EAAAA,UAAAY,KAECc,IAAAd,MAA6DY,SAAA;AAAA,IAAAG,QAAJ;AAAA,EAAA,IAAzDf,GAA6DZ,QAAAY,GAAAZ,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AAAA4B,MAAAA,GAAAC,GAAAF;AAAA3B,EAAAA,UAAA0B,KAA7D;AAAA,IAAAC,QAAAA;AAAAA,IAAAC,kBAAAA;AAAAA,IAAA,GAAAC;AAAAA,EAAAA,IAAAH,GAA6D1B,QAAA0B,GAAA1B,QAAA4B,GAAA5B,QAAA6B,GAAA7B,QAAA2B,MAAAC,IAAA5B,EAAA,EAAA,GAAA6B,IAAA7B,EAAA,EAAA,GAAA2B,IAAA3B,EAAA,EAAA;AACzEqB,QAAAA,IAAAR,MAA4BW,SAAAnC,KAA5BwB,GACAS,IAAAR,MAA8BU,SAAAhC,KAA9BsB,GAGAS,IAAAR,MAA8BS,SAAAM,KAA9Bf;AAA8BgB,MAAAA;AAAA,EAAA/B,EAAA,EAAA,MAAAgC,OAAAC,IAAA,2BAAA,KAGSF,IAAA,CAAA,IAAA,EAAA,GAAc/B,QAAA+B,KAAAA,IAAA/B,EAAA,EAAA;AAArD,QAAA,CAAAkC,GAAAC,CAAA,IAA8BC,GAASL,CAAc;AAACM,MAAAA;AAAArC,EAAAA,UAAAkC,KAClCA,IAAAA,EAAQI,MAAAC,EAAyB,GAACvC,QAAAkC,GAAAlC,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAAtD,QAAAwC,IAAoBH;AAAkCI,MAAAA;AAAAzC,EAAAA,UAAAI,KAGpDqC,IAAAC,CAAAA,OAAA;AACEtC,IAAAA,KAAAA,QAAAA,EAAWsC;AAAAA,EAAK,GACjB1C,QAAAI,GAAAJ,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAHH,QAAA2C,IAAqBF,GAOrB;AAAA,IAAAvD,KAAA0D;AAAAA,IAAAzD,MAAAA;AAAAA,EAAAA,IAAAF,GAA6C+B,CAAO,GACpD6B,IAAgB1D,MAAIL,GAAAE;AAAyB8D,MAAAA,IAAAC;AAAA/C,EAAAA,UAAAmB,KAIzC4B,KAAA5B,EAAM6B,OAAAC,EACoB,EAACC,IAAAC,EACyB,GAACnD,QAAAmB,GAAAnB,QAAA+C,MAAAA,KAAA/C,EAAA,EAAA,GAFrD+C,KAAAA;AAFJ,QAAAK,KAAgBN;AAMfO,MAAAA;AAAA,EAAArD,EAAA6C,EAAAA,MAAAA,KAAA7C,UAAAuB,KAGC8B,KAAAC,CAAAA,OAAA;AACEC,UAAAA,KAAkBV,IACT;AAAA,MAAA,GAEAS;AAAAA,MAAKE,WACGC,GAAeH,EAAK;AAAA,IAAiB,IAHlDA;AAKJ/B,IAAAA,EAAkBgC,EAAQ;AAAA,EAAC,GAC5BvD,QAAA6C,GAAA7C,QAAAuB,GAAAvB,QAAAqD,MAAAA,KAAArD,EAAA,EAAA;AATH,QAAA0D,KAA8BL;AAW7BM,MAAAA;AAAA,EAAA3D,EAAA,EAAA,MAAAgC,OAAAC,IAAA,2BAAA,KAE8B0B,IAAAC,CAAAA,OAAA;AAC7B,UAAAC,KAAcD,GAACzE,SAAU,WAAgB,IAAA;AAChC2E,IAAAA,EAAAA,CAAAA,OACPR,GAAKJ,IAAAa,CAAAA,IAAAC,OAAqBA,OAAMH,KAAeI,KAAAA,EAAO,CACxD;AAAA,EAAC,GACFjE,QAAA2D,KAAAA,IAAA3D,EAAA,EAAA;AALD,QAAAkE,KAAmBP;AAKbQ,MAAAA,IAAAC;AAAA,EAAApE,EAAAwC,EAAAA,MAAAA,KAAAxC,UAAAG,KAEIgE,KAAAA,MAAA;AACRhE,IAAAA,KAAAA,QAAAA,EAASqC;AAAAA,EAAW,GACnB4B,KAAA,CAAC5B,GAAarC,CAAM,GAACH,QAAAwC,GAAAxC,QAAAG,GAAAH,QAAAmE,IAAAnE,QAAAoE,OAAAD,KAAAnE,EAAA,EAAA,GAAAoE,KAAApE,EAAA,EAAA,IAFxBqE,EAAUF,IAEPC,EAAqB;AAACE,MAAAA;AAAA,EAAAtE,EAAA,EAAA,MAAAgC,OAAAC,IAAA,2BAAA,KAaPqC,KAAAA,MACNJ,GAAU;AAAA,IAAA/E,MACF;AAAA,EAAA,CACP,GAACa,QAAAsE,MAAAA,KAAAtE,EAAA,EAAA;AAAAuE,MAAAA;AAAAvE,EAAAA,UAAAM,KAIQiE,IAAA;AAAA,IAAAC,WAAA;AAAA,IAAA,GAGPlE;AAAAA,EAAU,GACdN,QAAAM,GAAAN,QAAAuE,KAAAA,IAAAvE,EAAA,EAAA;AAAAyE,MAAAA;AAAAzE,EAAAA,UAAAK,2BAGAqE,MAA0BrE,YAAAA,EAAc,CAAA,GAAAL,QAAAK,GAAAL,QAAAyE,KAAAA,IAAAzE,EAAA,EAAA;AAAA2E,MAAAA;AAAA,EAAA3E,EAAA6B,EAAAA,MAAAA,KAAA7B,EAAA,EAAA,MAAAgB,KAAAhB,EAAA6C,EAAAA,MAAAA,KAAA7C,EAAA,EAAA,MAAA4C,KAAA5C,UAAAO,SACvCsC,IAeC,gBAAA+B,EAAAC,IAAA,EACY7D,WAAMA,GACN,WAAA,IACG,eAAA,UAAQ,GAClBa,GACW,eAAA;AAAA,IAAAiD,OACRvE,KAAAA,EAAIwE,qBAAJxE,gBAAAA,GAAIyE,aAAgC;AAAA,IAAAC,OACpC1E,IAAAA,EAAIwE,qBAAJxE,gBAAAA,EAAI2E,cAAA;AAAA,EAAA,GAEE,eAAA3E,KAAAA,EAAIwE,qBAAJxE,gBAAAA,GAAI4E,YACF,qBACbjB,GAAU;AAAA,IAAA/E,MACF;AAAA,EACP,CAAA,GAGN,IA9BE,gBAAAyF,EAAAQ,IAAA,EACY,WAAA,IACDxC,UAAAA,GACF,cACNsB,GAAU;AAAA,IAAA/E,MACF;AAAA,EAAA,CACP,GAEO,UAAAkG,GAAAA,CAGT,GAmBJrF,QAAA6B,GAAA7B,QAAAgB,GAAAhB,QAAA6C,GAAA7C,QAAA4C,GAAA5C,QAAAO,GAAAP,QAAA2E,KAAAA,IAAA3E,EAAA,EAAA;AAAAsF,MAAAA;AAAAtF,EAAAA,UAAAoD,MAAApD,EAAAiB,EAAAA,MAAAA,KAAAjB,EAAA,EAAA,MAAAqB,KAAArB,UAAAsB,KAAAtB,EAAA2C,EAAAA,MAAAA,KAAA3C,EAAA0D,EAAAA,MAAAA,MAAA1D,EAAA,EAAA,MAAAkB,KAAAlB,UAAAE,KAAAF,EAAAO,EAAAA,MAAAA,KAAAP,EAAA,EAAA,MAAAuE,KAAAvE,UAAAyE,KAAAzE,EAAA,EAAA,MAAA2E,2BAvDNY,IACC,EAAA,UAAA,gBAAAX,EAwDM,OAxDS,EAAA,WAAA,cACb,UAAC,gBAAAY,GAAAC,IAAA,EACaxE,YAAAA,GACRC,IAAAA,GACChB,KAAUA,GACPkD,QAAMA,IACH/B,WAAAA,GACCC,YAAAA,GACJ,QAAAgD,IAKE3B,UAAWA,GACFe,uBACP,YAAAa,MAKRhE,GAEJkE,UAAAA;AAAAA,IAAAA;AAAAA,IACCE;AAAAA,EAAAA,EAgCH,CAAA,EACF,CAAA,GACF,GAAc3E,QAAAoD,IAAApD,QAAAiB,GAAAjB,QAAAqB,GAAArB,QAAAsB,GAAAtB,QAAA2C,GAAA3C,QAAA0D,IAAA1D,QAAAkB,GAAAlB,QAAAE,GAAAF,QAAAO,GAAAP,QAAAuE,GAAAvE,QAAAyE,GAAAzE,QAAA2E,GAAA3E,QAAAsF,KAAAA,IAAAtF,EAAA,EAAA;AAAA0F,MAAAA;AAAA1F,SAAAA,EAAA4B,EAAAA,MAAAA,KAAA5B,UAAA2B,KAAA3B,EAAA,EAAA,MAAAsF,KA3DhBI,KAAC,gBAAAd,EAAAe,IAAA,EAAoBhE,QAAAA,GAAYC,GAAAA,GAC/B0D,UA2DFA,GAAA,GAActF,QAAA4B,GAAA5B,QAAA2B,GAAA3B,QAAAsF,GAAAtF,QAAA0F,MAAAA,KAAA1F,EAAA,EAAA,GA5Dd0F;AA4Dc;AA1HX,SAAAL,KAAA;AAiGWO,QAAAA,IAAYC,SAAAC,cAAuB,0BAA0B;AAC1DC,EAAAA,KAAAA,QAAAA,EAAAA,UAAAC,OAAmB;AAAyB;AAlG1D,SAAA7C,GAAApD,GAAA;AAiCO,QAAA;AAAA,IAAAZ,MAAA8G;AAAAA,IAAAvD,OAAAwD;AAAAA,EAAAA,IAAAnG;AAA+BkG,SAAAA,IAAAA,EAAOvD,CAAK;AAAA;AAjClD,SAAAO,GAAAkD,GAAA;AAgCkBA,SAAAA,CAAAA,EAAAA,KAAAA,QAAAA,EAAChH;AAAA;AAhCnB,SAAAoD,GAAA0B,GAAA;AAiB0CA,SAAAA;AAAM;AAjBhD,SAAAnC,KAAA;AAAA,SAAA;AAAA;AA8HP,SAAA4C,GAAA3E,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAuB;AAAA,IAAAI,YAAAA;AAAAA,EAAAA,IAAAN,GAKrB;AAAA,IAAAqG,SAAAC;AAAAA,MAA8BC,GAAY,GAC1CC,IAAcC,GAAY;AAAEhG,MAAAA,GAAAC;AAAA,SAAAT,EAAAuG,CAAAA,MAAAA,KAAAvG,SAAAqG,KAEI7F,IAAAA,MACvB6F,KAAYE,GAClB9F,IAAA,CAAC4F,GAAUE,CAAK,GAACvG,OAAAuG,GAAAvG,OAAAqG,GAAArG,OAAAQ,GAAAR,OAAAS,MAAAD,IAAAR,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA,IAFAK,GAAAA,GAAYG,GAE7BC,CAAiB,GAAC;AAAA;AChKhB,MAAMgG,IAAW;AAAA,EACtBC,YAAY;AAAA,EACZC,sBAAsB;AAAA,EACtBC,wBAAwB;AAAA,EACxBC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,aAAa;AACf;ACEO,MAAMC,WAAgCC,GAAc;AAAA,EACzDC,cAAc;AACZ,UAAM,CAAC,IAAIC,MAAiB,IAAIC,GAAY,CAAA,CAAC;AAAA,EAAA;AAAA,EAGtCC,YACPC,GACA5E,GACM;AACA2E,UAAAA,YAAYC,GAAO5E,CAAK,GAC1B4E,EAAMC,QAAQ,YAChB,KAAKC,mBAAmB,GACxB9E,EAAM+E,OAAO;AAAA,MACXC,aAAahF,EAAMiF;AAAAA,MACnBC,UAAUnB,EAASC;AAAAA,MACnBmB,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EACH;AAEJ;ACjBO,MAAMC,KAA2B,cAC3BC,KAAoB,aAEpBC,KAAkC;AAAA,EAC7C9G,IAAI4G;AAAAA,EACJG,WAAW;AAAA,EACXC,4BAA4B;AAAA,EAC5BC,gCAAgC;AAAA,EAChCC,gCAAgC;AAAA,EAChCC,4BAA4B;AAAA,EAC5BC,0BAA0B;AAAA,EAC1BC,SAAS;AAAA,EACTC,QAAQ;AAAA,EACRC,gBAAgB;AAAA,EAChBC,cAAc;AAAA,EACdC,oBAAoB;AACtB,GAEaC,KACX;AAAA,EACEC,SAAS;AAAA,IACPC,QAAQ,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,IACzBC,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI;AAAA,IACxBC,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC5B;AAAA,EACAC,UAAU;AAAA,IACRH,QAAQ,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,IAC1BC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC;AAAA,EAAA;AAE1B,GAEWG,KAAoD;AAAA,EAC/DC,QAAQ;AAAA,IACNC,QAAQ;AAAA,MACNP,SAASD,GAA2BC;AAAAA,MACpCI,UAAUL,GAA2BK;AAAAA,IAAAA;AAAAA,EAEzC;AAAA,EACAI,QAAQ;AAAA,IACNC,MAAM;AAAA,EAAA;AAEV,GAEMC,KAAmB,CAAC,IAAIC,GAAoB;AAAA,EAAEC,YAAY;AAAE,CAAC,CAAC,GAEvDC,KAA2B;AAAA,EACtCxI,IAAI6G;AAAAA,EACJ4B,WAAW;AAAA,EACXC,UAAU;AAAA,EACVC,SAAS;AAAA,EACTC,YAAYP;AAAAA,EACZQ,aAAa,CAAC,GAAG,CAAC;AACpB,GAEaC,KAA6D;AAAA,EACxEC,SAAS;AAAA,IACPC,OAAO;AAAA,IACPC,MAAMC;AAAAA,EACR;AAAA,EACAC,WAAW;AAAA,IACTH,OAAO;AAAA,IACPC,MAAMG;AAAAA,EACR;AAAA,EACAC,QAAQ;AAAA,IACNL,OAAO;AAAA,IACPC,MAAMK;AAAAA,EACR;AAAA,EACAC,OAAO;AAAA,IACLP,OAAO;AAAA,IACPC,MAAMO;AAAAA,EACR;AAAA,EACAC,MAAM;AAAA,IACJT,OAAO;AAAA,IACPC,MAAMnD;AAAAA,EAAAA;AAEV,GClFa4D,KAAgBC,GAAoBC,CAASA,OAAA;AAAA,EACxD3J,QAAQ,CAAC;AAAA,EACT4J,UAAUA,CAAC7J,GAAI8J,MACbF,EAAKxH,CAAUA,MAAA;;AACb,UAAMnC,IAAS;AAAA,MAAE,GAAGmC,EAAMnC;AAAAA,IAAO;AAEjC,QAAI,CAAC6J;AACH,oBAAO7J,EAAOD,CAAE,GACT;AAAA,QAAEC,QAAAA;AAAAA,MAAO;AAGZ8J,UAAAA,IAAS9J,EAAOD,CAAE,KAAK;AAAA,MAAE/B,MAAM;AAAA,MAAMuD,OAAO,CAAA;AAAA,IAAG,GAE/CoH,IAAa,CACjB,GAAImB,EAAOvI,MAAMoH,cAAc,CAAA,GAC/B,KAAIkB,IAAAA,EAAMtI,UAANsI,gBAAAA,EAAalB,eAAc,CAAG,CAAA,EAClCoB,OAAO,CAACC,GAAKC,OACRD,EAAIE,KAAMzH,CAAAA,MAAMA,EAAE0H,OAAOF,CAAS,CAAC,KACtCD,EAAII,KAAKH,CAAS,GAEbD,IACN,EAAsB;AAEzBhK,WAAAA,EAAOD,CAAE,IAAI;AAAA,MACX,GAAG+J;AAAAA,MACH,GAAGD;AAAAA,MACHtI,OAAO;AAAA,QACLxB,IAAAA;AAAAA,QACA,GAAG+J,EAAOvI;AAAAA,QACV,GAAGsI,EAAMtI;AAAAA,QACToH,YAAAA;AAAAA,MACF;AAAA,MACA0B,QAAQ;AAAA,QACN,GAAGP,EAAOO;AAAAA,QACV,GAAGR,EAAMQ;AAAAA,MAAAA;AAAAA,IAEb,GAEO;AAAA,MAAErK,QAAAA;AAAAA,IAAO;AAAA,EACjB,CAAA;AACL,EAAE,GC1CWsK,KAGT;AAAA,EACFC,oBAAoB;AAAA,EACpBC,wBAAwB,IAAIC,GAAkB;AAAA,IAC5CC,OAAO;AAAA,EACR,CAAA;AACH,GCEMC,KAAiBA,CAACC,MAA0C;AAChE,QAAMC,IAAeD,EAAUb,OAC7B,CAACC,GAAKc,MAAS;AACP,UAAA;AAAA,MAAE/K,IAAAA;AAAAA,MAAIF,SAAAA;AAAAA,IAAAA,IAAYiL;AACxBd,WAAAA,EAAIjK,CAAE,IAAI;AAAA,MACRgB,UAAU;AAAA,MACVgK,iBAAiB;AAAA,MACjBlL,SAAAA;AAAAA,MACAd,aAAa;AAAA,QACXiM,SAAS,CAAA;AAAA,MACX;AAAA,MACA9L,YAAY;AAAA,QACV8L,SAAS;AAAA,MACX;AAAA,MACAhL,QAAQ8K,EAAK9K,UAAU,CAAA;AAAA,IACzB,GACOgK;AAAAA,EACT,GACA,EACF;AAEQ,SAAA,CAACL,GAAKsB,OAAS;AAAA,IACrBC,MAAML;AAAAA,IACNM,YAAYA,CAACpL,GAAIF,MACf8J,EAAKxH,CAAWA,OAAA;AAAA,MACd+I,MAAM;AAAA,QACJ,GAAG/I,EAAM+I;AAAAA,QACT,CAACnL,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAM+I,KAAKnL,CAAE;AAAA,UAChBF,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJuL,SAASA,CAACrL,GAAIgB,MACZ4I,EAAKxH,CAAWA,OAAA;AAAA,MACd+I,MAAM;AAAA,QACJ,GAAG/I,EAAM+I;AAAAA,QACT,CAACnL,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAM+I,KAAKnL,CAAE;AAAA,UAChBgB,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJsK,eAAeA,CAACtL,GAAIgL,MAClBpB,EAAKxH,CAAWA,OAAA;AAAA,MACd+I,MAAM;AAAA,QACJ,GAAG/I,EAAM+I;AAAAA,QACT,CAACnL,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAM+I,KAAKnL,CAAE;AAAA,UAChBgL,iBAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJO,oBAAqBvL,CAAOA,MAAA;;AAE1B,cAAOwL,KAAAA,IADON,EAAI,EACLC,KAAKnL,CAAE,MAAbwL,gBAAAA,EAAgBrM,eAAhBqM,gBAAAA,EAA4BP;AAAAA,IACrC;AAAA,IACAQ,iBAAkBzL,CAAOA,MAAA;;AAEvB,cAAOwL,KAAAA,KAAAA,IADON,EAAI,EACLC,KAAKnL,CAAE,MAAbwL,gBAAAA,EAAgBxM,gBAAhBwM,gBAAAA,EAA6BP,YAA7BO,gBAAAA,EAAsCE;AAAAA,IAC/C;AAAA,IACAC,cAAe3L,CAAOA,MAAA;AAEd0L,YAAAA,IADQR,EAAI,EACCO,gBAAgBzL,CAAE;AAErC,aAAO0L,KAAAA,gBAAAA,EAAMpJ;AAAAA,IACf;AAAA,IACAsJ,cAAcA,CAAC5L,GAAI6L,MAAS;AAEpBH,YAAAA,IADQR,EAAI,EACCO,gBAAgBzL,CAAE;AAC9B0L,aAAAA,KAAAA,gBAAAA,EAAME,aAAaC;AAAAA,IAC5B;AAAA,IACAC,aAAaA,CAAC9L,GAAI2C,IAAQ,GAAGkJ,MAAS;;AAE9BH,YAAAA,IADQR,EAAI,EACCO,gBAAgBzL,CAAE;AACrC,cAAO0L,IAAAA,KAAAA,gBAAAA,EAAME,aAAaC,OAAnBH,gBAAAA,EAA2B/I;AAAAA,IACpC;AAAA,IACAoJ,WAAWA,CAAC/L,GAAIC,MACd2J,EAAKxH,CAAUA,MAAA;;AACb,YAAM+I,IAAO;AAAA,QAAE,GAAG/I,EAAM+I;AAAAA,MAAK,GACvBjJ,MAAUiJ,IAAAA,EAAKnL,CAAE,MAAPmL,gBAAAA,EAAUlL,WAAU,CAAE,GAEhC2J,wBAAUoC,IAAI,CAAC,GAAG9J,GAAS,GAAGjC,CAAM,CAAC;AAE3CkL,aAAAA,EAAKnL,CAAE,IAAI;AAAA,QACT,GAAGmL,EAAKnL,CAAE;AAAA,QACVC,QAAQ,CAAC,GAAG2J,CAAG;AAAA,MACjB,GACO;AAAA,QAAEuB,MAAAA;AAAAA,MAAK;AAAA,IAAA,CACf;AAAA,IACHc,cAAcA,CAACjM,GAAIC,MACjB2J,EAAKxH,CAAUA,MAAA;;AACb,YAAM+I,IAAO;AAAA,QAAE,GAAG/I,EAAM+I;AAAAA,MAAK,GACvBjJ,MAAUiJ,IAAAA,EAAKnL,CAAE,MAAPmL,gBAAAA,EAAUlL,WAAU,CAAE;AACtCkL,aAAAA,EAAKnL,CAAE,IAAI;AAAA,QACT,GAAGmL,EAAKnL,CAAE;AAAA,QACVC,QAAQiC,EAAQJ,OAAQgI,CAAAA,MAAU,CAAC7J,EAAOiM,SAASpC,CAAK,CAAC;AAAA,MAC3D,GACO;AAAA,QAAEqB,MAAAA;AAAAA,MAAK;AAAA,IACf,CAAA;AAAA,EAAA;AAEP,GAEMgB,KAAuBA,CAACtB,MAA0C;AACtE,QAAMC,IAAeD,EAAUb,OAC7B,CAACC,GAAKc,OACAA,EAAKzI,cACP2H,EAAImC,WAAWrB,EAAK/K,EAAE,IAAI+K,EAAKzI,WAC3B+J,EAAAA,UAAUtB,EAAK/K,EAAE,IAAI,OAEpBiK,IAET;AAAA,IACEmC,YAAY,CAAC;AAAA,IACbC,WAAW,CAAA;AAAA,EAAC,CAEhB;AAEQ,SAAA,CAACzC,GAAKsB,OAAS;AAAA,IACrBmB,WAAWvB,EAAauB;AAAAA,IACxBC,gBAAiBtM,CAAOA,MAAA;;AACtB,YAAMwL,IAAQN,EAAI;AAClB,UAAI,GAACM,IAAAA,EAAML,KAAKnL,CAAE,MAAbwL,QAAAA,EAAgBxK,UAAU;AAE/B,YAAMuL,IAAK,IAAIC,GAAoBhB,EAAMY,WAAWpM,CAAE,CAAE;AACxD4J,MAAAA,EAAKxH,CAAWA,OAAA;AAAA,QACdiK,WAAW;AAAA,UACT,GAAGjK,EAAMiK;AAAAA,UACT,CAACrM,CAAE,GAAGuM;AAAAA,QAAAA;AAAAA,MACR,EACA;AAAA,IACJ;AAAA,IACAH,YAAYtB,EAAasB;AAAAA,IACzBK,cAAcA,CAACzM,GAAIsC,MACjBsH,EAAKxH,CAAWA,OAAA;AAAA,MACdgK,YAAY;AAAA,QACV,GAAGhK,EAAMgK;AAAAA,QACT,CAACpM,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAMgK,WAAWpM,CAAE;AAAA,UACtB,GAAGsC;AAAAA,QAAAA;AAAAA,MACL;AAAA,IACF,EACA;AAAA,IACJoK,SAASA,CAAC1M,GAAIiE,MACZ2F,EAAKxH,CAAWA,OAAA;AAAA,MACdgK,YAAY;AAAA,QACV,GAAGhK,EAAMgK;AAAAA,QACT,CAACpM,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAMgK,WAAWpM,CAAE;AAAA,UACtBiE,MAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJ0I,YAAYA,CAAC3M,GAAI4M,MACfhD,EAAKxH,CAAWA,OAAA;AAAA,MACdgK,YAAY;AAAA,QACV,GAAGhK,EAAMgK;AAAAA,QACT,CAACpM,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAMgK,WAAWpM,CAAE;AAAA,UACtB4M,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,IACJC,YAAYA,CAAC7M,GAAI8M,MACflD,EAAKxH,CAAWA,OAAA;AAAA,MACdgK,YAAY;AAAA,QACV,GAAGhK,EAAMgK;AAAAA,QACT,CAACpM,CAAE,GAAG;AAAA,UACJ,GAAGoC,EAAMgK,WAAWpM,CAAE;AAAA,UACtB8M,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EAAA;AAER,GAEMC,KAAqB,CAACC,GAAG9B,OAAS;AAAA,EACtC+B,WAAWA,CAACjN,GAAIkN,GAAQC,MAAY;AAClC,UAAM3B,IAAQN,EAAI,GACZkC,IAAW5B,EAAMM,YAAY9L,CAAE;AACrC,QAAI,CAACoN,EAAU;AAIf,UAAMC,IAAe;AAAA,MACnB,GAHgBD,KAAAA,gBAAAA,EAAUH,UAAUC,GAAQC,KAAAA,gBAAAA,EAASG;AAAAA,MAIrD,GAAGH,KAAAA,gBAAAA,EAASI;AAAAA,IACd;AAEMd,IAAAA,EAAAA,aAAazM,GAAIqN,CAAY;AAAA,EACrC;AAAA,EACAG,OAAOA,CAACxN,GAAIyN,GAAQN,IAAU,CAAA,MAAO;AACnC,UAAM3B,IAAQN,EAAI;AAGlB,QAAI,CAFaM,EAAMM,YAAY9L,CAAE,EAEtB;AAEf,UAAMuN,IAAmB;AAAA,MACvB,GAAGhD;AAAAA,MACH,GAAG4C,KAAAA,gBAAAA,EAASI;AAAAA,IACd,GAGMG,IAAiB;AAAA,MACrB,GAAGD;AAAAA,MACH,GAAGF;AAAAA,IACL;AACMd,IAAAA,EAAAA,aAAazM,GAAI0N,CAAc;AAAA,EAAA;AAEzC,IAEaC,KAAiBA,CAAC9C,MACtB+C,GAAAA,EAAwB,IAAIC,OAC1B;AAAA,EACL,GAAGjD,GAAeC,CAAS,EAAE,GAAGgD,CAAI;AAAA,EACpC,GAAG1B,GAAqBtB,CAAS,EAAE,GAAGgD,CAAI;AAAA,EAC1C,GAAGd,GAAkB,GAAGc,CAAI;AAC9B,EACD,GC3NGC,KAAaC,GAAkC,EAAwB;AAEtE,SAAA1J,GAAAxF,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAqB;AAAA,IAAAiP,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAApP;AAGUS,MAAAA;AAAAR,EAAAA,SAAAmP,KACR3O,IAAAqO,GAAeM,CAAM,GAACnP,OAAAmP,GAAAnP,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAlD,QAAA,CAAAoP,CAAA,IAAmBhN,GAAS5B,CAAsB;AAACC,MAAAA;AAAA,SAAAT,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAoP,KAE5C3O,sBAAAuO,GAAA,UAAA,EAA4BI,OAAAA,GAAWF,UAAAA,GAAS,GAAsBlP,OAAAkP,GAAAlP,OAAAoP,GAAApP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAAtES;AAAsE;AAGxE,SAAA4O,EAAAC,GAAA;AACL5C,QAAAA,IAAc6C,GAAAP,EAAqB;AAAC,MAAA,CAC/BQ,OAAAC,KAAY/C,CAAK,EAACgD;AAAAC,UAAAA,IAAAA,MACL,iCAAiC;AAC5CC,SAAAA,GAASlD,GAAO4C,CAAQ;AAAC;;;;;;;;ACxBlC,MAAIO,IAAoB,SAA2B3F,GAAO;AACzD,WAAO4F,EAAgB5F,CAAK,KACxB,CAAC6F,EAAU7F,CAAK;AAAA,EACpB;AAED,WAAS4F,EAAgB5F,GAAO;AAC/B,WAAO,CAAC,CAACA,KAAS,OAAOA,KAAU;AAAA,EACpC;AAEA,WAAS6F,EAAU7F,GAAO;AACzB,QAAI8F,IAAc,OAAO,UAAU,SAAS,KAAK9F,CAAK;AAEtD,WAAO8F,MAAgB,qBACnBA,MAAgB,mBAChBC,EAAe/F,CAAK;AAAA,EACzB;AAGA,MAAIgG,IAAe,OAAO,UAAW,cAAc,OAAO,KACtDC,IAAqBD,IAAe,OAAO,IAAI,eAAe,IAAI;AAEtE,WAASD,EAAe/F,GAAO;AAC9B,WAAOA,EAAM,aAAaiG;AAAA,EAC3B;AAEA,WAASC,EAAYC,GAAK;AACzB,WAAO,MAAM,QAAQA,CAAG,IAAI,CAAA,IAAK,CAAA;AAAA,EAClC;AAEA,WAASC,EAA8BpG,GAAOmE,GAAS;AACtD,WAAQA,EAAQ,UAAU,MAASA,EAAQ,kBAAkBnE,CAAK,IAC/DqG,EAAUH,EAAYlG,CAAK,GAAGA,GAAOmE,CAAO,IAC5CnE;AAAA,EACJ;AAEA,WAASsG,EAAkB7B,GAAQ8B,GAAQpC,GAAS;AACnD,WAAOM,EAAO,OAAO8B,CAAM,EAAE,IAAI,SAASC,GAAS;AAClD,aAAOJ,EAA8BI,GAASrC,CAAO;AAAA,IACrD,CAAA;AAAA,EACF;AAEA,WAASsC,EAAiBpJ,GAAK8G,GAAS;AACvC,QAAI,CAACA,EAAQ;AACZ,aAAOkC;AAER,QAAIK,IAAcvC,EAAQ,YAAY9G,CAAG;AACzC,WAAO,OAAOqJ,KAAgB,aAAaA,IAAcL;AAAA,EAC1D;AAEA,WAASM,EAAgClC,GAAQ;AAChD,WAAO,OAAO,wBACX,OAAO,sBAAsBA,CAAM,EAAE,OAAO,SAASmC,GAAQ;AAC9D,aAAO,OAAO,qBAAqB,KAAKnC,GAAQmC,CAAM;AAAA,IACtD,CAAA,IACC,CAAA;AAAA,EACJ;AAEA,WAASC,EAAQpC,GAAQ;AACxB,WAAO,OAAO,KAAKA,CAAM,EAAE,OAAOkC,EAAgClC,CAAM,CAAC;AAAA,EAC1E;AAEA,WAASqC,EAAmBC,GAAQC,GAAU;AAC7C,QAAI;AACH,aAAOA,KAAYD;AAAA,IACnB,QAAU;AACV,aAAO;AAAA,IACT;AAAA,EACA;AAGA,WAASE,EAAiBxC,GAAQpH,GAAK;AACtC,WAAOyJ,EAAmBrC,GAAQpH,CAAG,KACjC,EAAE,OAAO,eAAe,KAAKoH,GAAQpH,CAAG,KACvC,OAAO,qBAAqB,KAAKoH,GAAQpH,CAAG;AAAA,EAClD;AAEA,WAAS6J,EAAYzC,GAAQ8B,GAAQpC,GAAS;AAC7C,QAAIgD,IAAc,CAAE;AACpB,WAAIhD,EAAQ,kBAAkBM,CAAM,KACnCoC,EAAQpC,CAAM,EAAE,QAAQ,SAASpH,GAAK;AACrC,MAAA8J,EAAY9J,CAAG,IAAI+I,EAA8B3B,EAAOpH,CAAG,GAAG8G,CAAO;AAAA,IACxE,CAAG,GAEF0C,EAAQN,CAAM,EAAE,QAAQ,SAASlJ,GAAK;AACrC,MAAI4J,EAAiBxC,GAAQpH,CAAG,MAI5ByJ,EAAmBrC,GAAQpH,CAAG,KAAK8G,EAAQ,kBAAkBoC,EAAOlJ,CAAG,CAAC,IAC3E8J,EAAY9J,CAAG,IAAIoJ,EAAiBpJ,GAAK8G,CAAO,EAAEM,EAAOpH,CAAG,GAAGkJ,EAAOlJ,CAAG,GAAG8G,CAAO,IAEnFgD,EAAY9J,CAAG,IAAI+I,EAA8BG,EAAOlJ,CAAG,GAAG8G,CAAO;AAAA,IAExE,CAAE,GACMgD;AAAA,EACR;AAEA,WAASd,EAAU5B,GAAQ8B,GAAQpC,GAAS;AAC3C,IAAAA,IAAUA,KAAW,CAAE,GACvBA,EAAQ,aAAaA,EAAQ,cAAcmC,GAC3CnC,EAAQ,oBAAoBA,EAAQ,qBAAqBwB,GAGzDxB,EAAQ,gCAAgCiC;AAExC,QAAIgB,IAAgB,MAAM,QAAQb,CAAM,GACpCc,IAAgB,MAAM,QAAQ5C,CAAM,GACpC6C,IAA4BF,MAAkBC;AAElD,WAAKC,IAEMF,IACHjD,EAAQ,WAAWM,GAAQ8B,GAAQpC,CAAO,IAE1C+C,EAAYzC,GAAQ8B,GAAQpC,CAAO,IAJnCiC,EAA8BG,GAAQpC,CAAO;AAAA,EAMtD;AAEA,EAAAkC,EAAU,MAAM,SAAsBkB,GAAOpD,GAAS;AACrD,QAAI,CAAC,MAAM,QAAQoD,CAAK;AACvB,YAAM,IAAI,MAAM,mCAAmC;AAGpD,WAAOA,EAAM,OAAO,SAASC,GAAMC,GAAM;AACxC,aAAOpB,EAAUmB,GAAMC,GAAMtD,CAAO;AAAA,IACtC,GAAI,CAAE,CAAA;AAAA,EACL;AAED,MAAIuD,IAAcrB;AAElB,SAAAsB,KAAiBD;;;;AC5HV,SAASE,GAAmB;AAAA,EACjC3H,MAAAA;AAAAA,EACA,GAAG6B;AACiB,GAAc;AAC5BtJ,QAAAA,IAAQqP,GAAc/F,CAAY;AAEjC,SAAA;AAAA,IACL7M,MAAM6S;AAAAA,IACNtP,OAAO;AAAA,MACL,GAAGA;AAAAA,MACHyH,MAAAA;AAAAA,IAAAA;AAAAA,EAEJ;AACF;AASA,SAAS4H,GAAc;AAAA,EACrBE,YAAAA;AAAAA,EACAxK,QAAAA;AAAAA,EACAyK,cAAAA;AAAAA,EACAC,cAAAA;AAAAA,EACAC,YAAAA;AACkC,GAAG;AAC/BC,QAAAA,IAAc9B,GAAU0B,GAAY;AAAA,IACxCK,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,MAKVC,yBAAyB;AAAA,IAC3B;AAAA,IACA9K,QAAAA;AAAAA,EAAAA,CACD,GAEK+K,IAAoBjC,GAAUvI,IAAiC;AAAA,IACnEyK,uBAAuBP;AAAAA,IACvBQ,uBAAuBP;AAAAA,IACvBD,cAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAQ,yBAAyBP,EAAWrJ;AAAAA,IACpC6J,gCAAgCR,EAAWS;AAAAA,IAC3CC,gBAAgBA,CAACnL,GAAyBoL,MACxCpL,EAAKqL,SAAS,CAAC,MAAMD,EAAQC,SAAS,CAAC;AAAA,EAAA,CAC1C;AAGMtQ,SADO6N,GAAUiC,GAAmBH,CAAW;AAExD;ACxDaY,MAAAA,KAAwBA,CACnClH,MAEO+C,GAAAA,EAAgChE,CAAQA,OAuBtC;AAAA,EACLnD,MAvBmBoE,EAAUb,OAC7B,CAACC,GAAKc,MAAS;AACP,UAAA;AAAA,MACJiH,SAAAA,IAAU;AAAA,MACVC,OAAAA;AAAAA,MACAC,cAAAA;AAAAA,MACAC,OAAAA,IAAQrJ;AAAAA,MACRsJ,cAAAA,IAAetJ,GAA0BC,QAAQC;AAAAA,MACjDiF,QAAAA,IAAS,CAAA;AAAA,IAAC,IACRlD;AACJd,WAAAA,EAAIgI,CAAK,IAAI;AAAA,MACXD,SAAAA;AAAAA,MACAE,cAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,cAAAA;AAAAA,MACAnE,QAAAA;AAAAA,IACF,GACOhE;AAAAA,EACT,GACA,EACF;AAAA,EAIEoI,YAAYA,CAACJ,GAAOD,MAAY;AAC9BpI,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdqE,MAAM;AAAA,QACJ,GAAGrE,EAAMqE;AAAAA,QACT,CAACwL,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMqE,KAAKwL,CAAK;AAAA,UACnBD,SAAAA;AAAAA,UACArJ,SAASqJ;AAAAA,QAAAA;AAAAA,MACX;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAM,UAAUA,CAACL,GAAOjS,GAAIgJ,MAAU;AAC9BY,IAAAA,EAAKxH,CAAUA,MAAA;AACb,YAAM6L,IAAS;AAAA,QAAE,GAAG7L,EAAMqE,KAAKwL,CAAK,EAAGhE;AAAAA,MAAO,GAExCsE,IACJtE,EAAOjO,CAAE,KACR;AAAA,QACC/B,MAAM;AAAA,MACR;AAEFgQ,aAAAA,EAAOjO,CAAE,IAAI;AAAA,QACX,GAAGuS;AAAAA,QACH,GAAGvJ;AAAAA,QACHhJ,IAAAA;AAAAA,MACF,GAEKgJ,KACH,OAAOiF,EAAOjO,CAAE,GAGX;AAAA,QACLyG,MAAM;AAAA,UACJ,GAAGrE,EAAMqE;AAAAA,UACT,CAACwL,CAAK,GAAG;AAAA,YACP,GAAG7P,EAAMqE,KAAKwL,CAAK;AAAA,YACnBhE,QAAAA;AAAAA,UAAAA;AAAAA,QACF;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACAuE,eAAeA,CAACP,GAAOQ,GAAS9J,MAAY;AAC1CiB,IAAAA,EAAKxH,CAAUA,MAAA;AACb,YAAM6L,IAAS;AAAA,QAAE,GAAG7L,EAAMqE,KAAKwL,CAAK,EAAGhE;AAAAA,MAAO,GACxCsE,IACJtE,EAAOwE,CAAO,KAAM,CAAC;AACvBF,aAAAA,EAAOG,WAAW/J,UAAUA,GAErB;AAAA,QACLlC,MAAM;AAAA,UACJ,GAAGrE,EAAMqE;AAAAA,UACT,CAACwL,CAAK,GAAG;AAAA,YACP,GAAG7P,EAAMqE,KAAKwL,CAAK;AAAA,YACnBhE,QAAQ;AAAA,cACN,GAAGA;AAAAA,cACH,CAACwE,CAAO,GAAGF;AAAAA,YAAAA;AAAAA,UACb;AAAA,QACF;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,EACH;AAAA,EACAI,iBAAiBA,CAACV,GAAOhJ,MAAS;AAChCW,IAAAA,EAAKxH,CAAUA,OACN;AAAA,MACLqE,MAAM;AAAA,QACJ,GAAGrE,EAAMqE;AAAAA,QACT,CAACwL,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMqE,KAAKwL,CAAK;AAAA,UACnBG,cAAcnJ;AAAAA,QAAAA;AAAAA,MAChB;AAAA,IAEJ,EACD;AAAA,EACH;AAAA,EACA2J,iBAAiBA,CAACX,GAAOC,MAAiB;AACxCtI,IAAAA,EAAKxH,CAAUA,OACN;AAAA,MACLqE,MAAM;AAAA,QACJ,GAAGrE,EAAMqE;AAAAA,QACT,CAACwL,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMqE,KAAKwL,CAAK;AAAA,UACnBC,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IAEJ,EACD;AAAA,EAAA;AAEL,EACD,GCjHGW,KAAoB9E,GACxB,EACF;AAEO,SAAA+E,GAAAjU,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAA4B;AAAA,IAAAiP,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAApP;AAGUS,MAAAA;AAAAR,EAAAA,SAAAmP,KACf3O,IAAAA,MAAMyS,GAAsB9D,CAAM,GAACnP,OAAAmP,GAAAnP,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAA/D,QAAA,CAAAoP,CAAA,IAAmBhN,GAAS5B,CAAmC;AAACC,MAAAA;AAAA,SAAAT,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAoP,KAG9D3O,sBAAAsT,GAAA,UAAA,EAAmC3E,OAAAA,GAChCF,UAAAA,GACH,GAA6BlP,OAAAkP,GAAAlP,OAAAoP,GAAApP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAF7BS;AAE6B;AAI1B,SAAAwT,EAAA3E,GAAA;AAGL5C,QAAAA,IAAc6C,GAAAwE,EAA4B;AAAC,MAAA,CACtCvE,OAAAC,KAAY/C,CAAK,EAACgD;AAAAC,UAAAA,IAAAA,MACL,wCAAwC;AAEnDC,SAAAA,GAASlD,GAAO4C,CAAQ;AAAC;AC3B3B,SAAS4E,GAAmB;AAAA,EACjCf,OAAAA;AAAAA,EACAjE,UAAAA;AACsB,GAAG;AACzB,QAAMgE,IAAUe,EAAoB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB4P;AAAAA,GAAO,GAClEK,IAAaU,EAAoB3Q,CAAUA,MAAAA,EAAMiQ,UAAU,GAC3DpE,IAAS8E,EAAoB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB6L;AAAAA,GAAM,GAChEqE,IAAWS,EAAoB3Q,CAAUA,MAAAA,EAAMkQ,QAAQ,GACvDE,IAAgBO,EAAoB3Q,CAAUA,MAAAA,EAAMoQ,aAAa,GACjEJ,IAAeW,EAClB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmBgQ;AAAAA,GAChC,GACMO,IAAkBI,EAAoB3Q,CAAUA,MAAAA,EAAMuQ,eAAe,GACrER,IAAQY,EAAoB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB+P;AAAAA,GAAK,GAC9DS,IAAkBG,EAAoB3Q,CAAUA,MAAAA,EAAMwQ,eAAe;AAE3EzP,EAAAA,EAAU,MAAM;AACRsD,UAAAA,IAAO0L,EAAMC,CAAY;AAE/B,IAAI3L,KAAQuL,KACMC,EAAAA,GAAOxL,EAAKwC,IAAI;AAAA,EAClC,GACC,CAAC+I,GAASC,GAAOG,GAAcD,GAAOS,CAAe,CAAC;AAEnD,QAAA;AAAA,IACJxK;AAAAA;AAAAA,EACA,IACE6K,GAAQ,MAAM;AACVC,UAAAA,IAAYA,CAAClK,MAA2B;;AAAA;AAAA,QAC5ChJ,IAAIgJ,EAAMhJ;AAAAA,QACV2I,SAASK,EAAM0J,WAAW/J;AAAAA,QAC1BwK,QAAOnK,IAAAA,EAAM0J,eAAN1J,gBAAAA,EAAkBmK;AAAAA,MAAAA;AAAAA;AAKpB,WAAA;AAAA,MAHS7E,OAAOL,OAAOA,CAAM,EACfnM,OAAQkH,CAAAA,MAAUA,EAAM/K,SAAS,MAAM,EAAE+D,IAAIkR,CAAS;AAAA;AAAA,IAIzE;AAAA,EAAA,GAED,CAACjF,CAAM,CAAC,GAELmF,IAAqBC,EACzB,CAACpK,MAA0C;AAC9BgJ,IAAAA,EAAAA,GAAO,CAAC,CAAChJ,CAAI,GACxB0J,EAAgBV,GAAOhJ,CAAI;AAAA,EAE7B,GAAA,CAACgJ,GAAOI,GAAYM,CAAe,CACrC;AAEA,SAAO3E,EAAS;AAAA,IACdiE,OAAAA;AAAAA,IACAD,SAAAA;AAAAA,IACAG,OAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAnE,QAAQ;AAAA,MACN7F,MAAAA;AAAAA;AAAAA,IAEF;AAAA,IACAkK,UAAUe,EAAa5M,CAAAA,MAAS6L,EAASL,GAAOxL,CAAI,GAAG,CAACwL,GAAOK,CAAQ,CAAC;AAAA,IACxED,YAAYgB,EACTrB,CAAAA,MAAYK,EAAWJ,GAAOD,CAAO,GACtC,CAACC,GAAOI,CAAU,CACpB;AAAA,IACAG,eAAea,EACb,CAACZ,GAAS9J,MAAY6J,EAAcP,GAAOQ,GAAS9J,CAAO,GAC3D,CAACsJ,GAAOO,CAAa,CACvB;AAAA,IACAG,iBAAiBS;AAAAA,EAAAA,CAClB;AACH;AC5EO,SAASE,GAAc;AAAA,EAC5BrF,QAAAA;AAGF,GAAG;AACMK,SAAAA,OAAOL,OAAOA,KAAU,EAAE,EAAEnM,OAAQkH,CAAAA,MAAUA,EAAM/K,SAAS,MAAM;AAC5E;ACOA,MAAMsV,KAAUC,GAAsB;AAAA,EACpChF,QAAAA;AACF,CAAC;AAEeiF,SAAAA,GACdC,GACAC,GACA;AACA,SAAOJ,GAAQG,CAAQ,EACpBE,KAAKC,GAAkBC,EAAmBC,KAAK,CAAC,EAChDC,GAAGH,GAAkBF,CAAI,CAAC;AAC/B;AAEA,MAAMM,KAA4B;AAE3B,SAASC,GAA8B;AAAA,EAC5CC,QAAAA;AAAAA,EACAR,MAAAA;AAAAA,EACAS,QAAAA;AAAAA,EACAjH,SAAS;AAAA,IAAEkH,iBAAAA;AAAAA,IAAiB,GAAGC;AAAAA,EAAAA,IAAgB;AAAA,IAC7CD,iBAAiBJ;AAAAA,EAAAA;AAOrB,GAAG;AACKM,QAAAA,IAAiBZ,MAASa,GAAuB,MAAM,GACvDC,IAAmBd,MAASa,GAAuB,OAAO,GAC1DE,IAASH,KAAkBE;AAE7BE,MAAAA,GACAC;AAEJ,MAAIF,GAAQ;AACJG,UAAAA,IACJV,KAAUE,KAAmBJ;AAC/B,QAAIa,IAAkDD,IAClDf,EAAmBC,QACnBD,EAAmBiB;AAEfF,IAAAA,IAAAA,IAAkBG,GAAWjB,QAAQiB,GAAWD,WAEpDN,MACMI,IAAAA,IAAkBG,GAAWC,OAAOD,GAAWE,MACzCL,IAAAA,IACVf,EAAmBmB,OACnBnB,EAAmBoB,OAGfzB,IAAAA,GAAgBU,GAAQW,CAAW;AAAA,EAAA;AAE7CH,IAAAA,IAAQK,GAAWrB,CAAI,GACbF,IAAAA,GAAgBU,GAAQR,CAAI;AAGjC,SAAA,GAAGwB,GAAaP,GAASR,GAAQ;AAAA,IACtC3V,OAAO;AAAA,IACPkV,MAAMgB;AAAAA,IACNS,aAAa;AAAA,IACbC,UAAU;AAAA,IACVC,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,IACvB,GAAGjB;AAAAA,EACJ,CAAA,CAAC;AACJ;AAEO,SAASkB,GACdzV,GACA;AAAA,EACE0V,oBAAAA;AAGF,GACmB;AACZ,SAAA,OAAO1V,KAAe,YACzB;AAAA,IAAE2V,iBAAiBD;AAAAA,EAAAA,IACnB;AAAA,IAAE,GAAG1V;AAAAA,IAAY2V,iBAAiBD;AAAAA,EAAmB;AAC3D;AAEgBE,SAAAA,GACd3M,GACA4M,GACAxE,GACW;AACX,MAAIpI,IAAQ,GAAG;AACP,UAAA;AAAA,MAAE6M,eAAAA;AAAAA,MAAeC,aAAAA;AAAAA,QAAgB1E,KAAc;AAAA,MACnD0E,aAAa;AAAA,QACXC,OAAO;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAQD,KAAAA,gBAAAA,EAAaC;AAEvBC,QAAAA;AACJ,IAAIH,IACFG,IAAOH,EAAc7M,CAAK,IAEnBgN,IAAA,GAAGC,WAAWjN,EAAMkN,SAAS,CAAC,EAAEC,QAAQ,CAAC,CAAC,IAAIJ,CAAK;AAGtD,UAAA;AAAA,MAAEK,qBAAAA;AAAAA,IAAAA,IAAwBhF;AAIhC,WAAIgF,KACFA,EAAoBpN,CAAK,GAGpB,CACL;AAAA,MACE4M,UAAAA;AAAAA,MACAI,MAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA;AAGL,SAAO,CAAE;AACX;AC/GO,MAAMK,WAA8BC,GAAgB;AAAA,EAApD;AAAA;AACLC,IAAAA,GAAAA,qCAA8B;AAC9BC,IAAAA,GAAAA,cAAO;AACPC,IAAAA,GAAAA,kBAAsB,CAAE;AACxBC,IAAAA,GAAAA,uBAAmC;AAAA,MACjCzY,MAAM;AAAA,MACN6T,UAAU,CAAA;AAAA,IACZ;AAAA;AAAA,EAES6E,YAAYvQ,GAAmB5E,GAAqC;AAE3E,IAAI,KAAK+U,gCACP,KAAKA,8BAA8B,IACnC,KAAKjQ,mBAAmB,GACxB,KAAKkQ,OAAO;AAGR,UAAA;AAAA,MAAEI,OAAAA;AAAAA,IAAAA,IAAUxQ,GACZyQ,IAAoBC,GAAoBF,CAAK,GAC7CG,IAAgB,KAAKC,iBAAiB;AAE5C,QAAIC,IAAgB;AACpB,IAAI,CAACJ,KAAqB,CAAC,KAAKK,iBAAiB1V,CAAK,MAEpD,KAAK2V,iBAAiB/Q,CAAK,GACX6Q,IAAA,KAGlB,KAAKT,OAAOA,GAAK;AAAA,MACfvY,MAAM;AAAA,MACNmZ,aAAa,CAAC,KAAKJ,iBAAkB,CAAA;AAAA,IAAA,CACtC,GAGC,KAAKK,mBACHN,GACAF,CAGF,IAEA,KAAKS,gBAAgB9V,CAAK,IACjByV,KACTzV,EAAM+E,OAAO;AAAA;AAAA,MAEXC,aAAahF,EAAMiF;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa;AAAA,QACXiP,UAAUxP,EAAMmR;AAAAA,MAAAA;AAAAA,IAClB,CACD;AAAA,EACH;AAAA,EAGOpR,YACPC,GACA5E,GACA;AACI4E,IAAAA,EAAMC,QAAQ,UACM,KAAK2Q,iBAAiB,EAC1BxI,SAAS,IACzB,KAAK8I,gBAAgB9V,CAAK,IAE1B,KAAKgW,aAAahW,CAAK,IAEhB4E,EAAMC,QAAQ,YACvB,KAAKmR,aAAahW,CAAK;AAAA,EACzB;AAAA,EAGOiW,kBACPrR,GACA5E,GACM;AACN,QAAI,KAAK+U;AACP;AAEIkB,UAAAA,kBAAkBrR,GAAO5E,CAAK;AAC9BkW,UAAAA,IAAiB,KAAKC,kBAAkBnW,CAAK;AACnD,QAAIkW,KAAkBA,EAAeE,SAAS3Z,SAAS,WAAW;AAC1D2X,YAAAA,IAAWiC,GAASH,CAAc;AACnClB,WAAAA,OAAOA,GAAKkB,CAAc,GAC1BjB,KAAAA,WAAWd,GACd,KAAKa,MACLZ,EAASgC,SAASR,aAClB5V,EAAM4P,UACR;AAAA,IAAA;AAAA,EACF;AAAA,EAGO9K,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKmQ,WAAW,CAAE,GAClB,KAAKF,8BAA8B,IACnC,KAAKC,OAAO;AAAA,EAAA;AAAA,EAGLsB,UACPtW,GACwB;AACxB,WAAI,KAAK+U,8BACA,KAAKG,gBAEL,MAAMoB,UAAUtW,CAAK;AAAA,EAC9B;AAAA,EAGOuW,cAAc;AACrB,WAAO,KAAKtB;AAAAA,EAAAA;AAAAA,EAGdY,mBACEN,GACAF,GAIS;AACH,UAAA;AAAA,MAAEmB,iBAAAA;AAAAA,IAAAA,KAAoBnB,KAAAA,gBAAAA,EAAmBnE,eAAc;AAAA,MAC3DsF,iBAAiB,CAAA;AAAA,IACnB;AACA,WACEjB,EAAcvI,SAAS,KACvBqI,MAAsBvW,WACrB0X,EAAgB,CAAC,MAAM,KACtBA,EAAgB,CAAC,MAAMjB,EAAcvI,SAAS;AAAA,EAAA;AAAA,EAIpD0I,iBAAiB1V,GAAqC;;AACpD,QAAIyW,IAAmB;AACjBlB,UAAAA,IAAgB,KAAKC,iBAAiB;AAC5C,QACED,EAAcvI,SAAS;AAAA,MAEvBhN,IAAAA,EAAM4P,eAAN5P,QAAAA,EAAkB6P,0BAClB;AACA,YAAM6G,IAAc;AAAA,QAClBja,MAAM;AAAA,QACNmZ,aAAa,CAAC,GAAGL,GAAeA,EAAc,CAAC,CAAC;AAAA,MAClD,GACMoB,IAAa;AAAA,QACjBla,MAAM;AAAA,QACNmZ,aAAa,CAAC,GAAGL,EAAcqB,MAAM,GAAGrB,EAAcvI,SAAS,CAAC,CAAC;AAAA,MACnE;AAEK6J,MADsBC,GAAcJ,GAAaC,CAAU,EAClBrG,SAAStD,SAAS,MAC3CyJ,IAAA;AAAA,IACrB;AAEKA,WAAAA;AAAAA,EAAAA;AAAAA,EAGTX,gBAAgB9V,GAAqC;AAC7CuV,UAAAA,IAAgB,KAAKC,iBAAiB,GAGtCuB,IAAwB;AAAA,MAC5Bta,MAAM;AAAA,MACNmZ,aAAa,CAAC,CAAC,GAAGL,GAAeA,EAAc,CAAC,CAAE,CAAC;AAAA,IACrD;AACAvV,IAAAA,EAAMgX,kBAAkB,CAAE,GAC1BhX,EAAMiF,OAAO;AAAA,MACXxI,MAAM;AAAA,MACN6T,UAAU,CAAA;AAAA,IACZ;AACA,UAAM2G,IAAa,KAAKC,oCACtBH,GACA/W,CACF;AACA,SAAK+U,8BAA8B,IAC/BkC,MACF,KAAK/B,gBAAgB+B,EAAWjS,aAChChF,EAAM+E,OAAO;AAAA,MACX,GAAGkS;AAAAA,MACH/R,UAAUnB,EAASM;AAAAA,MACnBc,aAAa;AAAA,QACX,GAAI8R,EAAW9R;AAAAA,QACf+M,UAAU,KAAK8C;AAAAA,QACfmC,WAAW,KAAK3B,iBAAiB;AAAA,QACjCjP,UAAU,KAAKwO;AAAAA,MAAAA;AAAAA,IACjB,CACD;AAAA,EACH;AAAA,EAGFiB,aAAahW,GAAqC;AAChD,SAAK8E,mBAAmB,GACxB9E,EAAM+E,OAAO;AAAA;AAAA,MAEXC,aAAahF,EAAMiF;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EAAA;AAAA,EAGHiS,eAAe;AAAA,IACbzE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACAxG,SAAAA;AAAAA,EAAAA,GAMS;AACT,WACE+G,GAA8B;AAAA,MAC5BC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACAxG,SAAAA;AAAAA,IACD,CAAA,IAAI;AAAA,EAAA;AAGX;AC3NO,MAAM0L,WAAgCvP,GAAyB;AAAA,EAA/D;AAAA;AACLiN,IAAAA,GAAAA,qCAA8B;AAC9BuC,IAAAA,GAAAA,sBAAe;AACfpC,IAAAA,GAAAA,uBAAmC;AAAA,MACjCzY,MAAM;AAAA,MACN6T,UAAU,CAAA;AAAA,IACZ;AACA2E,IAAAA,GAAAA,kBAAsB,CAAE;AAAA;AAAA,EAEfE,YAAYvQ,GAAmB5E,GAAqC;AAE3E,IAAI,KAAK+U,gCACP,KAAKA,8BAA8B,IACnC,KAAKjQ,mBAAmB,GACxB,KAAKwS,eAAe,IAGhBnC,MAAAA,YAAYvQ,GAAO5E,CAAK;AAAA,EAAA;AAAA,EAGvBiW,kBACPrR,GACA5E,GACM;AACN,IAAI,KAAK+U,gCAGHkB,MAAAA,kBAAkBrR,GAAO5E,CAAK,GACpC,KAAKiV,WAAWd,GACd,KAAKoD,YACL,KAAKnD,UACLpU,EAAM4P,UACR;AAAA,EAAA;AAAA,EAGO4H,sBAAsBxX,GAAqC;AAC5DuV,UAAAA,IAAgB,KAAKC,iBAAiB,GACtCiC,IAAmB,KAAKtB,kBAAkBnW,CAAK;AACrD,IACE,KAAK6V,mBACHN,GACAkC,CACF,KAEA,KAAK3B,gBAAgB9V,CAAK;AAAA,EAC5B;AAAA,EAGO2E,YACPC,GACA5E,GACA;AACI4E,IAAAA,EAAMC,QAAQ,UAChB,KAAKiR,gBAAgB9V,CAAK,IACjB4E,EAAMC,QAAQ,YACvB,KAAKmR,aAAahW,CAAK;AAAA,EACzB;AAAA,EAGOsW,UACPtW,GACwB;AACxB,WAAI,KAAK+U,8BACA,KAAKG,gBAEL,MAAMoB,UAAUtW,CAAK;AAAA,EAC9B;AAAA,EAGF6V,mBACEN,GACAkC,GACS;AACT,WACElC,EAAcvI,SAAS,KACvByK,KACAA,EAAiBrB,SAAS3Z,SAAS;AAAA,EAAA;AAAA,EAIvCqZ,gBAAgB9V,GAAqC;AAC7CyX,UAAAA,IAAmB,KAAKtB,kBAAkBnW,CAAK;AACrDA,IAAAA,EAAMgX,kBAAkB,CAAE,GAC1BhX,EAAMiF,OAAO;AAAA,MACXxI,MAAM;AAAA,MACN6T,UAAU,CAAA;AAAA,IACZ;AAEA,UAAM2G,IAAa,KAAKC,oCACtBO,GACAzX,CACF;AACA,SAAK+U,8BAA8B,IACnC/U,EAAM0X,eAAe,MAAM,GACvBT,MACF,KAAK/B,gBAAgB+B,EAAWjS,aAChChF,EAAM+E,OAAO;AAAA,MACX,GAAGkS;AAAAA,MACH/R,UAAUnB,EAASM;AAAAA,MACnBc,aAAa;AAAA,QACX,GAAI8R,EAAW9R;AAAAA,QACf+M,UAAU,KAAKoF;AAAAA,QACfH,WAAW,KAAK3B,iBAAiB;AAAA,QACjCjP,UAAU,KAAKwO;AAAAA,MAAAA;AAAAA,IACjB,CACD;AAAA,EACH;AAAA,EAGFiB,aAAahW,GAAqC;AAChD,SAAK8E,mBAAmB,GACxB9E,EAAM+E,OAAO;AAAA;AAAA,MAEXC,aAAahF,EAAMiF;AAAAA,MACnBC,UAAU;AAAA,MACVC,aAAa,CAAA;AAAA,IAAC,CACf;AAAA,EAAA;AAAA,EAGML,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKmQ,WAAW,CAAE,GAClB,KAAKF,8BAA8B,IACnC,KAAKuC,eAAe,GACpB,KAAKK,SAAS,GACd,KAAKJ,aAAa;AAAA,EAAA;AAAA,EAGXhB,cAAyB;AAChC,WAAO,KAAKtB;AAAAA,EAAAA;AAAAA,EAGdmC,eAAe;AAAA,IACbzE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACAxG,SAAAA;AAAAA,EAAAA,GAMS;AACT,WACE+G,GAA8B;AAAA,MAC5BC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACAxG,SAAAA;AAAAA,IACD,CAAA,IAAI;AAAA,EAAA;AAGX;AC/JO,MAAMiM,WAAkCC,GAAoB;AAAA,EACxD1C,YACPvQ,GACA5E,GACM;AACAmV,UAAAA,YAAYvQ,GAAO5E,CAAK,GAE9BA,EAAM+E,OAAO;AAAA;AAAA,MAEXC,aAAahF,EAAMiF;AAAAA,MACnBC,UAAUnB,EAASM;AAAAA,MACnBc,aAAa;AAAA,QACX+M,UAAU,KAAK4F;AAAAA,QACfvR,UAAU,KAAKwO;AAAAA,QACfoC,WAAW,KAAK3B,iBAAiB;AAAA,MAAA;AAAA,IACnC,CACD;AAAA,EAAA;AAAA,EAGM7Q,YACPC,GACA5E,GACA;AACA,QAAI,KAAK+U,4BAA6B;AAEtCnQ,IAAAA,EAAMmT,gBAAgB;AAChB,UAAA;AAAA,MAAElT,KAAAA;AAAAA,IAAAA,IAAQD,GAEVoT,IAAsB,KAAKxC,iBAAAA,EAAmBxI;AAEpD,QAAI9H,IAAqCnB,EAASK;AAElD,YAAQS,GAAG;AAAA,MACT,KAAK;AACH7E,QAAAA,EAAM+E,OAAO;AAAA,UACXC,aAAa;AAAA,YACXvI,MAAM;AAAA,YACN6T,UAAU,CAAA;AAAA,UACZ;AAAA,UACApL,UAAUnB,EAASI;AAAAA,UACnBgB,aAAa,CAAA;AAAA,QAAC,CACf;AACD;AAAA,MACF,KAAK;AACH,aAAK4P,8BAA8B,IAC/BiD,MAAwB,MAC1B,KAAKlT,mBAAmB,GACxBI,IAAWnB,EAASI,SAGtBnE,EAAM0X,eAAe,MAAM,GAC3B1X,EAAM+E,OAAO;AAAA,UACXC,aAAahF,EAAMiF;AAAAA,UACnBC,UAAAA;AAAAA,UACAC,aAAa;AAAA,YACXoB,UAAU,KAAKwO;AAAAA,UAAAA;AAAAA,QACjB,CACD;AACD;AAAA,IAEA;AAAA,EACJ;AAAA,EAGOjQ,qBAAqB;AAC5B,UAAMA,mBAAmB,GACzB,KAAKiQ,8BAA8B,IACnC,KAAKkD,mBAAmB,CAAE,GAC1B,KAAKH,mBAAmB;AAAA,EAAA;AAAA,EAG1BV,eAAe;AAAA,IACbzE,QAAAA;AAAAA,IACAC,QAAAA;AAAAA,IACAT,MAAAA;AAAAA,IACAxG,SAAAA;AAAAA,EAAAA,GAMS;AACT,WAAO+G,GAA8B;AAAA,MACnCC,QAAAA;AAAAA,MACAC,QAAAA;AAAAA,MACAT,MAAAA;AAAAA,MACAxG,SAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA;AAEL;ACrFO,MAAMuM,KAAuB,mBAEvBC,KAAsB;AAAA,EACjC3Z,IAAI0Z;AAAAA,EACJhR,UAAU;AAAA,EACV3B,WAAW;AAAA,EACXC,4BAA4B;AAAA,EAC5BC,gCAAgC;AAAA,EAChCC,gCAAgC;AAAA,EAChCO,oBAAoB;AAAA,EACpBN,4BAA4B;AAAA,EAC5BC,0BAA0B;AAAA,EAC1BwS,gBAAgB;AAAA,IACdnD,UAAU;AAAA,MACRoD,YAAY;AAAA,MACZC,YAAY;AAAA,MACZC,SAAS;AAAA,MACTC,YAAY;AAAA,MACZC,gBAAgB,CAAC,GAAG,EAAE;AAAA,MACtBC,eAAe;AAAA,MACfC,sBAAsB;AAAA,MACtBC,gBAAgB,CAAA;AAAA,IAClB;AAAA,IACAC,QAAQ;AAAA,MACN7S,cAAc;AAAA,IAAA;AAAA,EAChB;AAEJ,GAEa8S,KAAwC;AAAA,EACnD3S,SAAS,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,EAC3BI,UAAU,CAAC,IAAI,KAAK,KAAK,GAAG;AAAA,EAC5BD,OAAO,CAAC,KAAK,KAAK,KAAK,GAAG;AAC5B,GAEayS,KAAyC;AAAA,EACpDtS,QAAQ;AAAA,IACNC,QAAQ;AAAA,MACNP,SAAS2S,GAAe3S;AAAAA,MACxBI,UAAUuS,GAAevS;AAAAA,MACzBD,OAAOwS,GAAexS;AAAAA,IAAAA;AAAAA,EACxB;AAEJ,GAEagM,IAAqB;AAAA,EAChCiB,WAAW;AAAA,EACXhB,OAAO;AAAA,EACPyG,YAAY;AAAA,EACZC,WAAW;AAAA,EACXvF,MAAM;AAAA,EACNwF,MAAM;AAAA,EACNzF,MAAM;AACR,GAEaT,KAAyB;AAAA,EACpC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,GAAGV;AACL,GAEa6G,KAAyB;AAAA,EACpCxG,QAAQ;AAAA,EACRY,WAAW;AAAA,EACXG,MAAM;AACR,GAEarB,KAGT;AAAA,EACF,CAACC,EAAmBiB,SAAS,GAAG;AAAA,EAChC,CAACjB,EAAmBC,KAAK,GAAG;AAAA,EAC5B,CAACD,EAAmB0G,UAAU,GAAG;AAAA,EACjC,CAAC1G,EAAmB2G,SAAS,GAAG;AAAA,EAChC,CAAC3G,EAAmBoB,IAAI,GAAG;AAAA,EAC3B,CAACpB,EAAmB4G,IAAI,GAAG;AAAA,EAC3B,CAAC5G,EAAmBmB,IAAI,GAAG;AAC7B,GAEaD,KAAiE;AAAA,EAC5E,CAAClB,EAAmBiB,SAAS,GAAG;AAAA,EAChC,CAACjB,EAAmBC,KAAK,GAAG;AAAA,EAC5B,CAACD,EAAmB0G,UAAU,GAAG;AAAA,EACjC,CAAC1G,EAAmB2G,SAAS,GAAG;AAAA,EAChC,CAAC3G,EAAmBoB,IAAI,GAAG;AAAA,EAC3B,CAACpB,EAAmB4G,IAAI,GAAG;AAAA,EAC3B,CAAC5G,EAAmBmB,IAAI,GAAG;AAC7B,GAEa2F,IAGT;AAAA,EACF,QAAQ;AAAA,IACN5R,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACA9F,WAAW;AAAA,IACT/L,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACA9G,OAAO;AAAA,IACL/K,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACAL,YAAY;AAAA,IACVxR,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACAJ,WAAW;AAAA,IACTzR,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP7R,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACA3F,MAAM;AAAA,IACJlM,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACAH,MAAM;AAAA,IACJ1R,OAAO;AAAA,IACP6R,QAAQ;AAAA,EACV;AAAA,EACA5F,MAAM;AAAA,IACJjM,OAAO;AAAA,IACP6R,QAAQ;AAAA,EAAA;AAEZ,GAEaC,KAGe,CAC1BF,EAAwC,MAAM,GAC9CA,EAAwC7F,WACxC6F,EAAwC7G,OACxC6G,EAAwC,OAAO,GAC/CA,EAAwC1F,MACxC0F,EAAwC3F,IAAI,GAGjC8F,KAGe,CAC1BH,EAAwC,MAAM,GAC9CA,EAAwC7F,WACxC6F,EAAwC7G,OACxC6G,EAAwC,OAAO,GAC/CA,EAAwC1F,MACxC0F,EAAwC3F,IAAI,GAGjC+F,KAGT;AAAA,EACFtH,UAAU;AAAA,IACR1K,OAAO;AAAA,IACPC,MAAMmQ;AAAAA,EACR;AAAA,EACA6B,QAAQ;AAAA,IACNjS,OAAO;AAAA,IACPC,MAAM4P;AAAAA,EACR;AAAA,EACArC,MAAM;AAAA,IACJxN,OAAO;AAAA,IACPC,MAAMoN;AAAAA,EAAAA;AAEV,GAEa6E,KAGT;AAAA,EACFxH,UAAUoH;AAAAA,EACVG,QAAQH;AAAAA,EACRtE,MAAMuE;AACR,GCnKMI,KAAqB,CACzBvU,IACAC,IACA6S,EAAoB;AAsBf,SAAS0B,GAAW;AAAA,EACzBpN,UAAAA;AAAAA,EACAiE,OAAAA;AAAAA,EACAnH,cAAc;AAAA,IAAE7C,QAAAA,IAASD,GAA0BC;AAAAA,IAAQE,QAAAA;AAAAA,EAAAA,IAAW;AAAA,IACpEF,QAAQD,GAA0BC;AAAAA,IAClCE,QAAQH,GAA0BG;AAAAA,EACpC;AAAA,EACA4I,YAAAA,IAAa,CAAC;AAAA,EACdsK,aAAAA,IAAc;AAGhB,GAAG;AACD,QAAMrJ,IAAUe,EAAoB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB4P;AAAAA,GAAO,GAClEK,IAAaU,EAAoB3Q,CAAUA,MAAAA,EAAMiQ,UAAU,GAC3DpE,IAAS8E,EAAoB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB6L;AAAAA,GAAM,GAChEqE,IAAWS,EAAoB3Q,CAAUA,MAAAA,EAAMkQ,QAAQ,GACvDJ,IAAea,EAClB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmB8P;AAAAA,GAChC,GACME,IAAeW,EAClB3Q,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAMqE,KAAKwL,CAAK,MAAhB7P,gBAAAA,EAAmBgQ;AAAAA,GAChC,GAEMvI,IAAWH,GAAetH,CAAUA,MAAAA,EAAMyH,QAAQ,GAClDkC,IAAYoC,EAAa/L,CAAUA,MAAAA,EAAM2J,SAAS,GAClDE,IAAekC,EAAa/L,CAAUA,MAAAA,EAAM6J,YAAY,GACxDqP,IAAYnN,EAChBoN,GAAYnZ,CACVA,MAAAA;;AAAAA,YAAAA,IAAAA,EAAM+I,KAAK8G,CAAK,MAAhB7P,gBAAAA,EAAmBnC,OAAO6B,OAAQmD,OAAM,CAACkW,GAAmBjP,SAASjH,CAAC;AAAA,GACxE,CACF,GACMwG,IAAkB0C,EAAa/L,CAAUA,MAAAA,EAAMqJ,eAAe,GAC9D+P,IAAyBC,GAAgC,EAAE,GAE3DC,IAAazI,GAAQ,MAClBK,GAAc;AAAA,IAAErF,QAAAA;AAAAA,EAAAA,CAAQ,GAC9B,CAACA,CAAM,CAAC,GAEL0N,IAA2C1I,GAAQ,OAChD;AAAA,IACLhV,MAAM;AAAA,IACN6T,UAAU4J,EAAW1Z,IAAKgH,CAAWA,OAAA;AAAA,MACnC/K,MAAM;AAAA,MACN2Z,UAAU5O,EAAM4O;AAAAA,MAChBlF,YAAY1J,EAAM0J;AAAAA,MAClB1S,IAAIgJ,EAAMhJ;AAAAA,IAAAA,EACV;AAAA,EACJ,IACC,CAAC0b,CAAU,CAAC,GAETE,IAAc3I,GAAQ,MACnByI,EACJ5Z,OAAQkH,CAAAA,MAAUA,EAAM0J,WAAW/J,OAAO,EAC1C3G,IAAKgH,CAAUA,MAAAA,EAAMhJ,EAAE,GACzB,CAAC0b,CAAU,CAAC,GAET,CAACjV,GAAMoV,CAAO,IAAI3a,GAA4Bya,CAAqB,GACnE,CAACG,GAAwBC,CAAyB,IAAI7a,GAE1D,CAAA,CAAE,GAEE8a,IAAkB3I,EAAY,MAAM;AACxC,UAAM4I,IAAQ;AAAA,MACZ,GAAGN;AAAAA,MACH7J,UAAU6J,EAAsB7J,SAAShQ,OACtCoa,CAAYA,MAAAA;;AAAAA,gBAAAA,IAAAA,EAAQxJ,eAARwJ,gBAAAA,EAAoBvT;AAAAA,OACnC;AAAA,IACF;AACAkT,IAAAA,EAAQI,CAAK;AAAA,EAAA,GACZ,CAACN,CAAqB,CAAC;AAE1BxY,EAAAA,EAAU,MAAM;AACE,IAAA6Y,EAAA;AAAA,EAAA,GACf,CAACA,CAAe,CAAC;AAEdG,QAAAA,IAAgBV,GAAOC,EAAWlN,MAAM;AAE9CrL,EAAAA,EAAU,OACE8O,EAAAA,GAAO,CAACrL,EAAwB,CAAC,GAEpC,MAAM;AACEqL,IAAAA,EAAAA,GAAO,CAACrL,EAAwB,CAAC;AAAA,EAChD,IACC,CAACmF,GAAWkG,GAAOhG,CAAY,CAAC;AAE7BmQ,QAAAA,IAAmB/I,EAAY,MAAM;AACzB,IAAA2I,EAAA,GAChBD,EAA0B,CAAA,CAAE,GAC5B1J,EAAWJ,GAAO,EAAK;AAAA,EACtB,GAAA,CAACA,GAAO+J,GAAiB3J,CAAU,CAAC,GAEjC9L,IAAS8M,EACb,CAAC;AAAA,IAAE3M,UAAAA;AAAAA,IAAUF,aAAAA;AAAAA,EAAAA,MAA4C;AACnDE,QAAAA,MAAanB,EAASI,QAAQ;AACf,MAAAyW,EAAA;AACjB;AAAA,IAAA;AAKE1V,IAFJmV,EAAQrV,CAAW,GAEfE,MAAanB,EAASG,0BAItBgB,MAAanB,EAASC,eACpB4M,MAAiB,WACLnH,EAAAA,UAAUkR,EAAclR,UAAU,IAElDzE,EAAYsL,SAASuK,QAAQ,CAACH,GAASvZ,MAAU;;AAC/CuZ,OAAAA,IAAAA,EAAQxJ,YAAWS,UAAnB+I,EAAmB/I,QAAU,GAAGhL,KAAAA,gBAAAA,EAAQC,IAAI,IAAI+T,EAAclR,OAAO,KACrEiR,EAAQxJ,WAAW/P,QAAQA,GAC3BuZ,EAAQxJ,WAAW/J,UAAUuT,EAAQxJ,WAAW/J,WAAW;AAE3D,YAAM3I,IAAMkc,EAAQlc,MAAiBsc,OAAOC,WAAW;AAEvDjK,MAAAA,EAASL,GAAOjS,GAAI;AAAA,QAClB4X,UAAUsE,EAAQtE;AAAAA,QAClBlF,YAAYwJ,EAAQxJ;AAAAA;AAAAA,QAEpBzU,MAAMod;AAAAA,MAAAA,CACP;AAAA,IAAA,CACF,GACgBe,EAAA;AAAA,EACnB,GAEF,CACEf,GACAe,GACAjU,KAAAA,gBAAAA,EAAQC,MACR6J,GACAG,GACAE,CAAQ,CAEZ;AAEAnP,SAAAA,EAAU,MAAM;AACd,UAAMuF,IAAWsJ,GAEX;AAAA,MACJpK,QAAQ4U;AAAAA,MACR1U,OAAO2U;AAAAA,MACP5U,MAAM6U;AAAAA,IAAAA,IACJzU,EAAOC,OAAOP,SAEZ;AAAA,MAAEC,QAAQ+U;AAAAA,MAAgB9U,MAAM+U;AAAAA,IAAAA,IACpC3U,EAAOC,OAAOH,UAEV+B,IAAQ8G,GAAmB;AAAA,MAC/BG,YAAY;AAAA,QACV,GAAGA,EAAW3I;AAAAA,QACdM,UAAAA;AAAAA,QACAjC,MAAAA;AAAAA,QACAqV,wBAAAA;AAAAA,QACA1B,gBAAgB;AAAA,UACdyC,gBAAgBjB;AAAAA,QAClB;AAAA,QACAkB,SAASA,CAACpa,MAAmB;AAC3B,gBAAMqa,IAAKra;AACX,UAAIqa,EAAGC,WAGmBjB,EAAA,CAACgB,EAAGpa,KAAK,CAAC;AAAA,QAAA;AAAA,MAExC;AAAA,MACAqO,cAAcA,CAACiM,MACbnB,EAAuB,CAAC,MAAMmB,EAAEvK,WAAW/P,QACvC6Z,IACAG;AAAAA,MACN1L,cAAcA,CAACgM,MACbnB,EAAuB,CAAC,MAAMmB,EAAEvK,WAAW/P,QACvC+Z,IACAE;AAAAA,MACN1L,YAAY;AAAA,QACVrJ,MAAM4U;AAAAA,QACN9K,SAAS6K;AAAAA,MACX;AAAA,MACAjW,QAAAA;AAAAA,MACA0C,MAAOP,IAAsBwJ,IAAXgL;AAAAA,IAAWhL,CAC9B;AAEDrI,IAAAA,EAASjD,IAA0BkD,CAAK;AAAA,EAAA,GACvC,CACDrD,GACAuL,GACAjB,EAAW3I,MACXwT,GACA1J,GACA3L,GACAuV,GACAjS,GACA5B,EAAOC,OAAOP,SACdM,EAAOC,OAAOH,QAAQ,CACvB,GAED5E,EAAU,MAAM;AACd,UAAM3B,IAAQ;AAAA,MACZ,GAAGgH;AAAAA,MACH/B,MAAMkV;AAAAA,MACNkB,gBAAgBA,CAACM,MAAsBC,OAAOxB,EAAY1P,SAASiR,EAAEnd,EAAE,CAAC;AAAA,MACxEoa,gBAAgB;AAAA,QACdyC,gBAAgBjB;AAAAA,MAAAA;AAAAA,IAEpB;AAEA/R,WAAAA,EAASrB,GAAyBxI,IAAI;AAAA,MACpC/B,MAAMof;AAAAA,MACN7b,OAAAA;AAAAA,IAAAA,CACD,GAEDuK,EAAUkG,GAAO,CAACzJ,GAAyBxI,EAAE,CAAC,GACvC,MAAM;AACXiM,MAAAA,EAAagG,GAAO,CAACzJ,GAAyBxI,EAAE,CAAC;AAAA,IACnD;AAAA,EAAA,GACC,CACD+L,GACAkG,GACA0J,GACAC,GACA3P,GACApC,CAAQ,CACT,GAED1G,EAAU,MAAM;AACdmY,IAAAA,KAAAA,QAAAA,EAAWe,QAASiB,CAAYA,MAAA;;AACxBC,YAAAA,KAAe9R,IAAAA,EAAgBwG,CAAK,MAArBxG,gBAAAA,EAAwBjK,MAAMvB,OAAOud,KACvDvY,CAAOA,MAAAA,EAAwBzD,MAAMxB,OAAOsd;AAG/C,MAAItL,MACFwJ,EAAuBvQ,QAAQqS,CAAO,IAAIC,KAAAA,gBAAAA,EAAc/b,MAAMkH;AAG1DA,YAAAA,IACJ,CAACsJ,MACAwJ,EAAuBvQ,QAAQqS,CAAO,MACrCC,KAAAA,gBAAAA,EAAc/b,MAAMkH;AAExBmB,MAAAA,EAASyT,GAAS;AAAA,QAChB9b,OAAO;AAAA,UACLkH,UAAUA;AAAAA,UACVE,YAAY,CAAC,IAAI6U,IAAe;AAAA,UAChCC,QACE,CAAC1L,KAAW4J,EAAYpN,SAAS3H,KAAoBvG;AAAAA,QAAAA;AAAAA,MACzD,CACD;AAAA,IAAA;AAAA,EACF,GACA,CAAC0R,GAASvG,GAAiBwG,GAAOqJ,GAAWM,EAAYpN,QAAQ3E,CAAQ,CAAC,GAEtEmE;AACT;AAEAoN,GAAWuC,WAAW3K;AC/Sf,SAAS4K,GAAyB;AAAA,EACvC3U,MAAAA;AAAAA,EACA,GAAG6B;AACuB,GAAc;AACxC,QAAMtJ,IAAQqP,GAAc;AAAA,IAC1B5H,MAAAA;AAAAA,IACA,GAAG6B;AAAAA,EAAAA,CACJ;AACM,SAAA;AAAA,IACL7M,MAAM6S;AAAAA,IACNtP,OAAO;AAAA,MACL,GAAGA;AAAAA,MACHyH,MAAAA;AAAAA,MACAxC,MAAM,CAAA;AAAA,IAAA;AAAA,EAEV;AACF;AAYA,SAASoK,GAAc;AAAA,EACrB5H,MAAAA;AAAAA,EACA8H,YAAAA;AAAAA,EACAqD,QAAAA;AAAAA,EACApC,SAAAA;AAAAA,EACA2B,MAAAA;AAAAA,EACApN,QAAAA;AAAAA,EACAsX,YAAAA;AAAAA,EACA3M,YAAAA;AAAAA,EACA4M,aAAAA;AAC0B,GAAG;AACvB3M,QAAAA,IAAc9B,GAAU0B,GAAY;AAAA,IACxCpI,SAASqJ;AAAAA,IACTtJ,UAAUsJ;AAAAA,IACVZ,YAAY;AAAA;AAAA,MAEVyE,eAAeA,CAACkI,MACPA;AAAAA,MAETjI,aAAa;AAAA,QACXC,OAAO4E,GAAuBxG;AAAAA,MAAAA;AAAAA,IAElC;AAAA,IACA,GAAInC,KAAW;AAAA,MAAEzL,QAAAA;AAAAA,IAAO;AAAA,IACxBqT,gBAAgB;AAAA,MACdnD,UAAU;AAAA,QACRuH,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,QACjCC,cAAc;AAAA,QACdC,cAAc;AAAA,UACZC,KAAK;AAAA;AAAA,UACLC,WAAW;AAAA,QACb;AAAA,QACAC,SAASA,CAAC3L,MAA4D;;AAGpE,kBAAOzJ,IAAAA,KAAAA,gBAAAA,EAAM2P,mBAAN3P,gBAAAA,EAAAA,KAAAA,GAAuB;AAAA,YAC5BkL,QAAQzB,EAAWsD;AAAAA,YACnB5B,QAAAA;AAAAA,YACAT,MAAAA;AAAAA,YACAxG,SAAS2Q;AAAAA,UAAAA;AAAAA,QAEb;AAAA,QACA1D,gBAAgB;AAAA,UACdiE,SAAS,CAAC1K,GAAMS,GAAQ0J,CAAW;AAAA,QAAA;AAAA,MACrC;AAAA,IACF;AAAA,EACF,CACD,GACKxM,IAAoBjC,GAAUsK,IAAqB;AAAA,IACvDC,gBAAgB;AAAA,MACdS,QAAQ;AAAA,QACNrJ,cAAc6M;AAAAA,QACd5M,cAAc4M,EAAWS,KAAK,GAAG,EAAE;AAAA,MAAA;AAAA,IAEvC;AAAA,IACA7M,yBAAyBP;AAAAA,IACzBQ,gCAAgCmM;AAAAA,EAAAA,CACjC;AAGMrc,SADO6N,GAAUiC,GAAmBH,CAAW;AAExD;ACpFaoN,MAAAA,KAA8BA,CACzC1T,MAEO+C,GAAAA,EAAsChE,CAAQA,OAiC5C;AAAA,EACL4U,cAjCmB3T,EAAUb,OAC7B,CAACC,GAAKc,MAAS;AACP,UAAA;AAAA,MACJkH,OAAAA;AAAAA,MACAG,cAAAA;AAAAA,MACAD,OAAAA,IAAQ6I;AAAAA,MACRjF,OAAAA,IAAQmF;AAAAA,MACRxH,UAAAA,IAAW;AAAA,MACX3L,UAAAA,IAAW;AAAA,MACXqM,QAAAA,IAAS;AAAA,MACTuE,WAAAA,IAAY,CAAE;AAAA,MACd8F,mBAAAA,IAAoB;AAAA,MACpB9K,MAAAA,IAAOa,GAAuB,MAAM;AAAA,MACpCxC,SAAAA,IAAU;AAAA,IAAA,IACRjH;AACJd,WAAAA,EAAIgI,CAAK,IAAI;AAAA,MACXE,OAAAA;AAAAA,MACA4D,OAAAA;AAAAA,MACA3D,cAAAA;AAAAA,MACAsB,UAAAA;AAAAA,MACA3L,UAAAA;AAAAA,MACAqM,QAAAA;AAAAA,MACAuE,WAAAA;AAAAA,MACAhF,MAAAA;AAAAA,MACA8K,mBAAAA;AAAAA,MACAzM,SAAAA;AAAAA,IACF,GACO/H;AAAAA,EACT,GACA,EACF;AAAA,EAIEhB,MAAMmQ;AAAAA,EACNxG,iBAAiBA,CAACX,GAAOC,MAAiB;AACxCtI,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3BC,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAS,iBAAiBA,CAACV,GAAOG,MAAiB;AACxCxI,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3BG,cAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAsM,aAAaA,CAACzM,GAAOlK,MAAa;AAChC6B,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3BlK,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACA4W,aAAaA,CAAC1M,GAAOyB,MAAa;AAChC9J,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3ByB,UAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAkL,SAASA,CAAC3M,GAAO0B,MAAS;AACxB/J,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3B0B,MAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAkL,WAAWA,CAAC5M,GAAOmC,MAAW;AAC5BxK,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3BmC,QAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACA0K,cAAcA,CAAC7M,GAAO0G,MAAc;AAClC/O,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3B0G,WAAW,CAAC,GAAGA,CAAS;AAAA,QAAA;AAAA,MAC1B;AAAA,IACF,EACA;AAAA,EACJ;AAAA,EACAtG,YAAYA,CAACJ,GAAOD,MAAY;AAC9BpI,IAAAA,EAAKxH,CAAWA,OAAA;AAAA,MACdoc,cAAc;AAAA,QACZ,GAAGpc,EAAMoc;AAAAA,QACT,CAACvM,CAAK,GAAG;AAAA,UACP,GAAG7P,EAAMoc,aAAavM,CAAK;AAAA,UAC3BD,SAAAA;AAAAA,QAAAA;AAAAA,MACF;AAAA,IACF,EACA;AAAA,EAAA;AAEN,EACD,GC9HG+M,KAA0BhR,GAC9B,EACF;AAEO,SAAAiR,GAAAngB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAkC;AAAA,IAAAiP,UAAAA;AAAAA,IAAAC,QAAAA;AAAAA,EAAAA,IAAApP;AAGUS,MAAAA;AAAAR,EAAAA,SAAAmP,KACrB3O,IAAAif,GAA4BtQ,CAAM,GAACnP,OAAAmP,GAAAnP,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAA/D,QAAA,CAAAoP,CAAA,IAAmBhN,GAAS5B,CAAmC;AAACC,MAAAA;AAAA,SAAAT,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAoP,KAG9D3O,sBAAAwf,GAAA,UAAA,EAAyC7Q,OAAAA,GACtCF,UAAAA,GACH,GAAmClP,OAAAkP,GAAAlP,OAAAoP,GAAApP,OAAAS,KAAAA,IAAAT,EAAA,CAAA,GAFnCS;AAEmC;AAIhC,SAAA0f,EAAA7Q,GAAA;AAGL5C,QAAAA,IAAc6C,GAAA0Q,EAAkC;AAAC,MAAA,CAC5CzQ,OAAAC,KAAY/C,CAAK,EAACgD;AAAAC,UAAAA,IAAAA,MACL,8CAA8C;AACzDC,SAAAA,GAASlD,GAAO4C,CAAQ;AAAC;ACjC3B,SAAA8Q,GAAArgB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAA6B;AAAA,IAAAkT,OAAAA;AAAAA,EAAAA,IAAApT;AAA4BS,MAAAA;AAAAR,EAAAA,SAAAmT,KAE5D3S,IAAA8C,CAAWA,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAE,OAAQrT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAD7CqT,QAAAA,IAAc8M,EACZ3f,CACF;AAACC,MAAAA;AAAAT,EAAAA,SAAAmT,KAGC1S,IAAAqD,CAAWR,MAAAA,EAAKoc,aAAcvM,CAAK,EAAA8D,OAAQjX,OAAAmT,GAAAnT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAD7CiX,QAAAA,IAAckJ,EACZ1f,CACF;AAACC,MAAAA;AAAAV,EAAAA,SAAAmT,KAGCzS,IAAA2f,CAAW/c,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAyB,UAAW5U,OAAAmT,GAAAnT,OAAAU,KAAAA,IAAAV,EAAA,CAAA;AADhD4U,QAAAA,IAAiBuL,EACfzf,CACF,GACA4f,IAAqBH,EAAAre,EAAqD;AAACnB,MAAAA;AAAA,EAAAX,EAAAsgB,CAAAA,MAAAA,KAAAtgB,SAAAmT,KAGzEoN,IAAAA,CAAAA,MAAsBD,EAAanN,GAAOyB,CAAQ,GAAC5U,OAAAsgB,GAAAtgB,OAAAmT,GAAAnT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AADrD,QAAA6f,IAAoBlf;AAGnBC,MAAAA;AAAAZ,EAAAA,SAAAmT,KAGCvS,IAAA4f,CAAWld,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAwM,mBAAoB3f,OAAAmT,GAAAnT,QAAAY,KAAAA,IAAAZ,EAAA,EAAA;AADzD2f,QAAAA,IAA0BQ,EACxBvf,CACF;AAACC,MAAAA;AAAAb,EAAAA,UAAAmT,KAGCtS,IAAA4f,CAAWnd,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAD,SAAUlT,QAAAmT,GAAAnT,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAD/CkT,QAAAA,IAAgBiN,EACdtf,CACF,GACA6f,IAAuBP,EAAA5d,EAAoD;AAACzB,MAAAA;AAAA,EAAAd,EAAA0gB,EAAAA,MAAAA,KAAA1gB,UAAAmT,KAG1EwN,IAAAA,CAAAA,MACED,EAAevN,GAAOD,CAAO,GAAClT,QAAA0gB,GAAA1gB,QAAAmT,GAAAnT,QAAAc,KAAAA,IAAAd,EAAA,EAAA;AAFlC,QAAAuT,IAAmBzS;AAIlBC,MAAAA;AAAAf,EAAAA,UAAAmT,KAGCpS,IAAA6f,CAAWtd,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAG,cAAetT,QAAAmT,GAAAnT,QAAAe,KAAAA,IAAAf,EAAA,EAAA;AADpDsT,QAAAA,IAAqB6M,EACnBpf,CACF,GAEA8f,IAAyBV,EAAAld,EAEzB;AAACxB,MAAAA;AAAAzB,EAAAA,EAAA6gB,EAAAA,MAAAA,KAAA7gB,UAAAmT,KAAAnT,EAAA,EAAA,MAAAuT,KAGC9R,IAAA0I,CAAAA,MAAA;AACY,IAAAoJ,EAAA,CAAA,CAAGpJ,CAAI,GACjB0W,EAAiB1N,GAAOhJ,CAAI;AAAA,EAAC,GAC9BnK,QAAA6gB,GAAA7gB,QAAAmT,GAAAnT,QAAAuT,GAAAvT,QAAAyB,KAAAA,IAAAzB,EAAA,EAAA;AAJH,QAAA6T,IAAwBpS;AAMvBC,MAAAA;AAAA1B,EAAAA,UAAAmT,KAGCzR,IAAAof,CAAWxd,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAlK,UAAWjJ,QAAAmT,GAAAnT,QAAA0B,KAAAA,IAAA1B,EAAA,EAAA;AADhDiJ,QAAAA,IAAiBkX,EACfze,CACF,GACAqf,IAAqBZ,EAAAhd,EAAqD;AAACpB,MAAAA;AAAA,EAAA/B,EAAA+gB,EAAAA,MAAAA,KAAA/gB,UAAAmT,KAGzE6N,IAAAA,CAAAA,MACED,EAAa5N,GAAOlK,CAAQ,GAACjJ,QAAA+gB,GAAA/gB,QAAAmT,GAAAnT,QAAA+B,KAAAA,IAAA/B,EAAA,EAAA;AAFjC,QAAA4f,IAAoB7d;AAInBM,MAAAA;AAAArC,EAAAA,UAAAmT,KAGC9Q,IAAA4e,CAAW3d,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAmC,QAAStV,QAAAmT,GAAAnT,QAAAqC,KAAAA,IAAArC,EAAA,EAAA;AAD9CsV,QAAAA,IAAe6K,EACb9d,CACF,GACA6e,IAAmBf,EAAA9a,EAAmD;AAAC5C,MAAAA;AAAA,EAAAzC,EAAAkhB,EAAAA,MAAAA,KAAAlhB,UAAAmT,KAErDgO,IAAAA,CAAAA,MAChBD,EAAW/N,GAAOmC,CAAM,GAACtV,QAAAkhB,GAAAlhB,QAAAmT,GAAAnT,QAAAyC,KAAAA,IAAAzC,EAAA,EAAA;AAD3B,QAAA+f,IAAkBtd;AACSK,MAAAA;AAAA9C,EAAAA,UAAAmT,KAGzBrQ,IAAAse,CAAW9d,MAAAA,EAAKoc,aAAcvM,CAAK,EAAAC,cAAepT,QAAAmT,GAAAnT,QAAA8C,KAAAA,IAAA9C,EAAA,EAAA;AADpDoT,QAAAA,IAAqB+M,EACnBrd,CACF,GAEAue,IAAqBlB,EAAAmB,EAErB;AAACve,MAAAA;AAAA,EAAA/C,EAAAqhB,EAAAA,MAAAA,KAAArhB,UAAAmT,KAGCoO,IAAAA,CAAAA,MACEF,EAAalO,GAAOC,CAAY,GAACpT,QAAAqhB,GAAArhB,QAAAmT,GAAAnT,QAAA+C,KAAAA,IAAA/C,EAAA,EAAA;AAFrC,QAAA8T,KAAwB/Q;AAIvBM,MAAAA;AAAArD,EAAAA,UAAAmT,KAGC9P,KAAAme,CAAWle,MAAAA,EAAKoc,aAAcvM,CAAK,EAAA0G,WAAY7Z,QAAAmT,GAAAnT,QAAAqD,MAAAA,KAAArD,EAAA,EAAA;AADjD6Z,QAAAA,KAAkBsG,EAChB9c,EACF,GACAoe,KAAsBtB,EAAAuB,EAAsD;AAAC/d,MAAAA;AAAA,EAAA3D,EAAAyhB,EAAAA,MAAAA,MAAAzhB,UAAAmT,KAG3EwO,KAAAA,CAAAA,MACEF,GAActO,GAAO0G,CAAS,GAAC7Z,QAAAyhB,IAAAzhB,QAAAmT,GAAAnT,QAAA2D,MAAAA,KAAA3D,EAAA,EAAA;AAFnC,QAAAggB,IAAqBrc;AAIpBQ,MAAAA;AAAAnE,EAAAA,UAAAmT,KAGChP,KAAAyd,CAAWte,MAAAA,EAAKoc,aAAcvM,CAAK,EAAA0B,MAAO7U,QAAAmT,GAAAnT,QAAAmE,MAAAA,KAAAnE,EAAA,EAAA;AAD5C6U,QAAAA,KAAasL,EACXhc,EACF,GACA0d,KAAiB1B,EAAA2B,EAAiD;AAAC1d,MAAAA;AAAA,EAAApE,EAAA6hB,EAAAA,MAAAA,MAAA7hB,UAAAmT,KAGjE4O,KAAAA,CAAAA,MAAyCF,GAAS1O,GAAO0B,CAAI,GAAC7U,QAAA6hB,IAAA7hB,QAAAmT,GAAAnT,QAAAoE,MAAAA,KAAApE,EAAA,EAAA;AADhE,QAAA8f,IAAgB1b;AAGfE,MAAAA;AAAA,EAAAtE,EAAAoT,EAAAA,MAAAA,KAAApT,UAAAggB,KAE8B1b,IAAAA,MAAA;AAC7B8O,IAAAA,KAAAA,QAAAA,EAAY5L,sBACZwY,IAAe;AAAA,EAAC,GACjBhgB,QAAAoT,GAAApT,QAAAggB,GAAAhgB,QAAAsE,KAAAA,IAAAtE,EAAA,EAAA;AAHD,QAAAgiB,IAAmB1d;AAGaC,MAAAA;AAAAvE,EAAAA,UAAAuT,KAG9BhP,IAAA0d,CAAAA,MAAA;AACE1O,IAAAA,EAAWL,CAAO;AAAA,EAAC,GACpBlT,QAAAuT,GAAAvT,QAAAuE,KAAAA,IAAAvE,EAAA,EAAA;AAHH,QAAAkiB,KAAoB3d;AAKnBE,MAAAA;AAAA,SAAAzE,EAAAgiB,EAAAA,MAAAA,KAAAhiB,UAAA2f,KAAA3f,EAAA,EAAA,MAAA4U,KAAA5U,UAAAkT,KAAAlT,EAAAiJ,EAAAA,MAAAA,KAAAjJ,UAAAsV,KAAAtV,EAAAoT,EAAAA,MAAAA,KAAApT,EAAA,EAAA,MAAAsT,KAAAtT,EAAAqT,EAAAA,MAAAA,KAAArT,EAAA,EAAA,MAAA6Z,MAAA7Z,EAAA6f,EAAAA,MAAAA,KAAA7f,EAAA,EAAA,MAAAuT,KAAAvT,EAAA4f,EAAAA,MAAAA,KAAA5f,UAAA+f,KAAA/f,EAAA8T,EAAAA,MAAAA,MAAA9T,EAAA,EAAA,MAAA6T,KAAA7T,EAAAggB,EAAAA,MAAAA,KAAAhgB,EAAA,EAAA,MAAA8f,KAAA9f,EAAAkiB,EAAAA,MAAAA,MAAAliB,EAAA,EAAA,MAAA6U,MAAA7U,UAAAiX,KAEMxS,KAAA;AAAA,IAAA4O,OAAAA;AAAAA,IAAA4D,OAAAA;AAAAA,IAAArC,UAAAA;AAAAA,IAAA+K,mBAAAA;AAAAA,IAAArM,cAAAA;AAAAA,IAAAJ,SAAAA;AAAAA,IAAAjK,UAAAA;AAAAA,IAAAqM,QAAAA;AAAAA,IAAAlC,cAAAA;AAAAA,IAAAyG,WAAAA;AAAAA,IAAAhF,MAAAA;AAAAA,IAAAgL,aAAAA;AAAAA,IAAAhM,iBAAAA;AAAAA,IAAA+L,aAAAA;AAAAA,IAAAG,WAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAAvM,YAAAA;AAAAA,IAAA2O,aAAAA;AAAAA,IAAAF,YAAAA;AAAAA,IAAAlO,iBAAAA;AAAAA,EAAA,GAsBN9T,QAAAgiB,GAAAhiB,QAAA2f,GAAA3f,QAAA4U,GAAA5U,QAAAkT,GAAAlT,QAAAiJ,GAAAjJ,QAAAsV,GAAAtV,QAAAoT,GAAApT,QAAAsT,GAAAtT,QAAAqT,GAAArT,QAAA6Z,IAAA7Z,QAAA6f,GAAA7f,QAAAuT,GAAAvT,QAAA4f,GAAA5f,QAAA+f,GAAA/f,QAAA8T,IAAA9T,QAAA6T,GAAA7T,QAAAggB,GAAAhgB,QAAA8f,GAAA9f,QAAAkiB,IAAAliB,QAAA6U,IAAA7U,QAAAiX,GAAAjX,QAAAyE,MAAAA,KAAAzE,EAAA,EAAA,GAtBMyE;AAsBN;AA1II,SAAAqd,GAAAK,GAAA;AAAA,SAiGgD7e,EAAKwc;AAAA;AAjGrD,SAAA4B,GAAAU,GAAA;AAAA,SAsFqD9e,EAAK0c;AAAA;AAtF1D,SAAAsB,GAAAe,GAAA;AAAA,SA0EQ/e,EAAKwQ;AAAA;AA1Eb,SAAAzO,GAAAid,GAAA;AAAA,SAgEkDhf,EAAKyc;AAAA;AAhEvD,SAAA5c,GAAAof,GAAA;AAAA,SAqDoDjf,EAAKsc;AAAA;AArDzD,SAAA3c,GAAAuf,GAAA;AAAA,SAuCQlf,EAAKuQ;AAAA;AAvCb,SAAAtR,GAAAkgB,GAAA;AAAA,SA0BsDnf,EAAKiQ;AAAA;AA1B3D,SAAAzR,GAAA4gB,GAAA;AAAA,SAYoDpf,EAAKuc;AAAA;ACXzD,SAAA8C,GAAA5iB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAiC;AAAA,IAAAkT,OAAAA;AAAAA,IAAA6L,aAAAA;AAAAA,IAAA9P,UAAAA;AAAAA,EAAAA,IAAAnP;AAITS,MAAAA;AAAAR,EAAAA,SAAAmT,KAuBL3S,IAAA;AAAA,IAAA2S,OAAAA;AAAAA,EAAA,GAASnT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAtBjC,QAAA;AAAA,IAAAqT,OAAAA;AAAAA,IAAA4D,OAAAA;AAAAA,IAAArC,UAAAA;AAAAA,IAAAiL,aAAAA;AAAAA,IAAAF,mBAAAA;AAAAA,IAAArM,cAAAA;AAAAA,IAAAO,iBAAAA;AAAAA,IAAAX,SAAAA;AAAAA,IAAAK,YAAAA;AAAAA,IAAAtK,UAAAA;AAAAA,IAAA2W,aAAAA;AAAAA,IAAAtK,QAAAA;AAAAA,IAAAyK,WAAAA;AAAAA,IAAA3M,cAAAA;AAAAA,IAAAU,iBAAAA;AAAAA,IAAA+F,WAAAA;AAAAA,IAAAmG,cAAAA;AAAAA,IAAAnL,MAAAA;AAAAA,IAAAiL,SAAAA;AAAAA,IAAAkC,YAAAA;AAAAA,IAAAE,aAAAU;AAAAA,EAAAA,IAsBIxC,GAAoB5f,CAAS;AAACC,MAAAA;AAAA,EAAAT,EAAA,CAAA,MAAAsT,KAAAtT,EAAAqT,CAAAA,MAAAA,KAAArT,EAAA8T,CAAAA,MAAAA,KAAA9T,SAAAggB,KAExBvf,IAAAA,MAAA;AACJ6S,QAAAA,KAAgBD,EAAMC,CAAY,GAAC;AACrCuP,YAAAA,IAAkBxP,EAAMC,CAAY,EAAAnJ;AACrB,MAAA2J,EAAA,IAAK+O,GAAW;AAAA,IAAA;AAAC,WAAA,MAAA;AAGhC7C,MAAAA,IAAe;AAAA,IAAC;AAAA,EAAA,GAEnBhgB,OAAAsT,GAAAtT,OAAAqT,GAAArT,OAAA8T,GAAA9T,OAAAggB,GAAAhgB,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA;AAAA,EAAAV,EAAAsT,CAAAA,MAAAA,KAAAtT,EAAA,CAAA,MAAAqT,KAAArT,EAAAuT,CAAAA,MAAAA,KAAAvT,EAAA,EAAA,MAAA8T,KAAA9T,UAAAggB,KAAEtf,IAAA,CAAC2S,GAAOC,GAAc0M,GAAclM,GAAiBP,CAAU,GAACvT,OAAAsT,GAAAtT,OAAAqT,GAAArT,OAAAuT,GAAAvT,QAAA8T,GAAA9T,QAAAggB,GAAAhgB,QAAAU,KAAAA,IAAAV,EAAA,EAAA,GARnEqE,EAAU5D,GAQPC,CAAgE;AAACC,MAAAA;AAAA,EAAAX,EAAA,EAAA,MAAA4iB,KAAA5iB,EAAAgiB,EAAAA,MAAAA,KAAAhiB,EAAA2f,EAAAA,MAAAA,KAAA3f,UAAAiJ,KAGlEtI,IAAAmiB,CAAAA,MAAA;AACMA,IAAAA,MAAWnD,KAAiB,CAAK1W,MACxB+Y,EAAA,GAEbY,EAAaE,CAAM;AAAA,EAAC,GACrB9iB,QAAA4iB,GAAA5iB,QAAAgiB,GAAAhiB,QAAA2f,GAAA3f,QAAAiJ,GAAAjJ,QAAAW,KAAAA,IAAAX,EAAA,EAAA;AANH,QAAAkiB,IAAoBvhB,GAiBCC,MAAE+e;AAAiB9e,MAAAA;AAAA,SAAAb,EAAAkP,EAAAA,MAAAA,KAAAlP,EAAA,EAAA,MAAAgiB,KAAAhiB,UAAA4U,KAAA5U,EAAAkT,EAAAA,MAAAA,KAAAlT,EAAA,EAAA,MAAAiJ,KAAAjJ,UAAAsV,KAAAtV,EAAAmT,EAAAA,MAAAA,KAAAnT,EAAA,EAAA,MAAAoT,KAAApT,UAAAsT,KAAAtT,EAAAqT,EAAAA,MAAAA,KAAArT,EAAA,EAAA,MAAA6Z,KAAA7Z,EAAA6f,EAAAA,MAAAA,KAAA7f,EAAA,EAAA,MAAAuT,KAAAvT,UAAA4f,KAAA5f,EAAA+f,EAAAA,MAAAA,KAAA/f,EAAA,EAAA,MAAA6T,KAAA7T,UAAAggB,KAAAhgB,EAAA8f,EAAAA,MAAAA,KAAA9f,EAAA,EAAA,MAAAY,KAAAZ,UAAAgf,KAAAhf,EAAAkiB,EAAAA,MAAAA,KAAAliB,EAAA,EAAA,MAAA6U,KAAA7U,UAAAiX,KARjCpW,IAAAqO,EAAQ;AAAA,IAAAiE,OAAAA;AAAAA,IAAAyB,UAAAA;AAAAA,IAAA1B,SAAAA;AAAAA,IAAAjK,UAAAA;AAAAA,IAAAqM,QAAAA;AAAAA,IAAAuE,WAAAA;AAAAA,IAAAhF,MAAAA;AAAAA,IAAA8K,mBAQM/e;AAAAA,IAAmB0S,cAAAA;AAAAA,IAAAD,OAAAA;AAAAA,IAAA4D,OAAAA;AAAAA,IAAA/M,OAI/BkL,GAAA;AAAA,MAAAC,QACGT;AAAAA,MAAQC,MAAAA;AAAAA,MAAAS,QAAAA;AAAAA,MAAAjH,SAGP2Q;AAAAA,IAAAA,CACV;AAAA,IAAC5L,cAAAA;AAAAA,IAAAS,iBAAAA;AAAAA,IAAAgM,aAAAA;AAAAA,IAAAD,aAAAA;AAAAA,IAAAG,WAAAA;AAAAA,IAAAC,cAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAAvM,YAAAA;AAAAA,IAAA2O,aAAAA;AAAAA,IAAAF,YAAAA;AAAAA,EAAAA,CAWH,GAAChiB,QAAAkP,GAAAlP,QAAAgiB,GAAAhiB,QAAA4U,GAAA5U,QAAAkT,GAAAlT,QAAAiJ,GAAAjJ,QAAAsV,GAAAtV,QAAAmT,GAAAnT,QAAAoT,GAAApT,QAAAsT,GAAAtT,QAAAqT,GAAArT,QAAA6Z,GAAA7Z,QAAA6f,GAAA7f,QAAAuT,GAAAvT,QAAA4f,GAAA5f,QAAA+f,GAAA/f,QAAA6T,GAAA7T,QAAAggB,GAAAhgB,QAAA8f,GAAA9f,QAAAY,GAAAZ,QAAAgf,GAAAhf,QAAAkiB,GAAAliB,QAAA6U,GAAA7U,QAAAiX,GAAAjX,QAAAa,KAAAA,IAAAb,EAAA,EAAA,GA5BKa;AA4BL;ACjEJ,MAAMwb,KAAqB,CAACzB,EAAoB;AAEzC,SAASmI,GAAiB;AAAA,EAC/B7T,UAAAA;AAAAA,EACAiE,OAAAA;AAAAA,EACAnH,cAAc;AAAA,IAAE7C,QAAAA,IAASsS,GAActS;AAAAA,EAAAA,IAAW;AAAA,IAChDA,QAAQsS,GAActS;AAAAA,EACxB;AAAA,EACA8I,YAAAA,IAAa,CAAC;AAAA,EACd+M,aAAAA;AAGF,GAAG;AACK,QAAA;AAAA,IACJa,aAAAA;AAAAA,IACAF,mBAAAA;AAAAA,IACAzM,SAAAA;AAAAA,IACAjK,UAAAA;AAAAA,IACA2W,aAAAA;AAAAA,IACAtK,QAAAA;AAAAA,IACA0K,cAAAA;AAAAA,IACAnL,MAAAA;AAAAA,IACAzB,cAAAA;AAAAA,MACEgN,GAAoB;AAAA,IAAEjN,OAAAA;AAAAA,EAAAA,CAAO,GAE3BpI,IAAWH,GAAetH,CAAUA,MAAAA,EAAMyH,QAAQ,GAClDkC,IAAYoC,EAAa/L,CAAUA,MAAAA,EAAM2J,SAAS,GAClDE,IAAekC,EAAa/L,CAAUA,MAAAA,EAAM6J,YAAY,GACxDqP,IAAYnN,EAChBoN,GAAYnZ,CACVA,MAAAA;;AAAAA,YAAAA,IAAAA,EAAM+I,KAAK8G,CAAK,MAAhB7P,gBAAAA,EAAmBnC,OAAO6B,OAAQmD,OAAM,CAACkW,GAAmBjP,SAASjH,CAAC;AAAA,GACxE,CACF,GACMwG,IAAkB0C,EAAa/L,CAAUA,MAAAA,EAAMqJ,eAAe,GAC9D+P,IAAyBC,GAAgC,EAAE;AAEjEtY,EAAAA,EAAU,OACJ6O,KACQC,EAAAA,GAAO,CAACyH,EAAoB,CAAC,GAGlC,MAAM;AACEzH,IAAAA,EAAAA,GAAO,CAACyH,EAAoB,CAAC;AAAA,EAC5C,IACC,CAAC3N,GAAW0S,GAAmBxM,GAAOhG,GAAc+F,CAAO,CAAC,GAE/D7O,EAAU,MAAM;AACdmY,IAAAA,KAAAA,QAAAA,EAAWe,QAASiB,CAAYA,MAAA;;AACxBC,YAAAA,KAAe9R,IAAAA,EAAgBwG,CAAK,MAArBxG,gBAAAA,EAAwBjK,MAAMvB,OAAOud,KACvDvY,CAAOA,MAAAA,EAAwBzD,MAAMxB,OAAOsd;AAG/C,MAAItL,MACFwJ,EAAuBvQ,QAAQqS,CAAO,IAAIC,KAAAA,gBAAAA,EAAc/b,MAAMkH;AAG1DA,YAAAA,IACJ,CAACsJ,MACAwJ,EAAuBvQ,QAAQqS,CAAO,MACrCC,KAAAA,gBAAAA,EAAc/b,MAAMkH;AAExBmB,MAAAA,EAASyT,GAAS;AAAA,QAChB9b,OAAO;AAAA,UACLkH,UAAAA;AAAAA,QAAAA;AAAAA,MACF,CACD;AAAA,IAAA;AAAA,EACF,GACA,CAACsJ,GAASvG,GAAiBwG,GAAOqJ,GAAWzR,CAAQ,CAAC;AAEnDtD,QAAAA,IAAS8M,EACb,CAAC;AAAA,IAAE3M,UAAAA;AAAAA,IAAUC,aAAAA;AAAAA,EAAAA,MAAkD;AACzDD,QAAAA,MAAanB,EAASI,QAAQ;AAChCuM,MAAAA,EAAc5L,mBAAmB;AACjC;AAAA,IAAA;AAGEI,IAAAA,MAAanB,EAASM,eACxB8Y,EAAYhY,EAAY+M,QAAQ,GAGtBgL,EAAA,CAAC,CAAC/X,EAAYoB,QAAQ;AAElC,UAAM4Q,IAAYhS,EAAYgS;AAE9B,IAAIA,KAAAA,QAAAA,EAAWnK,UACbsQ,EAAanG,CAAS;AAAA,KAG1B,CAACzG,GAAcyM,GAAaD,GAAaI,CAAY,CACvD;AAEA3b,SAAAA,EAAU,MAAM;AACd,UAAM0a,IAAa9V,IAAWE,EAAOC,OAAOH,WAAWE,EAAOC,OAAOP,SAC/DuJ,IAAanJ,IAAWE,EAAOC,OAAOH,WAAWE,EAAOC,OAAOJ,OAC/DgC,IAAQ8T,GAAyB;AAAA,MACrC7M,YAAY;AAAA,QACV,GAAGA;AAAAA,QACHrI,UAAUqI,EAAWrI,YAAY,CAACX;AAAAA,MACpC;AAAA,MACAiK,SAAAA;AAAAA,MACA6L,YAAAA;AAAAA,MACA3M,YAAAA;AAAAA,MACAkD,QAAAA;AAAAA,MACA7N,QAAAA;AAAAA,MACAoN,MAAAA;AAAAA,MACA1K,MAAMiJ;AAAAA,MACN4L,aAAAA;AAAAA,IAAAA,CACD;AAEDjU,IAAAA,EAAS6P,IAAsB5P,CAAK;AAAA,EAAA,GACnC,CACD/B,GACAmK,GACAnB,GACAqD,GACA7N,GACAsD,GACA5B,EAAOC,OAAOP,SACdM,EAAOC,OAAOH,UACdE,EAAOC,OAAOJ,OACdgW,GACAnK,GACA3B,CAAO,CACR,GAEMhE;AACT;AAEA6T,GAAiBlE,WAAW8D;AC3IrB,SAAAK,GAAAjjB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAmB;AAAA,IAAAkT,OAAAA;AAAAA,EAAAA,IAAApT;AAA6CS,MAAAA;AAAAR,EAAAA,SAAAmT,KAC3B7P,IAAAA,CAAAA,MAAWA,EAAK+I,KAAM8G,CAAK,GAAEnT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAvE,QAAA;AAAA,IAAAmB,QAAA8hB;AAAAA,EAAAA,IAA8B5T,EAAY7O,CAA6B,GACvEW,IAAeyJ,GAAA9I,EAAqC;AAACrB,MAAAA,GAAAC;AAAA,MAAAV,EAAAmB,CAAAA,MAAAA,KAAAnB,SAAAijB,GAAA;AAAAtiB,QAAAA;AAAAX,IAAAA,SAAAmB,KAI5Cqd,IAAAA,CAAAA,MAAard,EAAOqd,CAAO,GAACxe,OAAAmB,GAAAnB,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAD5BU,IAAAuiB,EAAS/f,IACTvC,CAA4B,EAACqC,OAAAT,EACR,GAACvC,OAAAmB,GAAAnB,OAAAijB,GAAAjjB,OAAAU;AAAAA,EAAAA;AAAAA,IAAAA,IAAAV,EAAA,CAAA;AAFtBU,SAAAA,IAAAA,GADcD;AAMF;AAVhB,SAAA8B,GAAAyI,GAAA;AAAA,SAAA,CAAA,CAOoBA;AAAK;AAPzB,SAAAlJ,GAAAgC,GAAA;AAAA,SAEmCR,EAAKnC;AAAA;ACA/C,MAAM+hB,KAAwB,CAC5Bnb,IACAD,IACA8S,EAAoB;AAGf,SAASuI,GAAWhiB,GAAiB;AACpCiiB,QAAAA,IAAejiB,EAClB6B,OAAQgI,CAAAA,MAAU,CAACkY,GAAsB9V,SAASpC,EAAMtI,MAAMxB,EAAG,CAAC,EAClEmiB,KAAK,CAACC,GAAGC,OAAOD,EAAEE,SAASC,UAAaF,EAAEC,SAASC,MAAS,GAEzDC,IAAaR,GAChBhgB,IAAKhC,CAAOC,MAAAA,EAAOud,KAAM1T,CAAUA,MAAAA,EAAMtI,MAAMxB,OAAOA,CAAE,CAAC,EACzD8B,OAAQmD,CAAMA,MAAA,CAAC,CAACA,CAAC;AAEpB,SAAO,CAAC,GAAGid,GAAc,GAAGM,CAAU;AACxC;ACVA,MAAMC,KAAmB;AAElB,SAASC,GAAa;AAAA,EAC3B1iB,IAAAA;AAAAA,EACAf,QAAAA;AAAAA,EACAoB,mBAAAA;AAAAA,EACA,GAAGmB;AACc,GAAG;AACd,QAAA;AAAA,IAAE1B,SAAAA;AAAAA,IAASd,aAAAA;AAAAA,IAAaG,YAAAA;AAAAA,EAAAA,IAAegP,EAC1C/L,CAAAA,MAAUA,EAAM+I,KAAKnL,CAAE,CAC1B,GACM2iB,IAAWlH,GAA8B,IAAI,GAC7CnZ,IAAY6L,EAAa/L,CAAAA,MAAUA,EAAMgK,WAAWpM,CAAE,CAAC,GACvDyM,IAAe0B,EAAa/L,CAAUA,MAAAA,EAAMqK,YAAY,GACxDpB,IAAU8C,EAAa/L,CAAUA,MAAAA,EAAMiJ,OAAO,GAC9CC,IAAgB6C,EAAa/L,CAAUA,MAAAA,EAAMkJ,aAAa,GAC1DgB,IAAiB6B,EAAa/L,CAAUA,MAAAA,EAAMkK,cAAc,GAE5DrM,IAAS6hB,GAAU;AAAA,IAAE7P,OAAOjS;AAAAA,EAAAA,CAAI,GAChC4iB,IAAiB3P,GAAQ,MACtBgP,GAAWhiB,CAAM,GACvB,CAACA,CAAM,CAAC,GAELuC,IAAwB6Q,EAC5B,CAAChG,MAA0D;AACzD,UAAMwV,IAAWpW;AAWjB,QATIY,EAAayV,iBAAiBC,cAC5BJ,EAAS1X,WACX+X,cAAcL,EAAS1X,OAAO,GAEvBA,EAAAA,UAAUgY,WAAW,MAAM;AAClC3W,MAAAA,EAAetM,CAAE;AAAA,OAChByiB,EAAgB,IAGjBpiB,GAAmB;AACrBA,MAAAA,EAAkBgN,GAAcwV,CAAQ;AACxC;AAAA,IAAA;AAGO7iB,IAAAA,EAAAA,GAAIqN,EAAa/K,SAAS;AAAA,KAErC,CAACtC,GAAIK,GAAmBoM,GAAcH,CAAc,CACtD,GAEMtJ,IAAaqQ,EACjB,CAACrK,MAAsE;AACrEqC,IAAAA,EAAQrL,GAAIgJ,CAAK,GACjB/J,KAAAA,QAAAA,EAAS+J,IACTsD,EAAetM,CAAE;AAAA,KAEnB,CAACA,GAAIf,GAAQoM,GAASiB,CAAc,CACtC,GAEM4W,IAAoB7P,EACxB,CACE8P,MAGG;;AACH,UAAMljB,KAASjB,KAAAA,IAAAA,KAAAA,gBAAAA,EAAaiM,YAAbjM,gBAAAA,EAAsB0M,SAAtB1M,gBAAAA,EAA4BwC,MAAMvB,QAC3C+K,IAAkB,CAAC,EAAC/K,KAAAA,QAAAA,EAAQmB,MAC/B0I,CAAAA,MAAWA,KAAAA,gBAAAA,EAAwB9I;AAEtCsK,IAAAA,EAActL,GAAIgL,CAAe,IACjCxJ,IAAAA,EAAM4hB,kBAAN5hB,QAAAA,EAAAA,KAAAA,GAAsB2hB;AAAAA,KAExB,CAACnjB,GAAIhB,GAAawC,GAAO8J,CAAa,CACxC,GAGM+X,IAAa7hB,EAAM8hB,WACnBC,IAAgBlQ,EACpB,IAAIxF,MAA4D;AAC9DvB,IAAAA,EAAetM,CAAE,GACbqjB,KACFA,EAAW,GAAGxV,CAAI;AAAA,EAGtB,GAAA,CAAC7N,GAAIsM,GAAgB+W,CAAU,CACjC;AAEA,2BACGzkB,IACC,EAAA,GAAI4C,GACJ,QAAQohB,GACR,aAAA5jB,GACA,YAAAG,GACA,SAAAW,GACA,kBAAkBwC,GAClB,QAAQU,GACR,mBAAmBR,GACnB,eAAe0gB,GACf,WAAWK,GACX;AAEN;AC9GO,MAAMC,KAAa,sCAEbC,KAAW,MCgBXC,KAAiB/Z,GAAqBC,CAASA,OAAA;AAAA,EAC1D+Z,SAAS,CAAC;AAAA,EACVC,WAAWA,CAAC5jB,GAAIuP,MACd3F,EAAKxH,CAAUA,MAAA;AACb,UAAMuhB,IAAU;AAAA,MAAE,GAAGvhB,EAAMuhB;AAAAA,IAAQ;AAEnC,QAAI,CAACpU;AACH,oBAAOoU,EAAQ3jB,CAAE,GACV;AAAA,QAAE2jB,SAAAA;AAAAA,MAAQ;AAGnB,UAAME,IAAY;AAAA,MAChB,GAAIF,EAAQ3jB,CAAE,KAAK;AAAA,QACjB8jB,YAAYN;AAAAA,QACZO,UAAUN;AAAAA,MACZ;AAAA,MACA,GAAGlU;AAAAA,IACL,GAEMyU,IAA6BC,GAAgB;AAAA,MACjD1U,QAAQsU;AAAAA,IAAAA,CACT;AAEDA,WAAAA,EAAUG,UAAUA,GAEpBL,EAAQ3jB,CAAE,IAAI6jB,GAEP;AAAA,MAAEF,SAAAA;AAAAA,IAAQ;AAAA,EAClB,CAAA;AACL,EAAE;AAEK,SAAAO,GAAAlkB,GAAA;AAAAlB,QAAAA,IAAAC,EAAA,CAAA;AAAAF,MAAAA;AAAAC,SAAAA,SAAAkB,KACiBoC,IAAAA,CAAAA,MAAWA,EAAKuhB,QAAS3jB,CAAE,GAAClB,OAAAkB,GAAAlB,OAAAD,KAAAA,IAAAC,EAAA,CAAA,GAA3C4kB,GAAe7kB,CAA4B;AAAC;AAGrD,SAASolB,GAAgB;AAAA,EAAE1U,QAAAA;AAA2B,GAAG;AACvD,QAAMpC,IAAU;AAAA,IACdgX,OAAOA,MAAM;AACX,YAAMN,IAAYtU;AAClB,aAAO,IAAI6U,GAAkB;AAAA,QAC3B,GAAGP;AAAAA,QACHQ,aAAa;AAAA,QACbC,UAAUT,EAAUpd;AAAAA,QACpB8d,iBAAiBV,EAAUU,mBAAmB;AAAA,MAAA,CAC/C;AAAA,IACH;AAAA,IACAC,OAAOA,MAAM;AACX,YAAMX,IAAYtU;AAClB,aAAO,IAAIkV,GAAkB;AAAA,QAC3B,GAAGZ;AAAAA,QACHQ,aAAa;AAAA,QACbK,WAAWb,EAAUpd;AAAAA,QACrB8d,iBAAiBV,EAAUU,mBAAmB;AAAA,MAAA,CAC/C;AAAA,IACH;AAAA,IACAI,SAASA,MAAM;AACb,YAAMd,IAAYtU;AAClB,aAAO,IAAIqV,GAAoB;AAAA,QAC7B,GAAGf;AAAAA,QACHQ,aAAa;AAAA,QACbK,WAAWb,EAAUpd;AAAAA,QACrBoe,YAAYhB,EAAUgB,cAAcC,GAAWC;AAAAA,QAC/CR,iBAAiBV,EAAUU,mBAAmB;AAAA,MAAA,CAC/C;AAAA,IACH;AAAA,IACAS,QAAQA,MAAM;AACZ,YAAMnB,IAAYtU;AAEd,aAACsU,EAAUoB,iBAIR,IAAIC,GAAmB;AAAA,QAC5B,GAAGrB;AAAAA,QACHQ,aAAa;AAAA,QACbK,WAAWb,EAAUpd;AAAAA,QACrB8d,iBAAiB;AAAA,QACjBU,gBAAgBpB,EAAUoB;AAAAA,MAAAA,CAC3B,IATQ;AAAA,IASR;AAAA,EAEL,GAEM5e,IAAMkJ,EAAOtR,KAAKknB,MAAM,GAAG,EAAE,CAAC,GAC9BC,IAASjY,EAAQ9G,CAAG;AAE1B,SAAO+e,KAAAA,gBAAAA;AACT;ACrGgBC,SAAAA,GAAehB,GAAqBiB,GAAkB;AAC9D/V,QAAAA,IAAS2U,GAAUoB,CAAQ;AACjC,SAAOrS,GAAQ,MAAM;AACnB,UAAMsS,IAAchW,KAAAA,gBAAAA,EAAQyU;AACxB,WAAA,CAACuB,KAAe,CAAClB,IACZ,QAGTkB,EAAY/jB,MAAM6iB,cAAcA,GACzBkB;AAAAA,EAAAA,GACN,CAAClB,GAAa9U,CAAM,CAAC;AAC1B;ACNO,SAAAiW,GAAA3mB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAKyBU,MAAAA;AAAAT,EAAAA,SAAAQ,KADtCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,cACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWK,cAAgBH,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC7Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA6CqS,SAC7CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAAmmB,GAAAnnB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAyB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK/BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBV,GAAcS,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACtC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;AC5BvB,SAAA6mB,GAAAtnB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAqB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAK2BU,MAAAA;AAAAT,EAAAA,SAAAQ,KADtCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,YACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWa,YAAcX,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC3Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA2CqS,SAC3CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAAwmB,GAAAxnB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAuB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK7BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBC,GAAYF,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACpC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;AC/BvB,SAAAgnB,GAAAznB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAK0BU,MAAAA;AAAAT,EAAAA,SAAAQ,KADpCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,WACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWgB,WAAad,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC1Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA0CqS,SAC1CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAA2mB,GAAA3nB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAsB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK5BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBI,GAAWL,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACnC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;ACzBvB,SAAAmnB,GAAA5nB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAK4BU,MAAAA;AAAAT,EAAAA,SAAAQ,KADxCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,aACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWmB,aAAejB,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC5Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA4CqS,SAC5CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAA8mB,GAAA9nB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAwB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK9BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBO,GAAaR,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACrC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;AC/BvB,SAAAsnB,GAAA/nB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAKwBU,MAAAA;AAAAT,EAAAA,SAAAQ,KADhCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,SACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWsB,SAAWpB,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AACxCc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAAwCqS,SACxCpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAAinB,GAAAjoB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAoB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK1BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBU,GAASX,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACjC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;AC5BvB,SAAAynB,GAAAloB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAoB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAK0BU,MAAAA;AAAAT,EAAAA,SAAAQ,KADpCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,WACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAWyB,WAAavB,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC1Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA0CqS,SAC1CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAAonB,GAAApoB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAsB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK5BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBa,GAAWd,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACnC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;AC5BvB,SAAA4nB,GAAAroB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAkB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAKwBU,MAAAA;AAAAT,EAAAA,SAAAQ,KADhCA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,SACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAW4B,SAAW1B,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AACxCc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAAwCqS,SACxCpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAAunB,GAAAvoB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAoB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAK1BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBgB,GAASjB,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACjC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;ACzBvB,SAAA+nB,GAAAxoB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAuB;AAAA,IAAAslB,aAAAA;AAAAA,IAAAiB,UAAAA;AAAAA,IAAAG,aAAAA;AAAAA,IAAAC,eAAApmB;AAAAA,EAAAA,IAAAT;AAK6BU,MAAAA;AAAAT,EAAAA,SAAAQ,KAD1CA,IAAAA,MAAyCgB,cAAzChB,GAAyCR,OAAAQ,GAAAR,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAAAU,MAAAA,GAAAkmB;AAAA5mB,EAAAA,SAAAS,KAAzC;AAAA,IAAAyS,SAAAxS;AAAAA,IAAA,GAAAkmB;AAAAA,EAAAA,IAAAnmB,GAAyCT,OAAAS,GAAAT,OAAAU,GAAAV,OAAA4mB,MAAAlmB,IAAAV,EAAA,CAAA,GAAA4mB,IAAA5mB,EAAA,CAAA;AAAvCkT,QAAAA,IAAAxS,MAAcc,cAAdd,GAEjB+lB,IAAoBF,GAAehB,GAAaiB,CAAQ,GAOpD7lB,IAAA8lB,KAAAA,gBAAAA,EAAW/jB,MAAAmkB;AAAejmB,MAAAA;AAAA,EAAAZ,EAAA,CAAA,MAAAulB,KAAAvlB,EAAAwmB,CAAAA,MAAAA,KAAAxmB,EAAAW,CAAAA,MAAAA,KAAAX,SAAA2mB,KALlB/lB,IAAA,CACR,eACA4lB,GACAjB,GACAoB,GACAhmB,CAA0B,GAC3BX,OAAAulB,GAAAvlB,OAAAwmB,GAAAxmB,OAAAW,GAAAX,OAAA2mB,GAAA3mB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAAymB,EAAAA,MAAAA,KAAAzmB,UAAA2mB,KACQ9lB,IAAAA,MAAM4lB,KAAAA,gBAAAA,EAAW+B,cAAgB7B,IAAY3mB,QAAAymB,GAAAzmB,QAAA2mB,GAAA3mB,QAAAa,KAAAA,IAAAb,EAAA,EAAA;AAC7Cc,QAAAA,IAAA,CAAA,CAAE2lB,KAAevT;AAAOnS,MAAAA;AAAA,SAAAf,EAAA,EAAA,MAAAY,KAAAZ,EAAAa,EAAAA,MAAAA,KAAAb,EAAAc,EAAAA,MAAAA,KAAAd,UAAA4mB,KATnB7lB,IAAA;AAAA,IAAAgmB,UACJnmB;AAAAA,IAMTomB,SACQnmB;AAAAA,IAA6CqS,SAC7CpS;AAAAA,IAAwB,GAC9B8lB;AAAAA,EAAa,GACjB5mB,QAAAY,GAAAZ,QAAAa,GAAAb,QAAAc,GAAAd,QAAA4mB,GAAA5mB,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAXMinB,GAASlmB,CAWf;AAAC;AAGG,SAAA0nB,GAAA1oB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA;AAAAiP,MAAAA,GAAAiY;AAAAnnB,EAAAA,SAAAD,KAAyB;AAAA,IAAAmP,UAAAA;AAAAA,IAAA,GAAAiY;AAAAA,EAAAA,IAAApnB,GAO/BC,OAAAD,GAAAC,OAAAkP,GAAAlP,OAAAmnB,MAAAjY,IAAAlP,EAAA,CAAA,GAAAmnB,IAAAnnB,EAAA,CAAA;AACConB,QAAAA,IAAoBmB,GAAcpB,CAAU;AAAC3mB,MAAAA;AAAA,SAAAR,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAAonB,KACtC5mB,IAAA0O,EAASkY,CAAW,GAACpnB,OAAAkP,GAAAlP,OAAAonB,GAAApnB,OAAAQ,KAAAA,IAAAR,EAAA,CAAA,GAArBQ;AAAqB;ACxBvB,SAAAkoB,GAAA3oB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAiP,UAAAA;AAAAA,IAAA7C,MAAAA;AAAAA,IAAAsc,YAAAnoB;AAAAA,IAAAooB,cAAAnoB;AAAAA,EAAAA,IAAAV;AAKFW,MAAAA;AAAAV,EAAAA,SAAAQ,KAFzBA,IAAAA,MAAegB,cAAfhB,GAAeR,OAAAQ,GAAAR,OAAAU,KAAAA,IAAAV,EAAA,CAAA;AAAf,QAAA2oB,IAAAjoB;AAAeC,MAAAA;AAAAX,EAAAA,SAAAS,KACfA,IAAAA,MAAiBe,cAAjBf,GAAiBT,OAAAS,GAAAT,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAAjB,QAAA4oB,IAAAjoB;AAAiBC,MAAAA;AAAA,EAAAZ,EAAAkP,CAAAA,MAAAA,KAAAlP,SAAA4oB,KAKXhoB,IAAC,gBAAAgE,EAAAsb,IAAA,EAAiC0I,QAAAA,GACxB,UAAA1Z,GACV,GAA2BlP,OAAAkP,GAAAlP,OAAA4oB,GAAA5oB,OAAAY,KAAAA,IAAAZ,EAAA,CAAA;AAAAa,MAAAA;AAAA,EAAAb,EAAA2oB,CAAAA,MAAAA,KAAA3oB,SAAAY,KAH7BC,IAAC,gBAAA+D,EAAAoP,IAAA,EAA2B2U,QAAAA,GAC1B/nB,UAGFA,GAAA,GAAqBZ,OAAA2oB,GAAA3oB,OAAAY,GAAAZ,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAAAc,MAAAA;AAAA,SAAAd,EAAAqM,EAAAA,MAAAA,KAAArM,UAAAa,KALvBC,IAAC,gBAAA8D,EAAAW,IAAA,EAAoB8G,QAAAA,GACnBxL,UAKFA,GAAA,GAAcb,QAAAqM,GAAArM,QAAAa,GAAAb,QAAAc,KAAAA,IAAAd,EAAA,EAAA,GANdc;AAMc;ACtBF+nB,SAAAA,GACdC,GACA/E,GACA;AACA,QAAM5iB,IAASyJ,GAAetH,CAAUA,MAAAA,EAAMnC,MAAM,GAC9C4J,IAAWH,GAAetH,CAAUA,MAAAA,EAAMyH,QAAQ,GAElDge,IAAa5U,GAAQ,MAClBgP,GAAW2F,EAAS5lB,IAAKhC,CAAAA,MAAOC,EAAOD,CAAE,CAAC,EAAE8B,OAAQmD,CAAAA,MAAM,CAAC,CAACA,CAAC,CAAC,GACpE,CAAChF,GAAQ2nB,CAAQ,CAAC,GAEftd,IAAS2I,GAAQ,MACd4U,EAAW7lB,IAAI6gB,CAAQ,GAC7B,CAACA,GAAUgF,CAAU,CAAC,GAEnBC,IAAqBzU,EACzB,CAAC;AAAA,IACCrT,IAAAA;AAAAA,IACA2I,SAAAA;AAAAA,IACA,GAAG2B;AAAAA,EAAAA,MAIwB;AAC3BT,IAAAA,EAAS7J,GAAI;AAAA,MACXwB,OAAO;AAAA,QAAEmH,SAAAA;AAAAA,MAAQ;AAAA,MACjB2B,QAAAA;AAAAA,IAAAA,CACD;AAAA,EAAA,GAEH,CAACT,CAAQ,CACX,GAEMke,IAAsB1U,EAC1B,CAAC;AAAA,IAAErT,IAAAA;AAAAA,IAAIgoB,WAAAA;AAAAA,EAAAA,MAAoD;AACzDne,IAAAA,EAAS7J,GAAI;AAAA,MACXsK,QAAQ;AAAA,QACN0d,WAAAA;AAAAA,MAAAA;AAAAA,IACF,CACD;AAAA,EAAA,GAEH,CAACne,CAAQ,CACX,GAEMoe,IAAkB5U,EACtB,CAAC;AAAA,IAAErT,IAAAA;AAAAA,IAAIkoB,SAAAA;AAAAA,EAAAA,MAA+C;AACpDre,IAAAA,EAAS7J,GAAI;AAAA,MACXwB,OAAO;AAAA,QAAE0mB,SAAAA;AAAAA,MAAAA;AAAAA,IAAQ,CAClB;AAAA,EAAA,GAEH,CAACre,CAAQ,CACX;AAEO,SAAA;AAAA,IACLS,QAAAA;AAAAA,IACAwd,oBAAAA;AAAAA,IACAG,iBAAAA;AAAAA,IACAF,qBAAAA;AAAAA,EACF;AACF;ACxDO,SAASI,GAAiB;AAAA,EAC/BlW,OAAAA;AAGF,GAAG;AACD,QAAM,CAACmW,GAAYC,CAAa,IAAInnB,GAA6BZ,MAAS,GACpE,CAACgoB,GAAWC,CAAY,IAAIrnB,GAAS,EAAK,GAC1CpB,IAAUqO,EAAa/L,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAM+I,KAAK8G,CAAK,MAAhB7P,gBAAAA,EAAmBtC;AAAAA,GAAO,GAC3D0oB,IAAiBra,EAAa/L,CAAUA,MAAAA,EAAMqJ,eAAe,GAC7Dgd,IAAoBta,EAAa/L,CAAUA,MAAAA,EAAMmJ,kBAAkB,GAEnEP,IAAkBmD,EACrB/L,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAM+I,KAAK8G,CAAK,MAAhB7P,gBAAAA,EAAmB4I;AAAAA,GAChC,GAGM1J,IAFW6M,EAAa/L,CAAAA,MAAAA;;AAAUA,YAAAA,IAAAA,EAAM+I,KAAK8G,CAAK,MAAhB7P,gBAAAA,EAAmBpB;AAAAA,GAAQ,KAEnCgK,GAE1B;AAAA,IAAE/M,MAAAA;AAAAA,EAAAA,IAASF,GAAa+B,CAAO,GAC/B6B,IAAU1D,MAASL,GAAUE,YAE7B4qB,IAAkBrV,EAAY,YAAY;AACxCsV,UAAAA,IAAeH,EAAevW,CAAK,GACnC2W,IAAkBH,EAAkBxW,CAAK;AAC3C,QAAA;AACI4W,YAAAA,IAASlkB,SAASmkB,cAAc,QAAQ;AACvCC,MAAAA,EAAAA,QAAQJ,EAAaI,SAAS,GAC9BC,EAAAA,SAASL,EAAaK,UAAU;AAEjC7F,YAAAA,IAAU0F,EAAOI,WAAW,IAAI;AAEtC,UAAItnB,GAAS;AACX,cAAMunB,IAAmBN;AAEpBM,YAAAA,EAAiBC,iBAAiB,MAAiB;AAChD,gBAAA,IAAI1a,MAAM,+CAA+C;AAGjE,cAAMhI,IAAO,MAAM2iB,GAAYF,EAAiBG,UAAU;AAAA,UACxDC,SAAS;AAAA,QAAA,CACV;AACDnG,QAAAA,KAAAA,QAAAA,EAASoG,UAAU9iB,GAAM,GAAG,GAAGkiB,EAAaI,OAAOJ,EAAaK;AAAAA,MAAM,OACjE;AACL,cAAME,IAAmBN;AACzBM,QAAAA,EAAiBM,OAAO,GACfD,KAAAA,QAAAA,EAAAA,UACPL,EAAiBO,OAASC,EAAAA,UAAAA,GAC1B,GACA,GACAf,EAAaI,OACbJ,EAAaK;AAAAA,MACf;AAGFL,MAAAA,KAAAA,QAAAA,EAAca,OAAO,eACZD,KAAAA,QAAAA,EAAAA,UACPZ,EAAae,aACb,GACA,GACAf,EAAaI,OACbJ,EAAaK;AAGTviB,YAAAA,IAAOoiB,EAAOc,UAAU;AAE9BtB,MAAAA,EAAc5hB,CAAI;AAAA,aACXmjB,GAAK;AAEZC,cAAQC,MAAMF,CAAG;AAAA,IAAA,UACT;AACRrB,MAAAA,EAAa,EAAK;AAAA,IAAA;AAAA,KAEnB,CAACC,GAAgB7mB,GAASsQ,GAAOwW,CAAiB,CAAC;AAS/C,SAAA;AAAA,IACLsB,gBARqB1W,EAAY,MAAM;AAEvC,MADAkV,EAAa,EAAI,GACZjnB,KAEAonB,EAAgB;AAAA,IAAA,GACpB,CAACA,GAAiBpnB,CAAW,CAAC;AAAA,IAI/BgnB,WAAAA;AAAAA,IACAF,YAAAA;AAAAA,EACF;AACF;ACjFO,SAAA4B,GAAAnrB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAA0B;AAAA,IAAAkT,OAAAA;AAAAA,EAAAA,IAAApT;AAIhCS,MAAAA;AAAAR,EAAAA,SAAAmT,KACwD3S,IAAA;AAAA,IAAA2S,OAAAA;AAAAA,EAAA,GAASnT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAhEmrB,QAAAA,IAA8BC,GAAyB5qB,CAAS;AAACC,MAAAA;AAAAT,EAAAA,SAAAmT,KAEN1S,IAAA;AAAA,IAAA0S,OAAAA;AAAAA,EAAA,GAE1DnT,OAAAmT,GAAAnT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAFDqrB,QAAAA,IAAgCC,GAA2B7qB,CAE1D,GAGgBC,IAAA2qB,KAA2BF;AAAqBxqB,MAAAA;AAAAX,SAAAA,EAAAqrB,CAAAA,MAAAA,KAAArrB,SAAAU,KAAAV,EAAA,CAAA,MAAAmrB,KAD1DxqB,IAAA;AAAA,IAAA4qB,eACU7qB;AAAAA,IAAgD2qB,yBAAAA;AAAAA,IAAAF,uBAAAA;AAAAA,EAAA,GAGhEnrB,OAAAqrB,GAAArrB,OAAAU,GAAAV,OAAAmrB,GAAAnrB,OAAAW,KAAAA,IAAAX,EAAA,CAAA,GAJMW;AAIN;AAGI,SAAAyqB,GAAArrB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAkC;AAAA,IAAAkT,OAAAA;AAAAA,EAAAA,IAAApT;AAIxCS,MAAAA;AAAAR,EAAAA,SAAAmT,KAC8B7P,IAAAA,CAAAA,MAAWA,EAAKiK,UAAW4F,CAAK,GAACnT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAA9DsO,QAAAA,IAAiBe,EAAY7O,CAAiC;AAACC,MAAAA;AAAA,EAAA+qB,GAAA;AAAA,QAAA,CAGxDld,GAAQ;AAAE9M,MAAAA,IAAAA;AAAMgqB,YAAAA;AAAAA,IAAAA;AAAA9qB,QAAAA;AAAAV,IAAAA,SAAAsO,KACdmd,IAAAA,GAA4Bnd,EAAQod,WAAY,GAAC1rB,OAAAsO,GAAAtO,OAAAU,KAAAA,IAAAV,EAAA,CAAA,GAAjDU,IAAAA;AAAAA,EAAAA;AAFFD,SAAAA;AAGO;AAGT,SAAA6qB,GAAAvrB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAAoC;AAAA,IAAAkT,OAAAA;AAAAA,EAAAA,IAAApT;AAI1CS,MAAAA;AAAAR,EAAAA,SAAAmT,KACoC3S,IAAA8C,CAAWA,MAAAA;;AAAAA,YAAAA,IAAAA,EAAKqE,KAAMwL,CAAK,MAAhB7P,gBAAAA,EAAgB6L;AAAAA,KAASnP,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AAAvE2rB,QAAAA,IAAgB1X,EAAmBzT,CAAoC;AAACC,MAAAA;AAAA,EAAA+qB,GAAA;AAAA9qB,QAAAA;AAAAV,QAAAA,SAAA2rB,GAAA;AAGtE,YAAAxc,IAAeqF,GAAA;AAAA,QAAArF,QAAwBwc;AAAAA,MAAAA,CAAS,EAAC3oB,OAAAlB,EAEjD;AAEKqN,UAAAA,EAAAA,KAAAA,QAAAA,EAAMO,SAAA;AAAUlO,QAAAA,IAAAA;AAAMgqB,cAAAA;AAAAA,MAAAA;AAEpB9qB,MAAAA,IAAAkrB,GACLzc,EAAMjM,IAAAX,EAAuD,CAC/D,GAACvC,OAAA2rB,GAAA3rB,OAAAU,GAAAV,OAAAS;AAAAA,IAAAA;AAAAC,MAAAA,IAAAV,EAAA,CAAA,GAAAS,IAAAT,EAAA,CAAA;AAFDS,IAAAA,IAAOC,EAENoY;AAAAA,EAAAA;AATIrY,SAAAA;AAUM;AAjBR,SAAA8B,GAAAspB,GAAA;AAAA,SAesB3hB,EAAK4O,SAAoBR;AAAA;AAf/C,SAAAxW,GAAAoI,GAAA;AAAA,SASUA,EAAK0J,WAAA/J;AAAA;ACpDf,MAAMiiB,KAAiB;AAAA,EAC5BC,UAAU;AAAA,EACV3lB,SAAS;AAAA,EACT4lB,QAAQ;AACV,GCAaC,KAAyB;AAAA,EACpC,CAACH,GAAeC,QAAQ,GAAG;AAAA,IACzB5sB,MAAM2sB,GAAeC;AAAAA,IACrBG,QAAQA,CAAChiB,GAAcoL,MACd6W,GAAejiB,GAAiBoL,CAAM;AAAA,EAEjD;AAAA,EACA,CAACwW,GAAeE,MAAM,GAAG;AAAA,IACvB7sB,MAAM2sB,GAAeE;AAAAA,IACrBE,QAAQA,CAAChiB,GAAcoL,MACde,GAAanM,GAAiBoL,CAAM;AAAA,EAE/C;AAAA,EACA,CAACwW,GAAe1lB,OAAO,GAAG;AAAA,IACxBjH,MAAM2sB,GAAe1lB;AAAAA,IACrB8lB,QAAQA,CAAChiB,MACAA,EAAMkiB,eAAe;AAAA,EAC9B;AAEJ;ACgBO,SAASC,GAA8C;AAAA,EAC5DzY,YAAAA;AAAAA,EACA0Y,YAAAA,IAAa,CAAC;AAAA,EACdC,gBAAAA,IAAiB/c,OAAOC,KAAKmE,CAAU;AAAA,EACvC0B,QAAAA,IAAS;AAAA,EACTkX,gBAAAA,IAAiB;AAAA,EACjBC,OAAAA;AAAAA,EACAC,eAAAA,IAAgBC;AAAAA,EAChBC,cAAAA,IAAeC;AAAAA,EACfC,UAAAA,IAAWC;AAAAA,EACXC,UAAAA,IAAWC;AACW,GAAW;AACjC,QAAMC,IAAST,IAAQK,EAASL,CAAK,IAAI,IAInCU,IAFYZ,EAEKrhB,OAAO,CAACC,GAAKiiB,MAAQ;AACpCC,UAAAA,IAAYf,EAAWc,CAAG,GAC1BljB,IAAQ0J,EAAWwZ,CAAG,GAEtBE,IAAmBN,EAAS9iB,GAAOoL,GAAQ+X,CAAS,GACpDE,IAAaf,IAAiBE,EAAcU,CAAG,IAAI;AAElDjiB,WAAAA,IAAMyhB,EAAaW,GAAYD,CAAgB;AAAA,KACrD,EAAE;AAEL,SAAOJ,IAASC;AAClB;AAEA,SAASJ,GAAUN,GAAe;AAChC,SAAO,iCAAiCA,CAAK;AAC/C;AAEA,SAASI,GAAcU,GAAoBrjB,GAAc;AAGhDsjB,SAFU,GAAGD,CAAU,GAAGrjB,CAAK;AAGxC;AAEA,SAAS+iB,GAAU/iB,GAAcoL,GAAgB+X,GAA4B;AACvE,MAAA;AAEKnB,WADQuB,GAAqBJ,CAAS,EAC/BnjB,GAAOoL,CAAM;AAAA,EAAA,QACrB;AACCpL,WAAAA;AAAAA,EAAAA;AAEX;AAEA,SAASujB,GAAqBJ,GAA4B;AACpD,SAAA,OAAOA,KAAc,aAChBA,MAINA,KAAapB,GAAWoB,CAAS,MAAMpB,GAAWH,GAAe1lB,OAAO,GAEjE8lB;AACZ;AAEA,SAASS,GAAee,GAAkB;AACxC,SAAO,WAAWA,CAAQ;AAC5B;AClGO,SAASC,GAAyB3iB,GAAc;;AAC9C,SAAA;AAAA,IACLke,YAAWle,IAAAA,EAAMQ,WAANR,gBAAAA,EAAcke;AAAAA,IACzB0E,cAAa5iB,IAAAA,EAAMQ,WAANR,gBAAAA,EAAc4iB;AAAAA,IAC3BC,aAAY7iB,IAAAA,EAAMQ,WAANR,gBAAAA,EAAc6iB;AAAAA,IAC1B3sB,IAAI8J,EAAMtI,MAAMxB;AAAAA,IAChBsK,SAAQR,IAAAA,EAAMQ,WAANR,gBAAAA,EAAc8iB;AAAAA,IACtB9f,UAAShD,IAAAA,EAAMQ,WAANR,gBAAAA,EAAcgD;AAAAA,IACvBF,UAAS9C,IAAAA,EAAMQ,WAANR,gBAAAA,EAAc8C;AAAAA,IACvBsb,SAASpe,EAAMtI,MAAM0mB,WAAW;AAAA,IAChC2E,qBAAoB/iB,IAAAA,EAAMQ,WAANR,gBAAAA,EAAcgjB;AAAAA,IAClCC,aAAYjjB,IAAAA,EAAMQ,WAANR,gBAAAA,EAAcijB;AAAAA,IAC1BxB,OAAOzhB,EAAMkjB;AAAAA,IACbrkB,SAASmB,EAAMtI,MAAMmH,WAAW;AAAA,EAClC;AACF;ACbO,SAAAskB,GAAApuB,GAAA;AAAAC,QAAAA,IAAAC,EAAA,EAAA,GAAsB;AAAA,IAAAiP,UAAAA;AAAAA,IAAAiE,OAAAA;AAAAA,EAAAA,IAAApT;AAAgCS,MAAAA;AAAAR,EAAAA,SAAAmT,KAEzD7P,IAAAA,CAAAA,MAAWA,EAAKgK,WAAY6F,CAAK,GAAEnT,OAAAmT,GAAAnT,OAAAQ,KAAAA,IAAAR,EAAA,CAAA;AADrC,QAAA;AAAA,IAAAmF,MAAAA;AAAAA,IAAA6I,SAAAA;AAAAA,IAAAF,SAAAA;AAAAA,EAAAA,IAAmCuB,EACjC7O,CACF;AAACC,MAAAA;AAAAT,EAAAA,SAAAmT,KAC4B1S,IAAAqD,CAAWR,MAAAA,EAAK+I,KAAM8G,CAAK,EAAAjH,iBAAkBlM,OAAAmT,GAAAnT,OAAAS,KAAAA,IAAAT,EAAA,CAAA;AAA1EkC,QAAAA,IAAiBmN,EAAY5O,CAA6C,GAE1EmN,IAAgByB,EAAAvN,EAAoC,GACpD4M,IAAcW,EAAA9M,EAAkC,GAMnC7B,KAACwB;AAAQvB,MAAAA;AAAA,EAAAX,EAAAmT,CAAAA,MAAAA,KAAAnT,SAAA4N,KACCwgB,IAAAA,CAAAA,MAAUxgB,EAAQuF,GAAOhO,CAAI,GAACnF,OAAAmT,GAAAnT,OAAA4N,GAAA5N,OAAAW,KAAAA,IAAAX,EAAA,CAAA;AAA1C,QAAAY,IAAAD;AAA6DE,MAAAA;AAAA,EAAAb,EAAA0O,CAAAA,MAAAA,KAAA1O,SAAAmT,KAEpE3P,IAAAA,CAAAA,MAA4CkL,EAAMyE,GAAO3P,CAAS,GAACxD,OAAA0O,GAAA1O,OAAAmT,GAAAnT,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAD9D,QAAAc,IAAAD;AAGNE,MAAAA;AAAAf,SAAAA,EAAAkP,EAAAA,MAAAA,KAAAlP,EAAAgO,EAAAA,MAAAA,KAAAhO,EAAA8N,EAAAA,MAAAA,KAAA9N,UAAAU,KAAAV,EAAA,EAAA,MAAAY,KAAAZ,EAAA,EAAA,MAAAc,KAAAd,EAAA,EAAA,MAAAmF,KATIpE,IAAAmO,EAAQ;AAAA,IAAA/J,MAAAA;AAAAA,IAAA6I,SAAAA;AAAAA,IAAAF,SAAAA;AAAAA,IAAA0b,WAIF9oB;AAAAA,IAASkN,SACXhN;AAAAA,IAA6D8N,OAC/D5N;AAAAA,EAAAA,CAIR,GAACd,QAAAkP,GAAAlP,QAAAgO,GAAAhO,QAAA8N,GAAA9N,QAAAU,GAAAV,QAAAY,GAAAZ,QAAAc,GAAAd,QAAAmF,GAAAnF,QAAAe,KAAAA,IAAAf,EAAA,EAAA,GAVKe;AAUL;AAnBG,SAAAwB,GAAAmgB,GAAA;AAAA,SAOgCpf,EAAKoL;AAAA;AAPrC,SAAA5M,GAAAue,GAAA;AAAA,SAMkC/c,EAAKsK;AAAA;","x_google_ignoreList":[10]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/const.ts","../src/helpers.ts","../src/deckgl.tsx","../src/editable/const.ts","../src/editable/lasso-tools/modes/custom-edit-mode.class.tsx","../src/editable/lasso-tools/const.ts","../src/providers/layers/store.ts","../src/providers/map/const.ts","../src/providers/map/store.ts","../src/providers/map/provider.tsx","../../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js","../src/editable/lasso-tools/layer.tsx","../src/editable/lasso-tools/provider/store.ts","../src/editable/lasso-tools/provider/provider.tsx","../src/editable/lasso-tools/lasso-tools-control.tsx","../src/editable/lasso-tools/util.ts","../src/editable/measurement-tools/utils.ts","../src/editable/measurement-tools/modes/custom-measurement-area.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-buffer.class.tsx","../src/editable/measurement-tools/modes/custom-measurement-distance.class.tsx","../src/editable/measurement-tools/const.ts","../src/editable/lasso-tools/lasso-tools.tsx","../src/editable/measurement-tools/layer.tsx","../src/editable/measurement-tools/provider/store.ts","../src/editable/measurement-tools/provider/provider.tsx","../src/editable/measurement-tools/use-measurement-tools.tsx","../src/editable/measurement-tools/measurement-tools-control.tsx","../src/editable/measurement-tools/measurement-tools.tsx","../src/use-layers.ts","../src/utils/sort-layers.ts","../src/map.tsx","../src/providers/sources/const.ts","../src/providers/sources/store.ts","../src/models/use-widget-model.ts","../src/models/categories.tsx","../src/models/features.tsx","../src/models/formula.tsx","../src/models/histogram..tsx","../src/models/range.tsx","../src/models/scatter.tsx","../src/models/table.tsx","../src/models/time-series.tsx","../src/provider.tsx","../src/use-legend.ts","../src/use-map-screenshot.ts","../src/use-spatial-filter.ts","../src/utils/object-to-html/const.ts","../src/utils/object-to-html/object-to-html.contants.ts","../src/utils/object-to-html/object-to-html.ts","../src/utils/mapping-meridian.ts","../src/zoom-controls.tsx"],"sourcesContent":["import type { BasemapKey, BasemapType } from './types'\n\n/**\n * Google Maps basemap types.\n */\nexport const GmapsBasemap = {\n roadmap: 'roadmap',\n satellite: 'satellite',\n hybrid: 'hybrid',\n} as const\n\n/**\n * CARTO basemap names.\n */\nexport const CartoBasemaps = {\n darkMatter: 'darkMatter',\n positron: 'positron',\n voyager: 'voyager',\n} as const\n\nexport const CartoBasemapURL = {\n [CartoBasemaps.positron]:\n 'https://basemaps.cartocdn.com/gl/positron-gl-style/style.json',\n [CartoBasemaps.voyager]:\n 'https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json',\n [CartoBasemaps.darkMatter]:\n 'https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',\n}\n\nexport const MapsTypes = {\n maplibre: 'maplibre',\n googleMaps: 'google-maps',\n}\n\nexport const MAPS_BASEMAP: Record<\n BasemapKey,\n {\n url?: string\n dark?: boolean\n type: BasemapType\n }\n> = {\n [CartoBasemaps.positron]: {\n url: CartoBasemapURL[CartoBasemaps.positron],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.voyager]: {\n url: CartoBasemapURL[CartoBasemaps.voyager],\n type: MapsTypes.maplibre,\n },\n [CartoBasemaps.darkMatter]: {\n url: CartoBasemapURL[CartoBasemaps.darkMatter],\n type: MapsTypes.maplibre,\n dark: true,\n },\n [GmapsBasemap.roadmap]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.satellite]: {\n type: MapsTypes.googleMaps,\n },\n [GmapsBasemap.hybrid]: {\n type: MapsTypes.googleMaps,\n },\n}\n","import type { Tooltip } from './types'\n\nexport function getCursorDefault({\n isDragging,\n isHovering,\n}: {\n isHovering: boolean\n isDragging: boolean\n}) {\n return isDragging ? 'grabbing' : isHovering ? 'pointer' : 'grab'\n}\n\nexport function getTooltipDefault(info: Tooltip) {\n if (!info.html) return null\n\n return {\n html: `<div class='map-tooltip__content'>${info.html}</div>`,\n style: {\n padding: '0',\n background: 'none',\n },\n }\n}\n","import {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n} from 'react'\nimport type { MapViewState, ViewStateChangeParameters } from '@deck.gl/core'\nimport { DeckGL } from '@deck.gl/react'\nimport {\n Map as MapLibre,\n MapProvider,\n useMap as useMapLibre,\n} from 'react-map-gl/maplibre'\nimport {\n APIProvider,\n Map as Gmaps,\n limitTiltRange,\n useMap as useMapGmaps,\n} from '@vis.gl/react-google-maps'\nimport { CartoBasemaps, MAPS_BASEMAP, MapsTypes } from './const'\nimport type { DeckGLComponentProps } from './types'\nimport { getCursorDefault, getTooltipDefault } from './helpers'\n\nexport function DeckGLComponent({\n instanceRef,\n overlayRef,\n basemap = CartoBasemaps.positron,\n controller = true,\n id = 'deck-gl-map',\n layers = [],\n parameters,\n gmapsProps: { apiKey, APIProviderProps, ..._gmapsProps } = { apiKey: '' },\n getCursor = getCursorDefault,\n getTooltip = getTooltipDefault,\n onLoad,\n onResize,\n onViewStateChange = () => null,\n ...rest\n}: DeckGLComponentProps) {\n const [isLoaded, setLoaded] = useState([false, false])\n const isAllLoaded = isLoaded.every((loaded) => loaded)\n\n const handleResize = useCallback(\n (props: { width: number; height: number }) => {\n onResize?.(props)\n },\n [onResize],\n )\n\n const { url: mapStyle, type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _layers = useMemo(\n () =>\n layers\n .filter((l) => !!l?.type)\n .map(({ type: Layer, props }) => new Layer!(props)),\n [layers],\n )\n\n const handleViewStateChange = useCallback(\n (state: ViewStateChangeParameters<MapViewState>) => {\n const newState = !isGmaps\n ? state\n : {\n ...state,\n viewState: limitTiltRange(state) as MapViewState,\n }\n onViewStateChange(newState)\n },\n [isGmaps, onViewStateChange],\n )\n\n const handleLoad = useCallback((e: { type: 'deckgl' | 'load' }) => {\n const index = e.type === 'deckgl' ? 0 : 1\n setLoaded((state) =>\n state.map((loaded, i) => (i === index ? true : loaded)),\n )\n }, [])\n\n useEffect(() => {\n onLoad?.(isAllLoaded)\n }, [isAllLoaded, onLoad])\n\n return (\n <APIProvider apiKey={apiKey} {...APIProviderProps}>\n <MapProvider>\n <div className='deckgl-map'>\n <DeckGL\n controller={controller}\n id={id}\n ref={instanceRef}\n layers={_layers}\n getCursor={getCursor}\n getTooltip={getTooltip}\n onLoad={() =>\n handleLoad({\n type: 'deckgl',\n })\n }\n onResize={handleResize}\n onViewStateChange={handleViewStateChange}\n parameters={{\n // @ts-expect-error - `depthTest` is not in the types\n depthTest: false,\n ...parameters,\n }}\n {...rest}\n >\n <MapReferences overlayRef={overlayRef} />\n {!isGmaps ? (\n <MapLibre\n reuseMaps={true}\n mapStyle={mapStyle}\n onLoad={() =>\n handleLoad({\n type: 'load',\n })\n }\n onRender={() => {\n const $el = document.querySelector('.maplibregl-compact-show')\n $el?.classList.remove('maplibregl-compact-show')\n }}\n />\n ) : (\n <Gmaps\n mapTypeId={basemap}\n reuseMaps={true}\n renderingType='RASTER'\n {..._gmapsProps}\n defaultCenter={{\n lat: rest.initialViewState?.latitude ?? 0,\n lng: rest.initialViewState?.longitude ?? 0,\n }}\n defaultZoom={rest.initialViewState?.zoom ?? 0}\n onTilesLoaded={() =>\n handleLoad({\n type: 'load',\n })\n }\n />\n )}\n </DeckGL>\n </div>\n </MapProvider>\n </APIProvider>\n )\n}\n\nfunction MapReferences({\n overlayRef,\n}: {\n overlayRef: DeckGLComponentProps['overlayRef']\n}) {\n const { default: mapLibre } = useMapLibre()\n const gmaps = useMapGmaps()!\n\n useImperativeHandle(overlayRef, () => {\n return mapLibre ?? gmaps\n }, [mapLibre, gmaps])\n\n return null\n}\n","export const EditType = {\n addFeature: 'addFeature',\n addTentativePosition: 'addTentativePosition',\n updateTentativeFeature: 'updateTentativeFeature',\n cancel: 'cancelFeature',\n finish: 'finish',\n addPosition: 'addPosition',\n} as const\n","import {\n CompositeMode,\n ModifyMode,\n TranslateMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport { EditType } from '../../../editable/const'\n\nexport class CustomCompositeEditMode extends CompositeMode {\n constructor() {\n super([new TranslateMode(), new ModifyMode()])\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleKeyUp(event, props)\n if (event.key === 'Enter') {\n this.resetClickSequence()\n props.onEdit({\n updatedData: props.data,\n editType: EditType.addFeature,\n editContext: {},\n })\n }\n }\n}\n","import {\n DrawPolygonMode,\n DrawRectangleMode,\n DrawCircleFromCenterMode,\n DrawPolygonByDraggingMode,\n GeoJsonEditMode,\n} from '@deck.gl-community/editable-layers'\nimport type { LassoToolsMode, LassoToolsModes } from '../../types'\nimport { CustomCompositeEditMode } from './modes/custom-edit-mode.class'\nimport type { DefaultLassoToolsProps } from './types'\nimport { DataFilterExtension } from '@deck.gl/extensions'\n\nexport const MAP_LASSO_TOOLS_LAYER_ID = 'lassoLayer'\nexport const MAP_MASK_LAYER_ID = 'maskLayer'\n\nexport const DEFAULT_LASSO_TOOLS_LAYER_PROPS = {\n id: MAP_LASSO_TOOLS_LAYER_ID,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n stroked: true,\n filled: true,\n lineWidthUnits: 'pixels',\n getLineWidth: 2,\n lineWidthMinPixels: 2,\n} as const\n\nexport const DEFAULT_LASSO_TOOLS_COLORS: DefaultLassoToolsProps['styles']['colors'] =\n {\n editing: {\n border: [3, 111, 226, 255],\n fill: [3, 111, 226, 20.4],\n point: [255, 255, 255, 255],\n },\n finished: {\n border: [71, 219, 153, 255],\n fill: [71, 219, 153, 0],\n },\n } as const\n\nexport const DEFAULT_LASSO_TOOLS_PROPS: DefaultLassoToolsProps = {\n styles: {\n colors: {\n editing: DEFAULT_LASSO_TOOLS_COLORS.editing,\n finished: DEFAULT_LASSO_TOOLS_COLORS.finished,\n },\n },\n labels: {\n mask: 'Mask',\n },\n} as const\n\nconst EXTENSION_FILTER = [new DataFilterExtension({ filterSize: 1 })]\n\nexport const DEFAULT_MASK_LAYER_PROPS = {\n id: MAP_MASK_LAYER_ID,\n operation: 'mask',\n pickable: false,\n visible: true,\n extensions: EXTENSION_FILTER,\n filterRange: [1, 1],\n}\n\nexport const DEFAULT_LASSO_TOOLS_MODES: LassoToolsModes<\n LassoToolsMode,\n GeoJsonEditMode\n> = {\n polygon: {\n value: 'polygon',\n mode: DrawPolygonMode,\n },\n rectangle: {\n value: 'rectangle',\n mode: DrawRectangleMode,\n },\n circle: {\n value: 'circle',\n mode: DrawCircleFromCenterMode,\n },\n lasso: {\n value: 'lasso',\n mode: DrawPolygonByDraggingMode,\n },\n edit: {\n value: 'edit',\n mode: CustomCompositeEditMode,\n },\n} as const\n","import { create } from 'zustand'\nimport type { LayerStore } from './types'\nimport type { LayerExtension } from '@deck.gl/core'\n\nexport const useLayerStore = create<LayerStore>((set) => ({\n layers: {},\n setLayer: (id, layer) =>\n set((state) => {\n const layers = { ...state.layers }\n\n if (!layer) {\n delete layers[id]\n return { layers }\n }\n\n const _layer = layers[id] ?? { type: null, props: {} }\n\n const extensions = [\n ...(_layer.props.extensions ?? []),\n ...(layer.props?.extensions ?? []),\n ].reduce((acc, extension) => {\n if (!acc.some((e) => e.equals(extension))) {\n acc.push(extension)\n }\n return acc\n }, [] as LayerExtension[])\n\n layers[id] = {\n ..._layer,\n ...layer,\n props: {\n id,\n ..._layer.props,\n ...layer.props,\n extensions,\n },\n legend: {\n ..._layer.legend,\n ...layer.legend,\n },\n }\n\n return { layers }\n }),\n}))\n","import { FlyToInterpolator, type MapViewState } from '@deck.gl/core'\n\nexport const transitionFlyConfig: Pick<\n MapViewState,\n 'transitionDuration' | 'transitionInterpolator'\n> = {\n transitionDuration: 'auto',\n transitionInterpolator: new FlyToInterpolator({\n curve: 2,\n }),\n}\n","import { createStore, type StateCreator } from 'zustand'\nimport { WebMercatorViewport, type MapViewState } from '@deck.gl/core'\nimport type {\n CommonSlice,\n MapProviderProps,\n MapStore,\n MapSlice,\n ViewStateSlice,\n} from './types'\nimport { transitionFlyConfig } from './const'\nimport type { InstanceRef } from '../../types'\n\nconst createMapSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const { id, basemap } = curr\n acc[id] = {\n isLoaded: false,\n areLayersLoaded: false,\n basemap,\n instanceRef: {\n current: {} as InstanceRef,\n },\n overlayRef: {\n current: null,\n },\n layers: curr.layers ?? [],\n }\n return acc\n },\n {} as MapSlice['maps'],\n )\n\n return ((set, get) => ({\n maps: defaultProps,\n setBasemap: (id, basemap) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n basemap,\n },\n },\n })),\n setLoad: (id, isLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n isLoaded,\n },\n },\n })),\n setLayersLoad: (id, areLayersLoaded) =>\n set((state) => ({\n maps: {\n ...state.maps,\n [id]: {\n ...state.maps[id]!,\n areLayersLoaded,\n },\n },\n })),\n getOverlayInstance: (id) => {\n const store = get()\n return store.maps[id]?.overlayRef?.current\n },\n getDeckInstance: (id) => {\n const store = get()\n return store.maps[id]?.instanceRef?.current?.deck\n },\n getViewState: (id) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n // @ts-expect-error - viewState is not in the types\n return deck?.viewState\n },\n getViewports: (id, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)\n },\n getViewport: (id, index = 0, rect) => {\n const store = get()\n const deck = store.getDeckInstance(id)\n return deck?.getViewports(rect)?.[index]\n },\n addLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n\n const set = new Set([..._layers, ...layers])\n\n maps[id] = {\n ...maps[id]!,\n layers: [...set],\n }\n return { maps }\n }),\n removeLayers: (id, layers) =>\n set((state) => {\n const maps = { ...state.maps }\n const _layers = maps[id]?.layers ?? []\n maps[id] = {\n ...maps[id]!,\n layers: _layers.filter((layer) => !layers.includes(layer)),\n }\n return { maps }\n }),\n })) as StateCreator<MapSlice, [], [], MapSlice>\n}\n\nconst createViewStateSlice = (initProps: MapProviderProps['values']) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n if (curr.viewState) {\n acc.viewStates[curr.id] = curr.viewState\n acc.viewports[curr.id] = null\n }\n return acc\n },\n {\n viewStates: {} as ViewStateSlice['viewStates'],\n viewports: {} as ViewStateSlice['viewports'],\n },\n )\n\n return ((set, get) => ({\n viewports: defaultProps.viewports,\n updateViewPort: (id) => {\n const store = get() as MapStore\n if (!store.maps[id]?.isLoaded) return\n\n const vp = new WebMercatorViewport(store.viewStates[id]!)\n set((state) => ({\n viewports: {\n ...state.viewports,\n [id]: vp,\n },\n }))\n },\n viewStates: defaultProps.viewStates,\n setViewState: (id, viewState) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n ...viewState,\n },\n },\n })),\n setZoom: (id, zoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n zoom,\n },\n },\n })),\n setMinZoom: (id, minZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n minZoom,\n },\n },\n })),\n setMaxZoom: (id, maxZoom) =>\n set((state) => ({\n viewStates: {\n ...state.viewStates,\n [id]: {\n ...state.viewStates[id]!,\n maxZoom,\n },\n },\n })),\n })) as StateCreator<ViewStateSlice, [], [], ViewStateSlice>\n}\n\nconst createCommonSlice = ((_, get) => ({\n fitBounds: (id, bounds, options) => {\n const store = get()\n const viewport = store.getViewport(id)\n if (!viewport) return\n\n const newBounds = viewport?.fitBounds(bounds, options?.boundsOptions)\n\n const newViewState = {\n ...newBounds,\n ...options?.viewStateOptions,\n } as MapViewState\n\n store.setViewState(id, newViewState)\n },\n flyTo: (id, target, options = {}) => {\n const store = get()\n const viewport = store.getViewport(id)\n\n if (!viewport) return\n\n const viewStateOptions = {\n ...transitionFlyConfig,\n ...options?.viewStateOptions,\n }\n\n // Merge with current view state and options\n const finalViewState = {\n ...target,\n ...viewStateOptions,\n } as MapViewState\n store.setViewState(id, finalViewState)\n },\n})) as StateCreator<MapStore, [], [], CommonSlice>\n\nexport const createMapStore = (initProps: MapProviderProps['values']) => {\n return createStore<MapStore>()((...args) => {\n return {\n ...createMapSlice(initProps)(...args),\n ...createViewStateSlice(initProps)(...args),\n ...createCommonSlice(...args),\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMapStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { MapProviderProps, MapStore } from './types'\n\nconst MapContext = createContext<StoreApi<MapStore>>({} as StoreApi<MapStore>)\n\nexport function MapProvider({\n children,\n values,\n}: PropsWithChildren<MapProviderProps>) {\n const [storeRef] = useState(createMapStore(values))\n\n return <MapContext.Provider value={storeRef}>{children}</MapContext.Provider>\n}\n\nexport function useMapStore<T>(selector: (state: MapStore) => T): T {\n const store = useContext(MapContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MapProvider in the tree')\n return useStore(store, selector)\n}\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LASSO_TOOLS_LAYER_PROPS } from './const'\nimport type { LassoToolsLayerProps } from './types'\nimport deepmerge from 'deepmerge'\nimport type { FeatureCollection } from 'geojson'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function getLassoToolsLayer({\n mode,\n ...defaultProps\n}: LassoToolsLayerProps): LayerType {\n const props = getLayerProps(defaultProps)\n\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n } as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapLassoToolsLayer component.\n * @param layerProps - The layer props.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n layerProps,\n onEdit,\n getLineColor,\n getFillColor,\n pointColor,\n}: Omit<LassoToolsLayerProps, 'mode'>) {\n const _layerProps = deepmerge(layerProps, {\n modeConfig: {\n // // We force distance due to conversion is addressed at feature getText level\n // formatTooltip: (_distance: number) => {\n // return _distance\n // },\n preventOverlappingLines: true,\n },\n onEdit,\n })\n\n const defaultLayerProps = deepmerge(DEFAULT_LASSO_TOOLS_LAYER_PROPS, {\n getTentativeLineColor: getLineColor,\n getTentativeFillColor: getFillColor,\n getLineColor: getLineColor,\n getFillColor: getFillColor,\n getEditHandlePointColor: pointColor.fill,\n getEditHandlePointOutlineColor: pointColor.outline,\n dataComparator: (data: FeatureCollection, oldData: FeatureCollection) =>\n data.features[0] === oldData.features[0],\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\nimport type { LassoToolsState } from '../types'\nimport { DEFAULT_LASSO_TOOLS_MODES } from '../const'\n\nexport const createLassoToolsStore = (\n initProps: LassoToolsProviderProps['values'],\n) => {\n return createStore<LassoToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n enabled = false,\n mapId,\n modeInstance = new DEFAULT_LASSO_TOOLS_MODES.polygon.mode(),\n modes = DEFAULT_LASSO_TOOLS_MODES,\n modeSelected = DEFAULT_LASSO_TOOLS_MODES.polygon.value,\n values = {},\n } = curr\n acc[mapId] = {\n enabled,\n modeInstance,\n modes,\n modeSelected,\n values,\n }\n return acc\n },\n {} as LassoToolsStore['data'],\n )\n\n return {\n data: defaultProps,\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n enabled,\n visible: enabled,\n },\n },\n }))\n },\n setValue: (mapId, id, value) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n\n const _value =\n values[id] ??\n ({\n type: 'mask',\n } as LassoToolsState['values'][number])\n\n values[id] = {\n ..._value,\n ...value,\n id,\n }\n\n if (!value) {\n delete values[id]\n }\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values,\n },\n },\n }\n })\n },\n setVisibility: (mapId, valueId, visible) => {\n set((state) => {\n const values = { ...state.data[mapId]!.values }\n const _value =\n values[valueId] ?? ({} as LassoToolsState['values'][number])\n _value.properties.visible = visible\n\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n values: {\n ...values,\n [valueId]: _value,\n },\n },\n },\n }\n })\n },\n setModeSelected: (mapId, mode) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeSelected: mode,\n },\n },\n }\n })\n },\n setModeInstance: (mapId, modeInstance) => {\n set((state) => {\n return {\n data: {\n ...state.data,\n [mapId]: {\n ...state.data[mapId]!,\n modeInstance,\n },\n },\n }\n })\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createLassoToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type { LassoToolsProviderProps, LassoToolsStore } from './types'\n\nconst LassoToolsContext = createContext<StoreApi<LassoToolsStore>>(\n {} as StoreApi<LassoToolsStore>,\n)\n\nexport function LassoToolsProvider({\n children,\n values,\n}: PropsWithChildren<LassoToolsProviderProps>) {\n const [storeRef] = useState(() => createLassoToolsStore(values))\n\n return (\n <LassoToolsContext.Provider value={storeRef}>\n {children}\n </LassoToolsContext.Provider>\n )\n}\n\nexport function useLassoToolsState<T>(\n selector: (state: LassoToolsStore) => T,\n): T {\n const store = useContext(LassoToolsContext)\n if (!Object.keys(store).length) {\n throw new Error('Missing LassoToolsProvider in the tree')\n }\n return useStore(store, selector)\n}\n","import { useCallback, useEffect, useMemo } from 'react'\nimport type {\n LassoToolsData,\n LassoToolsControlProps,\n LassoToolsState,\n} from './types'\nimport { useLassoToolsState } from './provider/provider'\n\nexport function LassoToolsControls({\n mapId,\n children,\n}: LassoToolsControlProps) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)!\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)!\n const setValue = useLassoToolsState((state) => state.setValue)\n const setVisibility = useLassoToolsState((state) => state.setVisibility)\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )!\n const setModeSelected = useLassoToolsState((state) => state.setModeSelected)\n const modes = useLassoToolsState((state) => state.data[mapId]?.modes)!\n const setModeInstance = useLassoToolsState((state) => state.setModeInstance)\n\n useEffect(() => {\n const data = modes[modeSelected]\n\n if (data && enabled) {\n const Mode = data.mode\n setModeInstance(mapId, new Mode() as LassoToolsState['modeInstance'])\n }\n }, [enabled, mapId, modeSelected, modes, setModeInstance])\n\n const [\n mask,\n // , draw\n ] = useMemo(() => {\n const serialize = (value: LassoToolsData) => ({\n id: value.id,\n visible: value.properties.visible,\n label: value.properties?.label,\n })\n const _values = Object.values(values)\n const mask = _values.filter((value) => value.type === 'mask').map(serialize)\n // const draw = _values.filter((value) => value.type === 'draw').map(serialize)\n return [\n mask,\n // , draw\n ]\n }, [values])\n\n const handleModeSelected = useCallback(\n (mode: LassoToolsState['modeSelected']) => {\n setEnabled(mapId, !!mode)\n setModeSelected(mapId, mode)\n },\n [mapId, setEnabled, setModeSelected],\n )\n\n return children({\n mapId,\n enabled,\n modes,\n modeSelected,\n values: {\n mask,\n // draw,\n },\n setValue: useCallback((data) => setValue(mapId, data), [mapId, setValue]),\n setEnabled: useCallback(\n (enabled) => setEnabled(mapId, enabled),\n [mapId, setEnabled],\n ),\n setVisibility: useCallback(\n (valueId, visible) => setVisibility(mapId, valueId, visible),\n [mapId, setVisibility],\n ),\n setModeSelected: handleModeSelected,\n })\n}\n","import type { LassoToolsStore } from './provider/types'\n\nexport function getMaskValues({\n values,\n}: {\n values?: LassoToolsStore['data'][number]['values']\n}) {\n return Object.values(values ?? {}).filter((value) => value.type === 'mask')\n}\n","import { formatNumber } from '@carto/ps-utils'\nimport type { Tooltip, Position } from '@deck.gl-community/editable-layers'\nimport configureMeasurements from 'convert-units'\nimport length from 'convert-units/definitions/length'\nimport type { ControllerOptions } from 'node_modules/@deck.gl/core/dist/controllers/controller'\nimport type { ValueOf } from 'type-fest'\nimport type { DeckGLComponentProps } from '../../types'\nimport {\n CONVERSIONS_UNITS,\n INTL_UNITS,\n MapMeasurementUnit,\n MapMeasurementUnitAuto,\n} from './const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from './types'\n\nconst convert = configureMeasurements({\n length,\n})\n\nexport function convertMetersTo(\n distance: number,\n unit: ValueOf<typeof MapMeasurementUnit>,\n) {\n return convert(distance)\n .from(CONVERSIONS_UNITS[MapMeasurementUnit.meter])\n .to(CONVERSIONS_UNITS[unit])\n}\n\nconst DEFAULT_AUTO_SPLIT_NUMBER = 10000\n\nexport function getTextLayerFormattedDistance({\n meters,\n unit,\n locale,\n options: { autoSplitNumber, ...intlOptions } = {\n autoSplitNumber: DEFAULT_AUTO_SPLIT_NUMBER,\n },\n}: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n}) {\n const isMetricSystem = unit === MapMeasurementUnitAuto['m-km']\n const isImperialSystem = unit === MapMeasurementUnitAuto['ft-mi']\n const isAuto = isMetricSystem || isImperialSystem\n\n let _unit\n let _number\n\n if (isAuto) {\n const isSmallDistance =\n meters < (autoSplitNumber ?? DEFAULT_AUTO_SPLIT_NUMBER)\n let convertUnit: ValueOf<typeof MapMeasurementUnit> = isSmallDistance\n ? MapMeasurementUnit.meter\n : MapMeasurementUnit.kilometer\n\n _unit = isSmallDistance ? INTL_UNITS.meter : INTL_UNITS.kilometer\n\n if (isImperialSystem) {\n _unit = isSmallDistance ? INTL_UNITS.feet : INTL_UNITS.mile\n convertUnit = isSmallDistance\n ? MapMeasurementUnit.feet\n : MapMeasurementUnit.mile\n }\n\n _number = convertMetersTo(meters, convertUnit)\n } else {\n _unit = INTL_UNITS[unit]\n _number = convertMetersTo(meters, unit)\n }\n\n return `${formatNumber(_number, locale, {\n style: 'unit',\n unit: _unit,\n unitDisplay: 'short',\n notation: 'standard',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n ...intlOptions,\n })}`\n}\n\nexport function getDeckController(\n controller: DeckGLComponentProps['controller'],\n {\n hasDoubleClickZoom,\n }: {\n hasDoubleClickZoom: boolean\n },\n): ControllerOptions {\n return typeof controller === 'boolean'\n ? { doubleClickZoom: hasDoubleClickZoom }\n : { ...controller, doubleClickZoom: hasDoubleClickZoom }\n}\n\nexport function buildTooltip(\n value: number,\n position: Position,\n modeConfig: EditModeConfig,\n): Tooltip[] {\n if (value > 0) {\n const { formatTooltip, turfOptions } = modeConfig ?? {\n turfOptions: {\n units: 'kilometers',\n },\n }\n\n const units = turfOptions?.units\n\n let text\n if (formatTooltip) {\n text = formatTooltip(value)\n } else {\n text = `${parseFloat(value.toString()).toFixed(2)} ${units}`\n }\n\n const { measurementCallback } = modeConfig as {\n measurementCallback?: (value: number) => void\n }\n\n if (measurementCallback) {\n measurementCallback(value)\n }\n\n return [\n {\n position,\n text,\n },\n ]\n }\n return []\n}\n","import {\n getPickedEditHandle,\n MeasureAreaMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type GuideFeatureCollection,\n type LineString,\n type ModeProps,\n type Point,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport { area, centroid, lineIntersect } from '@turf/turf'\nimport { EditType } from '../../../editable/const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\n\nexport class CustomMeasureAreaMode extends MeasureAreaMode {\n _isMeasuringSessionFinished = false\n area = 0\n tooltips: Tooltip[] = []\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this.area = 0\n }\n\n const { picks } = event\n const clickedEditHandle = getPickedEditHandle(picks)\n const clickSequence = this.getClickSequence()\n\n let positionAdded = false\n if (!clickedEditHandle && !this.allowOverlapping(props)) {\n // Don't add another point right next to an existing one\n this.addClickSequence(event)\n positionAdded = true\n }\n\n this.area = area({\n type: 'Polygon',\n coordinates: [this.getClickSequence()],\n })\n\n if (\n this.isFinalizedEdition(\n clickSequence,\n clickedEditHandle as unknown as {\n properties: { positionIndexes: number[] }\n },\n )\n ) {\n this.finalizeEdition(props)\n } else if (positionAdded) {\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: 'addTentativePosition',\n editContext: {\n position: event.mapCoords,\n },\n })\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n const clickSequence = this.getClickSequence()\n if (clickSequence.length > 2) {\n this.finalizeEdition(props)\n } else {\n this.resetEdition(props)\n }\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n const tentativeGuide = this.getTentativeGuide(props)\n if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {\n const position = centroid(tentativeGuide) as FeatureOf<Point>\n this.area = area(tentativeGuide)\n this.tooltips = buildTooltip(\n this.area,\n position.geometry.coordinates as unknown as Position,\n props.modeConfig as EditModeConfig,\n )\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this.area = 0\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n override getTooltips() {\n return this.tooltips\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n clickedEditHandle:\n | { properties: { positionIndexes: number[] } }\n | null\n | undefined,\n ): boolean {\n const { positionIndexes } = clickedEditHandle?.properties ?? {\n positionIndexes: [],\n }\n return (\n clickSequence.length > 2 &&\n clickedEditHandle !== undefined &&\n (positionIndexes[0] === 0 ||\n positionIndexes[0] === clickSequence.length - 1)\n )\n }\n\n allowOverlapping(props: ModeProps<FeatureCollection>) {\n let overlappingLines = false\n const clickSequence = this.getClickSequence()\n if (\n clickSequence.length > 2 &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n props.modeConfig?.preventOverlappingLines\n ) {\n const currentLine = {\n type: 'LineString',\n coordinates: [...clickSequence, clickSequence[0]],\n } as LineString\n const otherLines = {\n type: 'LineString',\n coordinates: [...clickSequence.slice(0, clickSequence.length - 1)],\n } as LineString\n const intersectingPoints = lineIntersect(currentLine, otherLines)\n if ((intersectingPoints as FeatureCollection).features.length > 0) {\n overlappingLines = true\n }\n }\n return overlappingLines\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n // They clicked the first or last point (or double-clicked), so complete the polygon\n // Remove the hovered position\n const polygonToAdd: Polygon = {\n type: 'Polygon',\n coordinates: [[...clickSequence, clickSequence[0]!]],\n }\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n polygonToAdd,\n props,\n )\n this._isMeasuringSessionFinished = true\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this.area,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n DrawCircleFromCenterMode,\n type ClickEvent,\n type FeatureCollection,\n type FeatureOf,\n type Geometry,\n type GuideFeatureCollection,\n type ModeProps,\n type PointerMoveEvent,\n type Polygon,\n type Position,\n type Tooltip,\n} from '@deck.gl-community/editable-layers'\nimport type { ValueOf } from 'type-fest'\nimport { EditType } from '../../../editable/const'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { EditModeConfig, MeasurementToolsTextProps } from '../types'\nimport { buildTooltip, getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureBufferMode extends DrawCircleFromCenterMode {\n _isMeasuringSessionFinished = false\n _currentArea = 0\n resultPolygon: FeatureCollection = {\n type: 'FeatureCollection',\n features: [],\n }\n tooltips: Tooltip[] = []\n\n override handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {\n // restart measuring session\n if (this._isMeasuringSessionFinished) {\n this._isMeasuringSessionFinished = false\n this.resetClickSequence()\n this._currentArea = 0\n }\n\n super.handleClick(event, props)\n }\n\n override handlePointerMove(\n event: PointerMoveEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n if (this._isMeasuringSessionFinished) {\n return\n }\n super.handlePointerMove(event, props)\n this.tooltips = buildTooltip(\n this.areaCircle!,\n this.position,\n props.modeConfig as EditModeConfig,\n )\n }\n\n override checkAndFinishPolygon(props: ModeProps<FeatureCollection>) {\n const clickSequence = this.getClickSequence()\n const tentativeFeature = this.getTentativeGuide(props)\n if (\n this.isFinalizedEdition(\n clickSequence,\n tentativeFeature as { geometry: Geometry },\n )\n ) {\n this.finalizeEdition(props)\n }\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (event.key === 'Enter') {\n this.finalizeEdition(props)\n } else if (event.key === 'Escape') {\n this.resetEdition(props)\n }\n }\n\n override getGuides(\n props: ModeProps<FeatureCollection>,\n ): GuideFeatureCollection {\n if (this._isMeasuringSessionFinished) {\n return this.resultPolygon as GuideFeatureCollection\n } else {\n return super.getGuides(props)\n }\n }\n\n isFinalizedEdition(\n clickSequence: Position[],\n tentativeFeature: { geometry: Geometry },\n ): boolean {\n return (\n clickSequence.length > 1 &&\n tentativeFeature &&\n tentativeFeature.geometry.type === 'Polygon'\n )\n }\n\n finalizeEdition(props: ModeProps<FeatureCollection>) {\n const tentativeFeature = this.getTentativeGuide(props)\n props.selectedIndexes = []\n props.data = {\n type: 'FeatureCollection',\n features: [],\n }\n\n const editAction = this.getAddFeatureOrBooleanPolygonAction(\n tentativeFeature as FeatureOf<Polygon>,\n props,\n )\n this._isMeasuringSessionFinished = true\n props.onUpdateCursor('cell')\n if (editAction) {\n this.resultPolygon = editAction.updatedData\n props.onEdit({\n ...editAction,\n editType: EditType.addPosition,\n editContext: {\n ...(editAction.editContext as Record<string, unknown>),\n distance: this._currentArea,\n positions: this.getClickSequence(),\n finished: this._isMeasuringSessionFinished,\n },\n })\n }\n }\n\n resetEdition(props: ModeProps<FeatureCollection>) {\n this.resetClickSequence()\n props.onEdit({\n // Because the new drawing feature is dropped, so the data will keep as the same.\n updatedData: props.data,\n editType: 'cancelFeature',\n editContext: {},\n })\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this.tooltips = []\n this._isMeasuringSessionFinished = false\n this._currentArea = 0\n this.radius = 0\n this.areaCircle = 0\n }\n\n override getTooltips(): Tooltip[] {\n return this.tooltips\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return (\n getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n }) + '2'\n )\n }\n}\n","import {\n MeasureDistanceMode,\n type FeatureCollection,\n type ModeProps,\n} from '@deck.gl-community/editable-layers'\nimport type { BasePointerEvent } from 'node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types'\nimport { EditType } from '../../../editable/const'\nimport type { ValueOf } from 'type-fest'\nimport type { MapMeasurementUnitAuto } from '../const'\nimport type { MeasurementToolsTextProps } from '../types'\nimport { getTextLayerFormattedDistance } from '../utils'\n\nexport class CustomMeasureDistanceMode extends MeasureDistanceMode {\n override handleClick(\n event: BasePointerEvent,\n props: ModeProps<FeatureCollection>,\n ): void {\n super.handleClick(event, props)\n\n props.onEdit({\n // data is the same\n updatedData: props.data,\n editType: EditType.addPosition,\n editContext: {\n distance: this._currentDistance,\n finished: this._isMeasuringSessionFinished,\n positions: this.getClickSequence(),\n },\n })\n }\n\n override handleKeyUp(\n event: KeyboardEvent,\n props: ModeProps<FeatureCollection>,\n ) {\n if (this._isMeasuringSessionFinished) return\n\n event.stopPropagation()\n const { key } = event\n\n const clickSequenceLength = this.getClickSequence().length\n\n let editType: ValueOf<typeof EditType> = EditType.finish\n\n switch (key) {\n case 'Escape':\n props.onEdit({\n updatedData: {\n type: 'FeatureCollection',\n features: [],\n },\n editType: EditType.cancel,\n editContext: {},\n })\n break\n case 'Enter':\n this._isMeasuringSessionFinished = true\n if (clickSequenceLength === 1) {\n this.resetClickSequence()\n editType = EditType.cancel\n }\n // force update drawings\n props.onUpdateCursor('cell')\n props.onEdit({\n updatedData: props.data,\n editType,\n editContext: {\n finished: this._isMeasuringSessionFinished,\n },\n })\n break\n default:\n break\n }\n }\n\n override resetClickSequence() {\n super.resetClickSequence()\n this._isMeasuringSessionFinished = false\n this._currentTooltips = []\n this._currentDistance = 0\n }\n\n getTooltipText({\n meters,\n locale,\n unit,\n options,\n }: {\n meters: number\n unit: ValueOf<typeof MapMeasurementUnitAuto>\n locale: string\n options?: MeasurementToolsTextProps\n }): string {\n return getTextLayerFormattedDistance({\n meters,\n locale,\n unit,\n options,\n })\n }\n}\n","import type { GeoJsonEditMode } from '@deck.gl-community/editable-layers'\nimport type { Color } from '@deck.gl/core'\nimport type { LengthUnits } from 'convert-units/definitions/length'\nimport type {\n MeasurementMode,\n MeasurementModes,\n MeasurementUnit,\n MeasurementUnitOption,\n MeasurementUnits,\n} from '../../types'\nimport type { ValueOf } from 'type-fest'\nimport { CustomMeasureAreaMode } from './modes/custom-measurement-area.class'\nimport { CustomMeasureBufferMode } from './modes/custom-measurement-buffer.class'\nimport { CustomMeasureDistanceMode } from './modes/custom-measurement-distance.class'\nimport type { DefaultMeasureToolProps } from './types'\n\nexport const MAP_MEASURE_LAYER_ID = 'mapMeasureLayer'\n\nexport const DEFAULT_LAYER_PROPS = {\n id: MAP_MEASURE_LAYER_ID,\n pickable: false,\n billboard: false,\n editHandlePointRadiusUnits: 'pixels',\n editHandlePointRadiusMinPixels: 1,\n editHandlePointRadiusMaxPixels: 12,\n lineWidthMinPixels: 2,\n editHandlePointStrokeWidth: 3,\n getEditHandlePointRadius: 3,\n _subLayerProps: {\n tooltips: {\n fontFamily: 'Open Sans, Inter, sans-serif',\n fontWeight: 'lighter',\n getSize: 11,\n lineHeight: 1.4545,\n getPixelOffset: [0, 20],\n getTextAnchor: 'middle',\n getAlignmentBaseline: 'center',\n updateTriggers: {},\n },\n guides: {\n getLineWidth: 2,\n },\n },\n} as const\n\nexport const DEFAULT_COLORS: Record<string, Color> = {\n editing: [23, 102, 214, 255],\n finished: [71, 219, 153, 255],\n point: [255, 255, 255, 255],\n} as const\n\nexport const DEFAULT_PROPS: DefaultMeasureToolProps = {\n styles: {\n colors: {\n editing: DEFAULT_COLORS.editing!,\n finished: DEFAULT_COLORS.finished!,\n point: DEFAULT_COLORS.point!,\n },\n },\n} as const\n\nexport const MapMeasurementUnit = {\n kilometer: 'kilometer',\n meter: 'meter',\n centimeter: 'centimeter',\n milimeter: 'milimeter',\n mile: 'mile',\n yard: 'yard',\n feet: 'feet',\n} as const\n\nexport const MapMeasurementUnitAuto = {\n 'm-km': 'm-km',\n 'ft-mi': 'ft-mi',\n ...MapMeasurementUnit,\n} as const\n\nexport const MapMeasurementUnitTurf = {\n meters: 'meters',\n kilometer: 'kilometers',\n mile: 'miles',\n} as const\n\nexport const CONVERSIONS_UNITS: Record<\n ValueOf<typeof MapMeasurementUnit>,\n LengthUnits\n> = {\n [MapMeasurementUnit.kilometer]: 'km',\n [MapMeasurementUnit.meter]: 'm',\n [MapMeasurementUnit.centimeter]: 'cm',\n [MapMeasurementUnit.milimeter]: 'mm',\n [MapMeasurementUnit.mile]: 'mi',\n [MapMeasurementUnit.yard]: 'yd',\n [MapMeasurementUnit.feet]: 'ft',\n} as const\n\nexport const INTL_UNITS: Record<ValueOf<typeof MapMeasurementUnit>, string> = {\n [MapMeasurementUnit.kilometer]: 'kilometer',\n [MapMeasurementUnit.meter]: 'meter',\n [MapMeasurementUnit.centimeter]: 'centimeter',\n [MapMeasurementUnit.milimeter]: 'millimeter',\n [MapMeasurementUnit.mile]: 'mile',\n [MapMeasurementUnit.yard]: 'yard',\n [MapMeasurementUnit.feet]: 'foot',\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES: Record<\n MeasurementUnit,\n MeasurementUnitOption\n> = {\n 'm-km': {\n value: 'm-km',\n system: 'metric',\n },\n kilometer: {\n value: 'kilometer',\n system: 'metric',\n },\n meter: {\n value: 'meter',\n system: 'metric',\n },\n centimeter: {\n value: 'centimeter',\n system: 'metric',\n },\n milimeter: {\n value: 'milimeter',\n system: 'metric',\n },\n 'ft-mi': {\n value: 'ft-mi',\n system: 'imperial',\n },\n mile: {\n value: 'mile',\n system: 'imperial',\n },\n yard: {\n value: 'yard',\n system: 'imperial',\n },\n feet: {\n value: 'feet',\n system: 'imperial',\n },\n} as const\n\nexport const MEASUREMENT_TOOLS_UNITS_DISTANCE: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const MEASUREMENT_TOOLS_UNITS_AREA: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n>[keyof MeasurementModes] = [\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['m-km'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.kilometer,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.meter,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES['ft-mi'],\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.mile,\n MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES.feet,\n] as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_MODES: MeasurementModes<\n MeasurementMode,\n GeoJsonEditMode\n> = {\n distance: {\n value: 'distance',\n mode: CustomMeasureDistanceMode,\n },\n buffer: {\n value: 'buffer',\n mode: CustomMeasureBufferMode,\n },\n area: {\n value: 'area',\n mode: CustomMeasureAreaMode,\n },\n} as const\n\nexport const DEFAULT_MEASUREMENT_TOOLS_UNITS: MeasurementUnits<\n MeasurementMode,\n MeasurementUnit\n> = {\n distance: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n buffer: MEASUREMENT_TOOLS_UNITS_DISTANCE,\n area: MEASUREMENT_TOOLS_UNITS_AREA,\n} as const\n","import {\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'\n\nconst EXCEPTED_LAYER_IDS = [\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\n/**\n * LassoTools component provides tools for lasso selection on a map.\n *\n * @param {Object} props - The properties object.\n * @param {ReactNode} props.children - The child components to be rendered.\n * @param {string} props.mapId - The unique identifier for the map.\n * @param {Object} [props.defaultProps] - The default properties for the component.\n * @param {Object} [props.defaultProps.styles] - The default styles for the lasso tools.\n * @param {Object} [props.defaultProps.labels] - The default labels for the lasso tools.\n * @param {Object} [props.layerProps] - The properties for the layer.\n * @param {string} [props.defaultType='mask'] - The default type for the lasso tools.\n *\n * @returns {ReactNode} The rendered children components.\n *\n * @example\n * <LassoTools mapId=\"map1\">\n * <ChildComponent />\n * </LassoTools>\n */\nexport function LassoTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_LASSO_TOOLS_PROPS.styles, labels } = {\n styles: DEFAULT_LASSO_TOOLS_PROPS.styles,\n labels: DEFAULT_LASSO_TOOLS_PROPS.labels,\n },\n layerProps = {},\n defaultType = 'mask',\n}: LassoToolsProps & {\n children?: ReactNode\n}) {\n const enabled = useLassoToolsState((state) => state.data[mapId]?.enabled)\n const setEnabled = useLassoToolsState((state) => state.setEnabled)\n const values = useLassoToolsState((state) => state.data[mapId]?.values)\n const setValue = useLassoToolsState((state) => state.setValue)\n const modeInstance = useLassoToolsState(\n (state) => state.data[mapId]?.modeInstance,\n )!\n const modeSelected = useLassoToolsState(\n (state) => state.data[mapId]?.modeSelected,\n )\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n const 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 (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 { EditableGeoJsonLayer } from '@deck.gl-community/editable-layers'\nimport deepmerge from 'deepmerge'\nimport type { LayerType } from '../../types'\nimport { DEFAULT_LAYER_PROPS, MapMeasurementUnitTurf } from './const'\nimport type { MeasurementToolsLayerProps, MeasurementToolsState } from './types'\nimport type { LayerProps } from '@deck.gl/core'\n\nexport function getMeasurementToolsLayer({\n mode,\n ...defaultProps\n}: MeasurementToolsLayerProps): LayerType {\n const props = getLayerProps({\n mode,\n ...defaultProps,\n })\n return {\n type: EditableGeoJsonLayer,\n props: {\n ...props,\n mode,\n data: [],\n } as unknown as LayerProps,\n }\n}\n\n/**\n * Gets the layer props for the MapMeasurementToolsLayer component.\n * @param layerProps - The layer props.\n * @param locale - The locale.\n * @param unit - The unit.\n * @param onHover - The onHover event handler.\n * @param onEdit - The onEdit event handler.\n * @param guideColor - The guide color.\n * @returns The layer props for the component.\n */\nfunction getLayerProps({\n mode,\n layerProps,\n locale,\n enabled,\n unit,\n onEdit,\n guideColor,\n pointColor,\n textOptions,\n}: MeasurementToolsLayerProps) {\n const _layerProps = deepmerge(layerProps, {\n visible: enabled,\n pickable: enabled,\n modeConfig: {\n // We force distance due to conversion is addressed at feature getText level\n formatTooltip: (_distance: number) => {\n return _distance\n },\n turfOptions: {\n units: MapMeasurementUnitTurf.meters,\n },\n },\n ...(enabled && { onEdit }),\n _subLayerProps: {\n tooltips: {\n outlineColor: [255, 255, 255, 255],\n outlineWidth: 6,\n fontSettings: {\n sdf: true, // needed for the outlineWidth and outlineColor attributes to be effective\n smoothing: 0.2,\n },\n getText: (properties: { text: MeasurementToolsState['distance'] }) => {\n // @ts-expect-error - fix EditGeoJSON methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return mode?.getTooltipText?.({\n meters: properties.text,\n locale,\n unit,\n options: textOptions,\n }) as string\n },\n updateTriggers: {\n getText: [unit, locale, textOptions],\n },\n },\n },\n })\n const defaultLayerProps = deepmerge(DEFAULT_LAYER_PROPS, {\n _subLayerProps: {\n guides: {\n getLineColor: guideColor,\n getFillColor: guideColor.with(3, 20),\n },\n },\n getEditHandlePointColor: pointColor,\n getEditHandlePointOutlineColor: guideColor,\n })\n\n const props = deepmerge(defaultLayerProps, _layerProps)\n return props\n}\n","import { createStore } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\nimport {\n DEFAULT_MEASUREMENT_TOOLS_MODES,\n DEFAULT_MEASUREMENT_TOOLS_UNITS,\n MapMeasurementUnitAuto,\n} from '../const'\nimport { CustomMeasureDistanceMode } from '../modes/custom-measurement-distance.class'\n\nexport const createMeasurementToolsStore = (\n initProps: MeasurementToolsProviderProps['values'],\n) => {\n return createStore<MeasurementToolsStore>()((set) => {\n const defaultProps = initProps.reduce(\n (acc, curr) => {\n const {\n mapId,\n modeSelected,\n modes = DEFAULT_MEASUREMENT_TOOLS_MODES,\n units = DEFAULT_MEASUREMENT_TOOLS_UNITS,\n distance = 0,\n finished = false,\n locale = 'en',\n positions = [],\n clearLayerOnStart = false,\n unit = MapMeasurementUnitAuto['m-km'],\n enabled = false,\n } = curr\n acc[mapId] = {\n modes,\n units,\n modeSelected,\n distance,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart,\n enabled,\n }\n return acc\n },\n {} as MeasurementToolsStore['measurements'],\n )\n\n return {\n measurements: defaultProps,\n mode: CustomMeasureDistanceMode,\n setModeInstance: (mapId, modeInstance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeInstance,\n },\n },\n }))\n },\n setModeSelected: (mapId, modeSelected) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n modeSelected,\n },\n },\n }))\n },\n setFinished: (mapId, finished) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n finished,\n },\n },\n }))\n },\n setDistance: (mapId, distance) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n distance,\n },\n },\n }))\n },\n setUnit: (mapId, unit) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n unit,\n },\n },\n }))\n },\n setLocale: (mapId, locale) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n locale,\n },\n },\n }))\n },\n setPositions: (mapId, positions) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n positions: [...positions],\n },\n },\n }))\n },\n setEnabled: (mapId, enabled) => {\n set((state) => ({\n measurements: {\n ...state.measurements,\n [mapId]: {\n ...state.measurements[mapId]!,\n enabled,\n },\n },\n }))\n },\n }\n })\n}\n","import {\n createContext,\n useContext,\n useState,\n type PropsWithChildren,\n} from 'react'\nimport { useStore } from 'zustand'\nimport { createMeasurementToolsStore } from './store'\nimport type { StoreApi } from 'zustand'\nimport type {\n MeasurementToolsProviderProps,\n MeasurementToolsStore,\n} from './types'\n\nconst MeasurementToolsContext = createContext<StoreApi<MeasurementToolsStore>>(\n {} as StoreApi<MeasurementToolsStore>,\n)\n\nexport function MeasurementToolsProvider({\n children,\n values,\n}: PropsWithChildren<MeasurementToolsProviderProps>) {\n const [storeRef] = useState(createMeasurementToolsStore(values))\n\n return (\n <MeasurementToolsContext.Provider value={storeRef}>\n {children}\n </MeasurementToolsContext.Provider>\n )\n}\n\nexport function useMeasurementToolsState<T>(\n selector: (state: MeasurementToolsStore) => T,\n): T {\n const store = useContext(MeasurementToolsContext)\n if (!Object.keys(store).length)\n throw new Error('Missing MeasurementToolsProvider in the tree')\n return useStore(store, selector)\n}\n","import { useCallback } from 'react'\nimport { useMeasurementToolsState } from './provider/provider'\nimport type { MeasurementToolsState } from './types'\n\nexport function useMeasurementTools({ mapId }: { mapId: string }) {\n const modes = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modes,\n )\n\n const units = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.units,\n )\n\n const distance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.distance,\n )\n const _setDistance = useMeasurementToolsState((state) => state.setDistance)\n\n const setDistance = useCallback(\n (distance: number) => _setDistance(mapId, distance),\n [_setDistance, mapId],\n )\n\n const clearLayerOnStart = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.clearLayerOnStart,\n )\n\n const enabled = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.enabled,\n )\n const _setVisibility = useMeasurementToolsState((state) => state.setEnabled)\n\n const setEnabled = useCallback(\n (enabled: MeasurementToolsState['enabled']) =>\n _setVisibility(mapId, enabled),\n [_setVisibility, mapId],\n )\n\n const modeSelected = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeSelected,\n )\n\n const _setModeSelected = useMeasurementToolsState(\n (state) => state.setModeSelected,\n )\n\n const setModeSelected = useCallback(\n (mode: MeasurementToolsState['modeSelected']) => {\n setEnabled(!!mode)\n _setModeSelected(mapId, mode)\n },\n [_setModeSelected, mapId, setEnabled],\n )\n\n const finished = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.finished,\n )\n const _setFinished = useMeasurementToolsState((state) => state.setFinished)\n\n const setFinished = useCallback(\n (finished: MeasurementToolsState['finished']) =>\n _setFinished(mapId, finished),\n [_setFinished, mapId],\n )\n\n const locale = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.locale,\n )\n const _setLocale = useMeasurementToolsState((state) => state.setLocale)\n\n const setLocale = (locale: MeasurementToolsState['locale']) =>\n _setLocale(mapId, locale)\n\n const modeInstance = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.modeInstance,\n )\n\n const _setInstance = useMeasurementToolsState(\n (state) => state.setModeInstance,\n )\n\n const setModeInstance = useCallback(\n (modeInstance: MeasurementToolsState['modeInstance']) =>\n _setInstance(mapId, modeInstance),\n [_setInstance, mapId],\n )\n\n const positions = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.positions,\n )\n const _setPositions = useMeasurementToolsState((state) => state.setPositions)\n\n const setPositions = useCallback(\n (positions: MeasurementToolsState['positions']) =>\n _setPositions(mapId, positions),\n [mapId, _setPositions],\n )\n\n const unit = useMeasurementToolsState(\n (state) => state.measurements[mapId]!.unit,\n )\n const _setUnit = useMeasurementToolsState((state) => state.setUnit)\n\n const setUnit = useCallback(\n (unit: MeasurementToolsState['unit']) => _setUnit(mapId, unit),\n [_setUnit, mapId],\n )\n\n const clearLayer = useCallback(() => {\n modeInstance?.resetClickSequence()\n setPositions([])\n }, [modeInstance, setPositions])\n\n const toggleLayer = useCallback(\n (enabled: boolean) => {\n setEnabled(enabled)\n },\n [setEnabled],\n )\n\n return {\n modes,\n units,\n distance,\n clearLayerOnStart,\n modeSelected,\n enabled,\n finished,\n locale,\n modeInstance,\n positions,\n unit,\n setDistance,\n setModeSelected,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n setModeInstance,\n }\n}\n","import { useCallback, useEffect } from 'react'\nimport type { MeasurementToolsControlProps } from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { getTextLayerFormattedDistance } from './utils'\n\nexport function MeasurementToolsControl({\n mapId,\n textOptions,\n children,\n}: MeasurementToolsControlProps) {\n const {\n modes,\n units,\n distance,\n setDistance,\n clearLayerOnStart,\n modeSelected,\n setModeSelected,\n enabled,\n setEnabled,\n finished,\n setFinished,\n locale,\n setLocale,\n modeInstance,\n setModeInstance,\n positions,\n setPositions,\n unit,\n setUnit,\n clearLayer,\n toggleLayer: _toggleLayer,\n } = useMeasurementTools({ mapId })\n\n useEffect(() => {\n if (modeSelected && modes[modeSelected]) {\n const ModeClass = modes[modeSelected].mode\n setModeInstance(new ModeClass())\n }\n return () => {\n setPositions([])\n }\n }, [modes, modeSelected, setPositions, setModeInstance, setEnabled])\n\n const toggleLayer = useCallback(\n (enable: boolean) => {\n if (enable && (clearLayerOnStart || !finished)) {\n clearLayer()\n }\n _toggleLayer(enable)\n },\n [_toggleLayer, clearLayer, clearLayerOnStart, finished],\n )\n return children({\n mapId,\n distance,\n enabled,\n finished,\n locale,\n positions,\n unit,\n clearLayerOnStart: !!clearLayerOnStart,\n modeSelected: modeSelected!,\n modes,\n units,\n value: getTextLayerFormattedDistance({\n meters: distance,\n unit,\n locale,\n options: textOptions,\n }),\n modeInstance: modeInstance!,\n setModeSelected,\n setDistance,\n setFinished,\n setLocale,\n setPositions,\n setUnit,\n setEnabled,\n toggleLayer,\n clearLayer,\n })\n}\n","import { useCallback, useEffect, useRef } from 'react'\nimport { useLayerStore } from '../../providers/layers/store'\nimport { useMapStore } from '../../providers/map/provider'\nimport { DEFAULT_PROPS, MAP_MEASURE_LAYER_ID } from './const'\nimport { EditType } from './../const'\nimport { getMeasurementToolsLayer } from './layer'\nimport { MeasurementToolsControl } from './measurement-tools-control'\nimport type {\n MeasurementToolsLayerEditProps,\n MeasurementToolsLayerProps,\n MeasurementToolsProps,\n} from './types'\nimport { useMeasurementTools } from './use-measurement-tools'\nimport { useShallow } from 'zustand/shallow'\nimport type { Layer, LayerProps } from '@deck.gl/core'\n\nconst EXCEPTED_LAYER_IDS = [MAP_MEASURE_LAYER_ID]\n\nexport function MeasurementTools({\n children,\n mapId,\n defaultProps: { styles = DEFAULT_PROPS.styles } = {\n styles: DEFAULT_PROPS.styles,\n },\n layerProps = {} as MeasurementToolsLayerProps['layerProps'],\n textOptions,\n}: MeasurementToolsProps & {\n children?: React.ReactNode\n}) {\n const {\n setDistance,\n clearLayerOnStart,\n enabled,\n finished,\n setFinished,\n locale,\n setPositions,\n unit,\n modeInstance,\n } = useMeasurementTools({ mapId })\n\n const setLayer = useLayerStore((state) => state.setLayer)\n const addLayers = useMapStore((state) => state.addLayers)\n const removeLayers = useMapStore((state) => state.removeLayers)\n const mapLayers = useMapStore(\n useShallow((state) =>\n state.maps[mapId]?.layers.filter((l) => !EXCEPTED_LAYER_IDS.includes(l)),\n ),\n )\n const getDeckInstance = useMapStore((state) => state.getDeckInstance)\n const mapLayersVisibilityRef = useRef<Record<string, boolean>>({})\n\n useEffect(() => {\n if (enabled) {\n addLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n\n return () => {\n removeLayers(mapId, [MAP_MEASURE_LAYER_ID])\n }\n }, [addLayers, clearLayerOnStart, mapId, removeLayers, enabled])\n\n useEffect(() => {\n mapLayers?.forEach((layerId) => {\n const currentLayer = getDeckInstance(mapId)?.props.layers.find(\n (l) => (l as Layer<LayerProps>).props.id === layerId,\n ) as Layer<LayerProps>\n\n if (enabled) {\n mapLayersVisibilityRef.current[layerId] = currentLayer?.props.pickable\n }\n\n const pickable =\n !enabled &&\n (mapLayersVisibilityRef.current[layerId] ??\n currentLayer?.props.pickable)\n\n setLayer(layerId, {\n props: {\n pickable,\n },\n })\n })\n }, [enabled, getDeckInstance, mapId, mapLayers, setLayer])\n\n const onEdit = useCallback(\n ({ editType, editContext }: MeasurementToolsLayerEditProps) => {\n if (editType === EditType.cancel) {\n modeInstance!.resetClickSequence()\n return\n }\n\n if (editType === EditType.addPosition) {\n setDistance(editContext.distance)\n }\n\n setFinished(!!editContext.finished)\n\n const positions = editContext.positions\n\n if (positions?.length) {\n setPositions(positions)\n }\n },\n [modeInstance, setDistance, setFinished, setPositions],\n )\n\n useEffect(() => {\n const guideColor = finished ? styles.colors.finished : styles.colors.editing\n const pointColor = finished ? styles.colors.finished : styles.colors.point\n const layer = getMeasurementToolsLayer({\n layerProps: {\n ...layerProps,\n pickable: layerProps.pickable ?? !finished,\n },\n enabled,\n guideColor,\n pointColor,\n locale,\n onEdit,\n unit,\n mode: modeInstance!,\n textOptions: textOptions,\n })\n\n setLayer(MAP_MEASURE_LAYER_ID, layer)\n }, [\n finished,\n modeInstance,\n layerProps,\n locale,\n onEdit,\n setLayer,\n styles.colors.editing,\n styles.colors.finished,\n styles.colors.point,\n textOptions,\n unit,\n enabled,\n ])\n\n return children\n}\n\nMeasurementTools.Controls = MeasurementToolsControl\n","import { useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\n\nexport function useLayers({ mapId }: { mapId: MapComponentProps['id'] }) {\n const { layers: layersMap } = useMapStore((state) => state.maps[mapId]!)\n const layers = useLayerStore((state) => state.layers)\n\n const computedLayers = useMemo(() => {\n return layersMap\n .map((layerId) => layers[layerId])\n .filter((layer) => !!layer)\n }, [layers, layersMap])\n\n return computedLayers\n}\n","import { MAP_MEASURE_LAYER_ID } from '../editable/measurement-tools/const'\nimport {\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MASK_LAYER_ID,\n} from '../editable/lasso-tools/const'\nimport type { Layer } from '../providers/layers/types'\n\nconst defaultLastLayerOrder = [\n MAP_MASK_LAYER_ID,\n MAP_LASSO_TOOLS_LAYER_ID,\n MAP_MEASURE_LAYER_ID,\n]\n\nexport function sortLayers(layers: Layer[]) {\n const sortedLayers = layers\n .filter((layer) => !defaultLastLayerOrder.includes(layer.props.id!))\n .sort((a, b) => (a.order ?? Infinity) - (b.order ?? Infinity))\n\n const lastLayers = defaultLastLayerOrder\n .map((id) => layers.find((layer) => layer.props.id === id))\n .filter((l) => !!l)\n\n return [...sortedLayers, ...lastLayers]\n}\n","import { useCallback, useMemo, useRef } from 'react'\nimport type {\n Layer,\n MapViewState,\n ViewStateChangeParameters,\n} from '@deck.gl/core'\nimport { DeckGLComponent } from './deckgl'\nimport type { DeckGLComponentProps, MapComponentProps } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useLayers } from './use-layers'\nimport { sortLayers } from './utils/sort-layers'\nimport type { DeckGLProps } from '@deck.gl/react'\n\nconst ZOOM_DEBOUNCE_MS = 200\n\nexport function MapComponent({\n id,\n onLoad,\n onViewStateChange,\n ...props\n}: MapComponentProps) {\n const { basemap, instanceRef, overlayRef } = useMapStore(\n (state) => state.maps[id]!,\n )\n const timerRef = useRef<NodeJS.Timeout | null>(null)\n const viewState = useMapStore((state) => state.viewStates[id])\n const setViewState = useMapStore((state) => state.setViewState)\n const setLoad = useMapStore((state) => state.setLoad)\n const setLayersLoad = useMapStore((state) => state.setLayersLoad)\n const updateViewPort = useMapStore((state) => state.updateViewPort)\n\n const layers = useLayers({ mapId: id })\n const computedLayers = useMemo(() => {\n return sortLayers(layers)\n }, [layers])\n\n const handleViewStateChange = useCallback(\n (newViewState: ViewStateChangeParameters<MapViewState>) => {\n const callback = setViewState\n\n if (newViewState.interactionState.isZooming) {\n if (timerRef.current) {\n clearInterval(timerRef.current)\n }\n timerRef.current = setTimeout(() => {\n updateViewPort(id)\n }, ZOOM_DEBOUNCE_MS)\n }\n\n if (onViewStateChange) {\n onViewStateChange(newViewState, callback)\n return\n }\n\n callback(id, newViewState.viewState)\n },\n [id, onViewStateChange, setViewState, updateViewPort],\n )\n\n const handleLoad = useCallback(\n (value: Parameters<NonNullable<DeckGLComponentProps['onLoad']>>[0]) => {\n setLoad(id, value)\n onLoad?.(value)\n updateViewPort(id)\n },\n [id, onLoad, setLoad, updateViewPort],\n )\n\n const handleAfterRender = useCallback(\n (\n context: Parameters<\n NonNullable<DeckGLComponentProps['onAfterRender']>\n >[0],\n ) => {\n const layers = instanceRef?.current?.deck?.props.layers\n const areLayersLoaded = !!layers?.every(\n (layer) => (layer as Layer<never>)?.isLoaded,\n )\n setLayersLoad(id, areLayersLoaded)\n props.onAfterRender?.(context)\n },\n [id, instanceRef, props, setLayersLoad],\n )\n\n // NOTE: destructuring here to keep the reference to the props object outside of the useCallback\n const _onDragEnd = props.onDragEnd\n const handleDragEnd = useCallback(\n (...args: Parameters<NonNullable<DeckGLProps['onDragEnd']>>) => {\n updateViewPort(id)\n if (_onDragEnd) {\n _onDragEnd(...args)\n }\n },\n [id, updateViewPort, _onDragEnd],\n )\n\n return (\n <DeckGLComponent\n {...props}\n layers={computedLayers}\n instanceRef={instanceRef}\n overlayRef={overlayRef}\n basemap={basemap}\n initialViewState={viewState}\n onLoad={handleLoad}\n onViewStateChange={handleViewStateChange}\n onAfterRender={handleAfterRender}\n onDragEnd={handleDragEnd}\n />\n )\n}\n","export const ApiBaseUrl = 'https://gcp-us-east1.api.carto.com'\n\nexport const clientID = 'ps'\n","import { create } from 'zustand'\nimport type {\n AllQuerySource,\n AllRasterSource,\n AllTableSource,\n AllTilesetSource,\n Source,\n SourceStore,\n} from './types'\nimport { ApiBaseUrl, clientID } from './const'\nimport {\n TileFormat,\n WidgetQuerySource,\n WidgetTableSource,\n WidgetTilesetSource,\n WidgetRasterSource,\n} from '@carto/api-client'\n\nexport const useSourceStore = create<SourceStore>((set) => ({\n sources: {},\n setSource: (id, source) =>\n set((state) => {\n const sources = { ...state.sources }\n\n if (!source) {\n delete sources[id]\n return { sources }\n }\n\n const newSource = {\n ...(sources[id] ?? {\n apiBaseUrl: ApiBaseUrl,\n clientId: clientID,\n }),\n ...source,\n } as Source\n\n const widgets: Source['widgets'] = getWidgetSource({\n source: newSource,\n })\n\n newSource.widgets = widgets\n\n sources[id] = newSource\n\n return { sources }\n }),\n}))\n\nexport function useSource(id: string) {\n return useSourceStore((state) => state.sources[id])\n}\n\nfunction getWidgetSource({ source }: { source: Source }) {\n const options = {\n query: () => {\n const newSource = source as Source & AllQuerySource\n return new WidgetQuerySource({\n ...newSource,\n accessToken: '',\n sqlQuery: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n table: () => {\n const newSource = source as Source & AllTableSource\n return new WidgetTableSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n tileset: () => {\n const newSource = source as Source & AllTilesetSource\n return new WidgetTilesetSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n tileFormat: newSource.tileFormat ?? TileFormat.BINARY,\n spatialDataType: newSource.spatialDataType ?? 'geo',\n })\n },\n raster: () => {\n const newSource = source as Source & AllRasterSource\n\n if (!newSource.rasterMetadata) {\n return null\n }\n\n return new WidgetRasterSource({\n ...newSource,\n accessToken: '',\n tableName: newSource.data,\n spatialDataType: 'quadbin',\n rasterMetadata: newSource.rasterMetadata,\n })\n },\n }\n\n const key = source.type.split('+')[0] as keyof typeof options\n const option = options[key]\n\n return option?.()\n}\n","import { useMemo } from 'react'\nimport { useSource } from '../providers/sources/store'\n\nexport function useWidgetModel(accessToken: string, sourceId: string) {\n const source = useSource(sourceId)\n return useMemo(() => {\n const widgetModel = source?.widgets\n if (!widgetModel || !accessToken) {\n return null\n }\n // eslint-disable-next-line react-compiler/react-compiler\n widgetModel.props.accessToken = accessToken\n return widgetModel\n }, [accessToken, source])\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n CategoryRequestOptions,\n CategoryResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useCategories({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<CategoryRequestOptions, CategoryResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'categories',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getCategories(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function CategoriesModel({\n children,\n ...modelProps\n}: ModelProps<CategoryRequestOptions, CategoryResponse> & {\n children: (props: UseQueryResult<CategoryResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useCategories(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n FeaturesRequestOptions,\n FeaturesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFeatures({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'features',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFeatures(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FeaturesModel({\n children,\n ...modelProps\n}: ModelProps<FeaturesRequestOptions, FeaturesResponse> & {\n children: (props: UseQueryResult<FeaturesResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFeatures(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { FormulaRequestOptions, FormulaResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useFormula({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<FormulaRequestOptions, FormulaResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'formula',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getFormula(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function FormulaModel({\n children,\n ...modelProps\n}: ModelProps<FormulaRequestOptions, FormulaResponse> & {\n children: (props: UseQueryResult<FormulaResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useFormula(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n HistogramRequestOptions,\n HistogramResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useHistogram({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<HistogramRequestOptions, HistogramResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'histogram',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getHistogram(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function HistogramModel({\n children,\n ...modelProps\n}: ModelProps<HistogramRequestOptions, HistogramResponse> & {\n children: (props: UseQueryResult<HistogramResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useHistogram(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { RangeRequestOptions, RangeResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useRange({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<RangeRequestOptions, RangeResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'range',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getRange(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function RangeModel({\n children,\n ...modelProps\n}: ModelProps<RangeRequestOptions, RangeResponse> & {\n children: (props: UseQueryResult<RangeResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useRange(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { ScatterRequestOptions, ScatterResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useScatter({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<ScatterRequestOptions, ScatterResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'scatter',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getScatter(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function ScatterModel({\n children,\n ...modelProps\n}: ModelProps<ScatterRequestOptions, ScatterResponse> & {\n children: (props: UseQueryResult<ScatterResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useScatter(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type { TableRequestOptions, TableResponse } from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTable({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TableRequestOptions, TableResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'table',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTable(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TableModel({\n children,\n ...modelProps\n}: ModelProps<TableRequestOptions, TableResponse> & {\n children: (props: UseQueryResult<TableResponse, Error>) => React.ReactNode\n}) {\n const queryResult = useTable(modelProps)\n return children(queryResult)\n}\n","import { useWidgetModel } from './use-widget-model'\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query'\nimport type {\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from '@carto/api-client'\nimport type { ModelProps } from './types'\n\nexport function useTimeSeries({\n accessToken,\n sourceId,\n widgetProps,\n useQueryProps: { enabled = true, ...useQueryProps } = {},\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse>) {\n const widgetModel = useWidgetModel(accessToken, sourceId)\n return useQuery({\n queryKey: [\n 'time-series',\n sourceId,\n accessToken,\n widgetProps,\n widgetModel?.props.filters,\n ],\n queryFn: () => widgetModel?.getTimeSeries(widgetProps),\n enabled: !!widgetModel && enabled,\n ...useQueryProps,\n })\n}\n\nexport function TimeSeriesModel({\n children,\n ...modelProps\n}: ModelProps<TimeSeriesRequestOptions, TimeSeriesResponse> & {\n children: (\n props: UseQueryResult<TimeSeriesResponse, Error>,\n ) => React.ReactNode\n}) {\n const queryResult = useTimeSeries(modelProps)\n return children(queryResult)\n}\n","import type { PropsWithChildren } from 'react'\nimport type { MapProviderProps } from './providers/map/types'\nimport type { LassoToolsProviderProps } from './editable/lasso-tools/provider/types'\nimport type { MeasurementToolsProviderProps } from './editable/measurement-tools/provider/types'\nimport { MapProvider } from './providers/map/provider'\nimport { LassoToolsProvider } from './editable/lasso-tools/provider/provider'\nimport { MeasurementToolsProvider } from './editable/measurement-tools/provider/provider'\n\ninterface Props {\n maps: MapProviderProps['values']\n lassoTools?: LassoToolsProviderProps['values']\n measureTools?: MeasurementToolsProviderProps['values']\n}\n\nexport function MapsProvider({\n children,\n maps,\n lassoTools = [],\n measureTools = [],\n}: PropsWithChildren<Props>) {\n return (\n <MapProvider values={maps}>\n <LassoToolsProvider values={lassoTools}>\n <MeasurementToolsProvider values={measureTools}>\n {children}\n </MeasurementToolsProvider>\n </LassoToolsProvider>\n </MapProvider>\n )\n}\n","import { useCallback, useMemo } from 'react'\nimport { useLayerStore } from './providers/layers/store'\nimport { sortLayers } from './utils/sort-layers'\nimport type { Layer, LayerLegend } from './providers/layers/types'\n\nexport function useLegend<T>(\n layersId: string[],\n callback: (layer: Layer) => T,\n) {\n const layers = useLayerStore((state) => state.layers)\n const setLayer = useLayerStore((state) => state.setLayer)\n\n const layersById = useMemo(() => {\n return sortLayers(layersId.map((id) => layers[id]).filter((l) => !!l))\n }, [layers, layersId])\n\n const legend = useMemo(() => {\n return layersById.map(callback)\n }, [callback, layersById])\n\n const onChangeVisibility = useCallback(\n ({\n id,\n visible,\n ...legend\n }: {\n id: string\n visible: boolean\n } & Partial<LayerLegend>) => {\n setLayer(id, {\n props: { visible },\n legend,\n })\n },\n [setLayer],\n )\n\n const onChangRowCollapsed = useCallback(\n ({ id, collapsed }: { id: string; collapsed: boolean }) => {\n setLayer(id, {\n legend: {\n collapsed,\n },\n })\n },\n [setLayer],\n )\n\n const onChangeOpacity = useCallback(\n ({ id, opacity }: { id: string; opacity: number }) => {\n setLayer(id, {\n props: { opacity },\n })\n },\n [setLayer],\n )\n\n return {\n legend,\n onChangeVisibility,\n onChangeOpacity,\n onChangRowCollapsed,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport type { MapRef } from 'react-map-gl/maplibre'\nimport { MAPS_BASEMAP, MapsTypes } from './const'\nimport html2canvas from 'html2canvas'\n\nexport function useMapScreenshot({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const [screenshot, setScreenshot] = useState<string | undefined>(undefined)\n const [isLoading, setIsLoading] = useState(false)\n const basemap = useMapStore((state) => state.maps[mapId]?.basemap)!\n const deckInstanceFn = useMapStore((state) => state.getDeckInstance)\n const overlayInstanceFn = useMapStore((state) => state.getOverlayInstance)\n\n const areLayersLoaded = useMapStore(\n (state) => state.maps[mapId]?.areLayersLoaded,\n )!\n const isLoaded = useMapStore((state) => state.maps[mapId]?.isLoaded)!\n\n const isAllLoaded = isLoaded && areLayersLoaded\n\n const { type } = MAPS_BASEMAP[basemap]\n const isGmaps = type === MapsTypes.googleMaps\n\n const _takeScreenshot = useCallback(async () => {\n const deckInstance = deckInstanceFn(mapId)!\n const overlayInstance = overlayInstanceFn(mapId)!\n try {\n const canvas = document.createElement('canvas')\n canvas.width = deckInstance.width ?? 0\n canvas.height = deckInstance.height ?? 0\n\n const context = canvas.getContext('2d')\n\n if (isGmaps) {\n const _overlayInstance = overlayInstance as google.maps.Map\n\n if ((_overlayInstance.getRenderingType() as string) !== 'RASTER') {\n throw new Error('Only raster type is supported for Google Maps')\n }\n\n const data = await html2canvas(_overlayInstance.getDiv(), {\n useCORS: true,\n })\n context?.drawImage(data, 0, 0, deckInstance.width, deckInstance.height)\n } else {\n const _overlayInstance = overlayInstance as MapRef\n _overlayInstance.redraw()\n context?.drawImage(\n _overlayInstance.getMap().getCanvas(),\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n }\n\n deckInstance?.redraw('screenshot')\n context?.drawImage(\n deckInstance.getCanvas()!,\n 0,\n 0,\n deckInstance.width,\n deckInstance.height,\n )\n\n const data = canvas.toDataURL()\n\n setScreenshot(data)\n } catch (err) {\n // eslint-disable-next-line\n console.error(err)\n } finally {\n setIsLoading(false)\n }\n }, [deckInstanceFn, isGmaps, mapId, overlayInstanceFn])\n\n const takeScreenshot = useCallback(() => {\n setIsLoading(true)\n if (!isAllLoaded) return\n\n void _takeScreenshot()\n }, [_takeScreenshot, isAllLoaded])\n\n return {\n takeScreenshot,\n isLoading,\n screenshot,\n }\n}\n","import { useMemo } from 'react'\nimport { useMapStore } from './providers/map/provider'\nimport type { MapComponentProps } from './types'\nimport {\n createViewportSpatialFilter,\n type SpatialFilter,\n} from '@carto/api-client'\nimport { useLassoToolsState } from './editable/lasso-tools/provider/provider'\nimport { getMaskValues } from './editable/lasso-tools/util'\nimport { multiPolygon } from '@turf/helpers'\nimport type { Polygon } from 'geojson'\n\nexport function useSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewportSpatialFilter = useViewportSpatialFilter({ mapId })\n\n const lassoToolsSpatialFilter = useLassoToolsSpatialFilter({\n mapId,\n }) as unknown as SpatialFilter | undefined\n\n return {\n spatialFilter: lassoToolsSpatialFilter ?? viewportSpatialFilter,\n lassoToolsSpatialFilter: lassoToolsSpatialFilter,\n viewportSpatialFilter,\n }\n}\n\nexport function useViewportSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const viewport = useMapStore((state) => state.viewports[mapId])\n\n return useMemo(() => {\n if (!viewport) return\n return createViewportSpatialFilter(viewport.getBounds())\n }, [viewport])\n}\n\nexport function useLassoToolsSpatialFilter({\n mapId,\n}: {\n mapId: MapComponentProps['id']\n}) {\n const _values = useLassoToolsState((state) => state.data[mapId]?.values)\n\n return useMemo(() => {\n const values = getMaskValues({ values: _values }).filter(\n (value) => value.properties.visible,\n )\n\n if (!values?.length) return\n\n return multiPolygon(\n values.map((value) => (value.geometry as Polygon).coordinates),\n ).geometry\n }, [_values])\n}\n","export const formatterTypes = {\n currency: 'CURRENCY',\n default: 'DEFAULT',\n number: 'NUMBER',\n} as const\n","import { formatCurrency, formatNumber } from '@carto/ps-utils'\nimport { formatterTypes } from './const'\nimport type { Formatters, Value } from './types'\n\nexport const FORMATTERS: Formatters = {\n [formatterTypes.currency]: {\n type: formatterTypes.currency,\n format: (value: Value, locale: string) => {\n return formatCurrency(value as number, locale)\n },\n },\n [formatterTypes.number]: {\n type: formatterTypes.number,\n format: (value: Value, locale: string) => {\n return formatNumber(value as number, locale)\n },\n },\n [formatterTypes.default]: {\n type: formatterTypes.default,\n format: (value: Value) => {\n return value.toLocaleString()\n },\n },\n}\n","import { formatterTypes } from './const'\nimport { FORMATTERS } from './object-to-html.contants'\nimport type { FieldFormatter, ObjectToHtmlOptions, Value } from './types'\n\n/**\n * Returns a string with the HTML content for an object.\n *\n * @param {ObjectToHtmlOptions} - The options of the formatter.\n *\n * @return {string}\n *\n * @defaultValues\n *\n * | Prop | Value |\n * | --- | --- |\n * | `formatters` | `{}` |\n * | `includeColumns` | `Object.keys(properties)` |\n * | `locale` | `en-US` |\n * | `showColumnName` | `true` |\n * | `title` | `''` |\n * | `getColumnName` | `Function` |\n * | `getFieldHtml` | `Function` |\n * | `getTitle` | `Function` |\n * | `getValue` | `Function` |\n *\n * @example\n * const properties = {\n * name: 'I am a feature',\n * price: 100,\n * }\n *\n * const html = objectToHtml({\n * properties,\n * formatters: {\n * price: 'CURRENCY',\n * },\n * locale: 'es-ES',\n * })\n */\nexport function objectToHtml<T extends Record<string, Value>>({\n properties,\n formatters = {},\n includeColumns = Object.keys(properties),\n locale = 'en-US',\n showColumnName = true,\n title,\n getColumnName = _getColumnName,\n getFieldHtml = _getFieldHtml,\n getTitle = _getTitle,\n getValue = _getValue,\n}: ObjectToHtmlOptions<T>): string {\n const header = title ? getTitle(title) : ''\n\n const propNames = includeColumns\n\n const body = propNames.reduce((acc, cur) => {\n const formatter = formatters[cur]!\n const value = properties[cur]!\n\n const valueTransformed = getValue(value, locale, formatter)\n const columnName = showColumnName ? getColumnName(cur) : ''\n\n return acc + getFieldHtml(columnName, valueTransformed)\n }, '')\n\n return header + body\n}\n\nfunction _getTitle(title: string) {\n return `<h3 style=\"margin: 0\"><strong>${title}</strong></h3></br>`\n}\n\nfunction _getFieldHtml(columnName: string, value: Value) {\n const propHtml = `${columnName}${value}</br>`\n\n return propHtml\n}\n\nfunction _getValue(value: Value, locale: string, formatter?: FieldFormatter) {\n try {\n const format = getFormatterFunction(formatter)\n return format(value, locale)\n } catch {\n return value as string\n }\n}\n\nfunction getFormatterFunction(formatter?: FieldFormatter) {\n if (typeof formatter === 'function') {\n return formatter\n }\n\n const fn =\n (formatter && FORMATTERS[formatter]) ?? FORMATTERS[formatterTypes.default]\n\n return fn.format\n}\n\nfunction _getColumnName(propName: string) {\n return `<strong>${propName}</strong>: `\n}\n","import type { Layer } from '../providers/layers/types'\n\nexport function mappingLegendMeridian<T>(layer: Layer) {\n return {\n collapsed: layer.legend?.collapsed,\n collapsible: layer.legend?.collapsible,\n helperText: layer.legend?.helperText,\n id: layer.props.id,\n legend: layer.legend?.variables,\n maxZoom: layer.legend?.maxZoom,\n minZoom: layer.legend?.minZoom,\n opacity: layer.props.opacity ?? 1,\n showOpacityControl: layer.legend?.opacityControl,\n switchable: layer.legend?.switchable,\n title: layer.name,\n visible: layer.props.visible ?? true,\n } as T\n}\n","import type { ZoomControl } from './types'\nimport { useMapStore } from './providers/map/provider'\nimport { useCallback } from 'react'\n\nexport function ZoomControls({ children, mapId }: ZoomControl) {\n const { zoom, maxZoom, minZoom } = useMapStore(\n (state) => state.viewStates[mapId]!,\n )\n const isLoaded = useMapStore((state) => state.maps[mapId]!.areLayersLoaded)\n\n const setZoom = useMapStore((state) => state.setZoom)\n const flyTo = useMapStore((state) => state.flyTo)\n\n return children({\n zoom,\n maxZoom,\n minZoom,\n isLoading: !isLoaded,\n setZoom: useCallback((zoom) => setZoom(mapId, zoom), [mapId, setZoom]),\n flyTo: useCallback(\n (viewState: Parameters<typeof flyTo>[1]) => flyTo(mapId, viewState),\n [flyTo, mapId],\n ),\n })\n}\n"],"names":["GmapsBasemap","roadmap","satellite","hybrid","CartoBasemaps","darkMatter","positron","voyager","CartoBasemapURL","MapsTypes","maplibre","googleMaps","MAPS_BASEMAP","url","type","dark","getCursorDefault","isDragging","isHovering","getTooltipDefault","info","html","style","padding","background","DeckGLComponent","t0","$","_c","instanceRef","onLoad","onResize","overlayRef","parameters","rest","t1","t2","t3","t4","t5","t6","t7","t8","basemap","controller","id","layers","gmapsProps","getCursor","getTooltip","onViewStateChange","undefined","t9","t10","apiKey","APIProviderProps","_gmapsProps","_temp","t11","Symbol","for","isLoaded","setLoaded","useState","t12","every","_temp2","isAllLoaded","t13","props","handleResize","mapStyle","isGmaps","t14","t15","filter","_temp3","map","_temp4","_layers","t16","state","newState","viewState","limitTiltRange","handleViewStateChange","t17","e","index","state_0","loaded_0","i","loaded","handleLoad","t18","t19","useEffect","t20","t21","depthTest","t22","MapReferences","t23","jsx","Gmaps","lat","initialViewState","latitude","lng","longitude","zoom","MapLibre","_temp5","t24","MapProvider","jsxs","DeckGL","t25","APIProvider","$el","document","querySelector","classList","remove","Layer","props_0","l","default","mapLibre","useMapLibre","gmaps","useMapGmaps","EditType","addFeature","addTentativePosition","updateTentativeFeature","cancel","finish","addPosition","CustomCompositeEditMode","CompositeMode","constructor","TranslateMode","ModifyMode","handleKeyUp","event","key","resetClickSequence","onEdit","updatedData","data","editType","editContext","MAP_LASSO_TOOLS_LAYER_ID","MAP_MASK_LAYER_ID","DEFAULT_LASSO_TOOLS_LAYER_PROPS","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","value","mode","DrawPolygonMode","rectangle","DrawRectangleMode","circle","DrawCircleFromCenterMode","lasso","DrawPolygonByDraggingMode","edit","useLayerStore","create","set","setLayer","layer","_layer","reduce","acc","extension","some","equals","push","legend","transitionFlyConfig","transitionDuration","transitionInterpolator","FlyToInterpolator","curve","createMapSlice","initProps","defaultProps","curr","areLayersLoaded","current","get","maps","setBasemap","setLoad","setLayersLoad","getOverlayInstance","store","getDeckInstance","deck","getViewState","getViewports","rect","getViewport","addLayers","Set","removeLayers","includes","createViewStateSlice","viewStates","viewports","updateViewPort","vp","WebMercatorViewport","setViewState","setZoom","setMinZoom","minZoom","setMaxZoom","maxZoom","createCommonSlice","_","fitBounds","bounds","options","viewport","newViewState","boundsOptions","viewStateOptions","flyTo","target","finalViewState","createMapStore","createStore","args","MapContext","createContext","children","values","storeRef","useMapStore","selector","useContext","Object","keys","length","Error","useStore","isMergeableObject","isNonNullObject","isSpecial","stringValue","isReactElement","canUseSymbol","REACT_ELEMENT_TYPE","emptyTarget","val","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","source","element","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","symbol","getKeys","propertyIsOnObject","object","property","propertyIsUnsafe","mergeObject","destination","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","array","prev","next","deepmerge_1","cjs","getLassoToolsLayer","getLayerProps","EditableGeoJsonLayer","layerProps","getLineColor","getFillColor","pointColor","_layerProps","modeConfig","preventOverlappingLines","defaultLayerProps","getTentativeLineColor","getTentativeFillColor","getEditHandlePointColor","getEditHandlePointOutlineColor","outline","dataComparator","oldData","features","createLassoToolsStore","enabled","mapId","modeInstance","modes","modeSelected","setEnabled","setValue","_value","setVisibility","valueId","properties","setModeSelected","setModeInstance","LassoToolsContext","LassoToolsProvider","useLassoToolsState","LassoToolsControls","Mode","useMemo","serialize","label","handleModeSelected","useCallback","getMaskValues","convert","configureMeasurements","convertMetersTo","distance","unit","from","CONVERSIONS_UNITS","MapMeasurementUnit","meter","to","DEFAULT_AUTO_SPLIT_NUMBER","getTextLayerFormattedDistance","meters","locale","autoSplitNumber","intlOptions","isMetricSystem","MapMeasurementUnitAuto","isImperialSystem","isAuto","_unit","_number","isSmallDistance","convertUnit","kilometer","INTL_UNITS","feet","mile","formatNumber","unitDisplay","notation","minimumFractionDigits","maximumFractionDigits","getDeckController","hasDoubleClickZoom","doubleClickZoom","buildTooltip","position","formatTooltip","turfOptions","units","text","parseFloat","toString","toFixed","measurementCallback","CustomMeasureAreaMode","MeasureAreaMode","_isMeasuringSessionFinished","area","tooltips","resultPolygon","handleClick","picks","clickedEditHandle","getPickedEditHandle","clickSequence","getClickSequence","positionAdded","allowOverlapping","addClickSequence","coordinates","isFinalizedEdition","finalizeEdition","mapCoords","resetEdition","handlePointerMove","tentativeGuide","getTentativeGuide","geometry","centroid","getGuides","getTooltips","positionIndexes","overlappingLines","currentLine","otherLines","slice","intersectingPoints","lineIntersect","polygonToAdd","selectedIndexes","editAction","getAddFeatureOrBooleanPolygonAction","positions","getTooltipText","CustomMeasureBufferMode","_currentArea","areaCircle","checkAndFinishPolygon","tentativeFeature","onUpdateCursor","radius","CustomMeasureDistanceMode","MeasureDistanceMode","_currentDistance","stopPropagation","clickSequenceLength","_currentTooltips","MAP_MEASURE_LAYER_ID","DEFAULT_LAYER_PROPS","_subLayerProps","fontFamily","fontWeight","getSize","lineHeight","getPixelOffset","getTextAnchor","getAlignmentBaseline","updateTriggers","guides","DEFAULT_COLORS","DEFAULT_PROPS","centimeter","milimeter","yard","MapMeasurementUnitTurf","MEASUREMENT_TOOLS_UNITS_DISTANCE_VALUES","system","MEASUREMENT_TOOLS_UNITS_DISTANCE","MEASUREMENT_TOOLS_UNITS_AREA","DEFAULT_MEASUREMENT_TOOLS_MODES","buffer","DEFAULT_MEASUREMENT_TOOLS_UNITS","EXCEPTED_LAYER_IDS","LassoTools","defaultType","mapLayers","useShallow","mapLayersVisibilityRef","useRef","maskValues","maskFeatureCollection","maskVisible","setData","selectedFeatureIndexes","setSelectedFeatureIndexes","setDataByValues","_data","feature","autoIncrement","handleCancelEdit","forEach","crypto","randomUUID","guideColorEditing","pointColorEditing","fillColorEditing","borderFinished","fillFinished","getFilterValue","onClick","_e","isGuide","d","ViewMode","f","Number","GeoJsonLayer","layerId","currentLayer","find","MaskExtension","maskId","Controls","getMeasurementToolsLayer","guideColor","textOptions","_distance","outlineColor","outlineWidth","fontSettings","sdf","smoothing","getText","with","createMeasurementToolsStore","measurements","clearLayerOnStart","setFinished","setDistance","setUnit","setLocale","setPositions","MeasurementToolsContext","MeasurementToolsProvider","useMeasurementToolsState","useMeasurementTools","state_1","_setDistance","distance_0","state_3","state_4","_setVisibility","enabled_0","state_6","_setModeSelected","state_8","_setFinished","finished_0","state_10","_setLocale","locale_0","state_12","_setInstance","_temp6","modeInstance_0","state_14","_setPositions","_temp7","positions_0","state_16","_setUnit","_temp8","unit_0","clearLayer","enabled_1","toggleLayer","state_17","state_15","state_13","state_11","state_9","state_7","state_5","state_2","MeasurementToolsControl","_toggleLayer","ModeClass","enable","MeasurementTools","useLayers","layersMap","defaultLastLayerOrder","sortLayers","sortedLayers","sort","a","b","order","Infinity","lastLayers","ZOOM_DEBOUNCE_MS","MapComponent","timerRef","computedLayers","callback","interactionState","isZooming","clearInterval","setTimeout","handleAfterRender","context","onAfterRender","_onDragEnd","onDragEnd","handleDragEnd","ApiBaseUrl","clientID","useSourceStore","sources","setSource","newSource","apiBaseUrl","clientId","widgets","getWidgetSource","useSource","query","WidgetQuerySource","accessToken","sqlQuery","spatialDataType","table","WidgetTableSource","tableName","tileset","WidgetTilesetSource","tileFormat","TileFormat","BINARY","raster","rasterMetadata","WidgetRasterSource","split","option","useWidgetModel","sourceId","widgetModel","useCategories","widgetProps","useQueryProps","filters","getCategories","queryKey","queryFn","useQuery","CategoriesModel","modelProps","queryResult","useFeatures","getFeatures","FeaturesModel","useFormula","getFormula","FormulaModel","useHistogram","getHistogram","HistogramModel","useRange","getRange","RangeModel","useScatter","getScatter","ScatterModel","useTable","getTable","TableModel","useTimeSeries","getTimeSeries","TimeSeriesModel","MapsProvider","lassoTools","measureTools","useLegend","layersId","layersById","onChangeVisibility","onChangRowCollapsed","collapsed","onChangeOpacity","opacity","useMapScreenshot","screenshot","setScreenshot","isLoading","setIsLoading","deckInstanceFn","overlayInstanceFn","_takeScreenshot","deckInstance","overlayInstance","canvas","createElement","width","height","getContext","_overlayInstance","getRenderingType","html2canvas","getDiv","useCORS","drawImage","redraw","getMap","getCanvas","toDataURL","err","console","error","takeScreenshot","useSpatialFilter","viewportSpatialFilter","useViewportSpatialFilter","lassoToolsSpatialFilter","useLassoToolsSpatialFilter","spatialFilter","bb0","createViewportSpatialFilter","getBounds","_values","multiPolygon","value_0","formatterTypes","currency","number","FORMATTERS","format","formatCurrency","toLocaleString","objectToHtml","formatters","includeColumns","showColumnName","title","getColumnName","_getColumnName","getFieldHtml","_getFieldHtml","getTitle","_getTitle","getValue","_getValue","header","body","cur","formatter","valueTransformed","columnName","propHtml","getFormatterFunction","propName","mappingLegendMeridian","collapsible","helperText","variables","showOpacityControl","opacityControl","switchable","name","ZoomControls","zoom_0"],"mappings":"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","x_google_ignoreList":[10]}
|