esri-gl 1.0.4 → 1.0.6
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/README.md +7 -1
- package/dist/package.json +1 -1
- package/dist/react-map-gl.d.ts +19 -1
- package/dist/react-map-gl.js +46 -11
- package/dist/react-map-gl.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,6 @@ A TypeScript library that bridges Esri ArcGIS REST services with MapLibre GL JS
|
|
|
6
6
|
[](https://github.com/muimsd/esri-gl/actions/workflows/ci.yml)
|
|
7
7
|
[](http://www.typescriptlang.org/)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
|
-
[](https://www.buymeacoffee.com/muimsd)
|
|
10
9
|
|
|
11
10
|
**[Documentation](https://esri-gl.pages.dev/)** · **[Live Demos](https://esri-gl-demo.pages.dev/)** · **[npm](https://www.npmjs.com/package/esri-gl)**
|
|
12
11
|
|
|
@@ -162,6 +161,7 @@ import { EsriDynamicLayer, EsriFeatureLayer } from 'esri-gl/react-map-gl';
|
|
|
162
161
|
url="https://.../Census/MapServer"
|
|
163
162
|
layers={[0, 1]}
|
|
164
163
|
opacity={0.8}
|
|
164
|
+
token="YOUR_TOKEN"
|
|
165
165
|
/>
|
|
166
166
|
<EsriFeatureLayer
|
|
167
167
|
id="states"
|
|
@@ -171,6 +171,8 @@ import { EsriDynamicLayer, EsriFeatureLayer } from 'esri-gl/react-map-gl';
|
|
|
171
171
|
</Map>
|
|
172
172
|
```
|
|
173
173
|
|
|
174
|
+
All layer components accept `token`, `apiKey`, `proxy`, `getAttributionFromService`, `requestParams`, and `fetchOptions` for authenticated services and custom request behavior.
|
|
175
|
+
|
|
174
176
|
## Examples
|
|
175
177
|
|
|
176
178
|
Working examples in [`examples/`](examples/):
|
|
@@ -206,6 +208,10 @@ npm run build:demo # Build demo site
|
|
|
206
208
|
|
|
207
209
|
Pre-commit hooks automatically run formatting, linting, and tests via [Husky](https://typicode.github.io/husky/).
|
|
208
210
|
|
|
211
|
+
## Support
|
|
212
|
+
|
|
213
|
+
<a href="https://www.buymeacoffee.com/muimsd"><img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=&slug=muimsd&button_colour=00ff04&font_colour=000000&font_family=Inter&outline_colour=000000&coffee_colour=FFDD00" alt="Buy Me A Coffee" width="150" /></a>
|
|
214
|
+
|
|
209
215
|
## License
|
|
210
216
|
|
|
211
217
|
MIT — see [LICENSE](LICENSE)
|
package/dist/package.json
CHANGED
package/dist/react-map-gl.d.ts
CHANGED
|
@@ -5,7 +5,25 @@ import { D as DynamicMapService, T as TiledMapService, e as ImageService, f as V
|
|
|
5
5
|
export { j as AGOLServiceError, A as ApplyEditsResult, k as AttachmentInfo, B as BatchLayerOperation, l as BetweenFilter, C as ComparisonFilter, m as ComparisonOp, n as DynamicLayer, a as EditResult, o as EsriDrawingInfo, p as EsriDynamicMapLayerSource, q as EsriRenderer, E as EsriServiceOptions, r as EsriTextSymbol, s as Extent, F as FeatureServiceOptions, t as FeatureSet, u as FieldInfo, v as Find, G as GroupFilter, w as IdentifyFeatures, i as IdentifyImage, c as ImageServiceOptions, x as InFilter, L as LayerFilter, y as LayerInfo, z as LayerLabelingInfo, H as LayerMetadata, J as LayerQueryOptions, K as LayerScaleRange, M as LayerSpecification, N as LayerTimeOptions, O as LayerUpdateEvent, P as LayerUpdateType, Q as LegendInfo, R as LogicalOp, S as MapExportOptions, U as NullFilter, W as PaginatedFeatureCollection, X as Query, Y as RasterSourceOptions, Z as Service, _ as ServiceErrorEvent, $ as ServiceEventType, a0 as ServiceMetadata, a1 as SourceSpecification, a2 as StatisticResult, a3 as Task, a4 as TimeAnimationOptions, h as VectorBasemapStyle, V as VectorBasemapStyleOptions, a5 as VectorSourceOptions, d as VectorTileServiceOptions, a6 as cleanTrailingSlash, a7 as find, a8 as getServiceDetails, a9 as identifyImage, aa as query, ab as updateAttribution } from './index-DczUYC4z.js';
|
|
6
6
|
import 'react';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Common authentication and request options forwarded to the underlying
|
|
10
|
+
* Esri service when any defined value is passed on a layer component.
|
|
11
|
+
*/
|
|
12
|
+
interface EsriAuthProps {
|
|
13
|
+
/** ArcGIS token sent with every request as `token` query param */
|
|
14
|
+
token?: string;
|
|
15
|
+
/** ArcGIS API key sent via `X-Esri-Authorization` header */
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** Proxy URL or flag forwarded to the service */
|
|
18
|
+
proxy?: string | boolean;
|
|
19
|
+
/** Whether to fetch and apply service attribution (default true in services) */
|
|
20
|
+
getAttributionFromService?: boolean;
|
|
21
|
+
/** Extra request params merged into every service request */
|
|
22
|
+
requestParams?: Record<string, unknown>;
|
|
23
|
+
/** Extra fetch options used by the service */
|
|
24
|
+
fetchOptions?: RequestInit;
|
|
25
|
+
}
|
|
26
|
+
interface EsriLayerBaseProps extends EsriAuthProps {
|
|
9
27
|
id: string;
|
|
10
28
|
sourceId?: string;
|
|
11
29
|
beforeId?: string;
|
package/dist/react-map-gl.js
CHANGED
|
@@ -40,6 +40,22 @@ function useReactMapGL() {
|
|
|
40
40
|
return mapboxCollection ?? maplibreCollection ?? EMPTY_COLLECTION;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Copy any defined auth/passthrough props from a layer component's props
|
|
45
|
+
* onto a service-options object. Undefined values are skipped so they
|
|
46
|
+
* do not override service defaults.
|
|
47
|
+
*/
|
|
48
|
+
function applyAuthOptions(options, props) {
|
|
49
|
+
const target = options;
|
|
50
|
+
if (props.token !== undefined) target.token = props.token;
|
|
51
|
+
if (props.apiKey !== undefined) target.apiKey = props.apiKey;
|
|
52
|
+
if (props.proxy !== undefined) target.proxy = props.proxy;
|
|
53
|
+
if (props.getAttributionFromService !== undefined) target.getAttributionFromService = props.getAttributionFromService;
|
|
54
|
+
if (props.requestParams !== undefined) target.requestParams = props.requestParams;
|
|
55
|
+
if (props.fetchOptions !== undefined) target.fetchOptions = props.fetchOptions;
|
|
56
|
+
return options;
|
|
57
|
+
}
|
|
58
|
+
|
|
43
59
|
/**
|
|
44
60
|
* React Map GL component for Esri Dynamic Map Service
|
|
45
61
|
*/
|
|
@@ -80,10 +96,11 @@ function EsriDynamicLayer(props) {
|
|
|
80
96
|
if (props.format !== undefined) options.format = props.format;
|
|
81
97
|
if (props.dpi !== undefined) options.dpi = props.dpi;
|
|
82
98
|
if (props.transparent !== undefined) options.transparent = props.transparent;
|
|
99
|
+
applyAuthOptions(options, props);
|
|
83
100
|
return new DynamicMapService(sourceId, mapInstance,
|
|
84
101
|
// Type assertion for map compatibility
|
|
85
102
|
options);
|
|
86
|
-
}, [map, isMapLoaded, sourceId, props.url, props.layers, props.layerDefs, props.format, props.dpi, props.transparent]);
|
|
103
|
+
}, [map, isMapLoaded, sourceId, props.url, props.layers, props.layerDefs, props.format, props.dpi, props.transparent, props.token, props.apiKey, props.proxy, props.getAttributionFromService, props.requestParams, props.fetchOptions]);
|
|
87
104
|
useEffect(() => {
|
|
88
105
|
if (!map || !service) return;
|
|
89
106
|
const mapInstance = map.getMap?.();
|
|
@@ -152,10 +169,12 @@ function EsriTiledLayer(props) {
|
|
|
152
169
|
if (!map || !isMapLoaded) return null;
|
|
153
170
|
const mapInstance = map.getMap?.();
|
|
154
171
|
if (!mapInstance) return null;
|
|
155
|
-
|
|
172
|
+
const options = {
|
|
156
173
|
url: props.url
|
|
157
|
-
}
|
|
158
|
-
|
|
174
|
+
};
|
|
175
|
+
applyAuthOptions(options, props);
|
|
176
|
+
return new TiledMapService(sourceId, mapInstance, options);
|
|
177
|
+
}, [map, isMapLoaded, sourceId, props.url, props.token, props.apiKey, props.proxy, props.getAttributionFromService, props.requestParams, props.fetchOptions]);
|
|
159
178
|
useEffect(() => {
|
|
160
179
|
if (!map || !service) return;
|
|
161
180
|
const mapInstance = map.getMap?.();
|
|
@@ -231,8 +250,9 @@ function EsriImageLayer(props) {
|
|
|
231
250
|
if (props.renderingRule !== undefined) options.renderingRule = props.renderingRule;
|
|
232
251
|
if (props.mosaicRule !== undefined) options.mosaicRule = props.mosaicRule;
|
|
233
252
|
if (props.format !== undefined) options.format = props.format;
|
|
253
|
+
applyAuthOptions(options, props);
|
|
234
254
|
return new ImageService(sourceId, mapInstance, options);
|
|
235
|
-
}, [map, isMapLoaded, sourceId, props.url, props.renderingRule, props.mosaicRule, props.format]);
|
|
255
|
+
}, [map, isMapLoaded, sourceId, props.url, props.renderingRule, props.mosaicRule, props.format, props.token, props.apiKey, props.proxy, props.getAttributionFromService, props.requestParams, props.fetchOptions]);
|
|
236
256
|
useEffect(() => {
|
|
237
257
|
if (!map || !service) return;
|
|
238
258
|
const mapInstance = map.getMap?.();
|
|
@@ -304,16 +324,30 @@ function EsriVectorTileLayer(props) {
|
|
|
304
324
|
if (!mapInstance) return;
|
|
305
325
|
const mi = mapInstance;
|
|
306
326
|
let cancelled = false;
|
|
307
|
-
const
|
|
327
|
+
const options = {
|
|
308
328
|
url: props.url
|
|
309
|
-
}
|
|
329
|
+
};
|
|
330
|
+
applyAuthOptions(options, props);
|
|
331
|
+
const service = new VectorTileService(sourceId, mapInstance, options);
|
|
310
332
|
serviceRef.current = service;
|
|
311
333
|
// Fetch the full style and add all layers from it
|
|
312
334
|
service.getStyle().then(() => {
|
|
313
335
|
if (cancelled) return;
|
|
314
336
|
// Fetch the full style document to get all layers
|
|
315
|
-
|
|
316
|
-
|
|
337
|
+
let styleUrl = `${props.url}/resources/styles/root.json`;
|
|
338
|
+
if (props.token) {
|
|
339
|
+
styleUrl += `?token=${encodeURIComponent(props.token)}`;
|
|
340
|
+
}
|
|
341
|
+
const fetchInit = {
|
|
342
|
+
...(props.fetchOptions || {})
|
|
343
|
+
};
|
|
344
|
+
if (props.apiKey) {
|
|
345
|
+
fetchInit.headers = {
|
|
346
|
+
...(fetchInit.headers || {}),
|
|
347
|
+
'X-Esri-Authorization': `Bearer ${props.apiKey}`
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
return fetch(styleUrl, fetchInit);
|
|
317
351
|
}).then(response => {
|
|
318
352
|
if (cancelled || !response) return;
|
|
319
353
|
if (!response.ok) throw new Error(`Failed to fetch style: ${response.status}`);
|
|
@@ -370,7 +404,7 @@ function EsriVectorTileLayer(props) {
|
|
|
370
404
|
service.remove();
|
|
371
405
|
serviceRef.current = null;
|
|
372
406
|
};
|
|
373
|
-
}, [map, isMapLoaded, sourceId, props.url, props.id, props.beforeId, props.visible]);
|
|
407
|
+
}, [map, isMapLoaded, sourceId, props.url, props.id, props.beforeId, props.visible, props.token, props.apiKey, props.proxy, props.getAttributionFromService, props.requestParams, props.fetchOptions]);
|
|
374
408
|
return null;
|
|
375
409
|
}
|
|
376
410
|
|
|
@@ -446,6 +480,7 @@ function EsriFeatureLayer(props) {
|
|
|
446
480
|
};
|
|
447
481
|
if (props.where !== undefined) options.where = props.where;
|
|
448
482
|
if (props.outFields !== undefined) options.outFields = props.outFields;
|
|
483
|
+
applyAuthOptions(options, props);
|
|
449
484
|
const service = new FeatureService(sourceId, mapInstance, options);
|
|
450
485
|
serviceRef.current = service;
|
|
451
486
|
// Add GeoJSON layer
|
|
@@ -481,7 +516,7 @@ function EsriFeatureLayer(props) {
|
|
|
481
516
|
service.remove();
|
|
482
517
|
serviceRef.current = null;
|
|
483
518
|
};
|
|
484
|
-
}, [map, isMapLoaded, sourceId, props.url, props.where, props.outFields, props.id, props.beforeId, props.visible, props.type]);
|
|
519
|
+
}, [map, isMapLoaded, sourceId, props.url, props.where, props.outFields, props.id, props.beforeId, props.visible, props.type, props.token, props.apiKey, props.proxy, props.getAttributionFromService, props.requestParams, props.fetchOptions]);
|
|
485
520
|
return null;
|
|
486
521
|
}
|
|
487
522
|
|
package/dist/react-map-gl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-map-gl.js","sources":["../src/react-map-gl/utils/useReactMapGL.ts","../src/react-map-gl/components/EsriDynamicLayer.tsx","../src/react-map-gl/components/EsriTiledLayer.tsx","../src/react-map-gl/components/EsriImageLayer.tsx","../src/react-map-gl/components/EsriVectorTileLayer.tsx","../src/react-map-gl/components/EsriVectorBasemapLayer.tsx","../src/react-map-gl/components/EsriFeatureLayer.tsx","../src/react-map-gl/hooks/useEsriMapboxLayer.ts","../src/react-map-gl/hooks/useEsriMaplibreLayer.ts"],"sourcesContent":["import { useMap as useMapMapbox } from 'react-map-gl/mapbox';\nimport { useMap as useMapMaplibre } from 'react-map-gl/maplibre';\nimport type { MapRef as MapboxMapRef } from 'react-map-gl/mapbox';\nimport type { MapRef as MaplibreMapRef } from 'react-map-gl/maplibre';\n\nexport type ReactMapGLMapRef = MapboxMapRef | MaplibreMapRef;\n\nexport type ReactMapGLMapCollection = {\n current: ReactMapGLMapRef | null;\n [id: string]: ReactMapGLMapRef | null | undefined;\n};\n\nconst EMPTY_COLLECTION: ReactMapGLMapCollection = { current: null };\n\nfunction withFallback<T>(fn: () => T): T | null {\n try {\n return fn();\n } catch {\n // The hook will throw if the corresponding provider is not present.\n return null;\n }\n}\n\nfunction normalizeCollection(\n collection: ReturnType<typeof useMapMapbox> | ReturnType<typeof useMapMaplibre> | null\n): ReactMapGLMapCollection | null {\n if (!collection) {\n return null;\n }\n\n const current = ((collection as { current?: ReactMapGLMapRef }).current ??\n null) as ReactMapGLMapRef | null;\n\n return {\n current,\n ...collection,\n } as ReactMapGLMapCollection;\n}\n\nexport function useReactMapGL(): ReactMapGLMapCollection {\n const mapboxCollection = normalizeCollection(withFallback(useMapMapbox));\n const maplibreCollection = normalizeCollection(withFallback(useMapMaplibre));\n\n if (mapboxCollection?.current) {\n return mapboxCollection;\n }\n\n if (maplibreCollection?.current) {\n return maplibreCollection;\n }\n\n return mapboxCollection ?? maplibreCollection ?? EMPTY_COLLECTION;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { DynamicMapService } from '@/Services/DynamicMapService';\nimport type { EsriServiceOptions } from '@/types';\nimport type { EsriDynamicLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\n\n/**\n * React Map GL component for Esri Dynamic Map Service\n */\nexport function EsriDynamicLayer(props: EsriDynamicLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-dynamic-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: EsriServiceOptions & { url: string } = { url: props.url };\n if (props.layers !== undefined) options.layers = props.layers;\n if (props.layerDefs !== undefined) options.layerDefs = props.layerDefs;\n if (props.format !== undefined) options.format = props.format;\n if (props.dpi !== undefined) options.dpi = props.dpi;\n if (props.transparent !== undefined) options.transparent = props.transparent;\n\n return new DynamicMapService(\n sourceId,\n mapInstance as unknown as import('@/types').Map, // Type assertion for map compatibility\n options\n );\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.layers,\n props.layerDefs,\n props.format,\n props.dpi,\n props.transparent,\n ]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { TiledMapService } from '@/Services/TiledMapService';\nimport type { EsriTiledLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\n\n/**\n * React Map GL component for Esri Tiled Map Service\n */\nexport function EsriTiledLayer(props: EsriTiledLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-tiled-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n return new TiledMapService(sourceId, mapInstance as unknown as import('@/types').Map, {\n url: props.url,\n });\n }, [map, isMapLoaded, sourceId, props.url]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport { ImageService } from '@/Services/ImageService';\nimport type { ImageServiceOptions } from '@/types';\nimport type { EsriImageLayerProps } from '../types';\n\n/**\n * React Map GL component for Esri Image Service\n */\nexport function EsriImageLayer(props: EsriImageLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-image-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: Partial<ImageServiceOptions> & { url: string } = { url: props.url };\n if (props.renderingRule !== undefined) options.renderingRule = props.renderingRule;\n if (props.mosaicRule !== undefined) options.mosaicRule = props.mosaicRule;\n if (props.format !== undefined) options.format = props.format as ImageServiceOptions['format'];\n\n return new ImageService(sourceId, mapInstance as unknown as import('@/types').Map, options);\n }, [map, isMapLoaded, sourceId, props.url, props.renderingRule, props.mosaicRule, props.format]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { VectorTileService } from '@/Services/VectorTileService';\nimport type { EsriVectorTileLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport type { Map } from '@/types';\n\n/**\n * React Map GL component for Esri Vector Tile Service\n */\nexport function EsriVectorTileLayer(props: EsriVectorTileLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-vector-tile-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n const serviceRef = useRef<VectorTileService | null>(null);\n const layerIdsRef = useRef<string[]>([]);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') return;\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n // Create VectorTileService, fetch style, add layers, and clean up on unmount\n useEffect(() => {\n if (!map || !isMapLoaded) return;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return;\n\n const mi = mapInstance as any;\n let cancelled = false;\n\n const service = new VectorTileService(sourceId, mapInstance as unknown as Map, {\n url: props.url,\n });\n serviceRef.current = service;\n\n // Fetch the full style and add all layers from it\n service\n .getStyle()\n .then(() => {\n if (cancelled) return;\n\n // Fetch the full style document to get all layers\n const styleUrl = `${props.url}/resources/styles/root.json`;\n return fetch(styleUrl);\n })\n .then(response => {\n if (cancelled || !response) return;\n if (!response.ok) throw new Error(`Failed to fetch style: ${response.status}`);\n return response.json();\n })\n .then(data => {\n if (cancelled || !data?.layers) return;\n\n const addedIds: string[] = [];\n for (const layer of data.layers) {\n if (!layer['source-layer']) continue;\n const layerId = `${props.id}-${layer.id}`;\n\n if (mi.getLayer?.(layerId)) continue;\n\n const layerConfig: any = {\n id: layerId,\n type: layer.type,\n source: sourceId,\n 'source-layer': layer['source-layer'],\n };\n if (layer.layout) layerConfig.layout = layer.layout;\n if (layer.paint) layerConfig.paint = layer.paint;\n if (layer.filter) layerConfig.filter = layer.filter;\n if (layer.minzoom !== undefined) layerConfig.minzoom = layer.minzoom;\n if (layer.maxzoom !== undefined) layerConfig.maxzoom = layer.maxzoom;\n\n // Apply visibility from props\n if (props.visible === false) {\n layerConfig.layout = { ...layerConfig.layout, visibility: 'none' };\n }\n\n if (props.beforeId) {\n mi.addLayer(layerConfig, props.beforeId);\n } else {\n mi.addLayer(layerConfig);\n }\n addedIds.push(layerId);\n }\n layerIdsRef.current = addedIds;\n })\n .catch(err => {\n console.warn('EsriVectorTileLayer: failed to load style layers', err);\n });\n\n return () => {\n cancelled = true;\n // Remove layers we added\n if (mi.getStyle?.()) {\n for (const id of layerIdsRef.current) {\n try {\n if (mi.getLayer?.(id)) mi.removeLayer(id);\n } catch {\n // layer may already be gone\n }\n }\n }\n layerIdsRef.current = [];\n service.remove();\n serviceRef.current = null;\n };\n }, [map, isMapLoaded, sourceId, props.url, props.id, props.beforeId, props.visible]);\n\n return null;\n}\n","import { useEffect, useMemo } from 'react';\nimport { VectorBasemapStyle } from '@/Services/VectorBasemapStyle';\nimport type { EsriVectorBasemapLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\n\n/**\n * React Map GL component for Esri Vector Basemap Style\n */\nexport function EsriVectorBasemapLayer(props: EsriVectorBasemapLayerProps) {\n const { current: map } = useReactMapGL();\n\n const service = useMemo(() => {\n return new VectorBasemapStyle(props.basemapEnum, { token: props.token });\n }, [props.basemapEnum, props.token]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n // Vector basemap styles replace the entire map style\n // This is typically handled differently in react-map-gl\n // For now, we'll just ensure cleanup\n\n // Cleanup function\n return () => {\n if (service) {\n service.remove();\n }\n };\n }, [map, service]);\n\n return null;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { FeatureService } from '@/Services/FeatureService';\nimport type { FeatureServiceOptions } from '@/types';\nimport type { EsriFeatureLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\n\n/**\n * React Map GL component for Esri Feature Service\n */\nexport function EsriFeatureLayer(props: EsriFeatureLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-feature-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n const serviceRef = useRef<FeatureService | null>(null);\n\n // Keep stable refs for object props to avoid effect re-runs on every render\n const paintRef = useRef(props.paint);\n paintRef.current = props.paint;\n const layoutRef = useRef(props.layout);\n layoutRef.current = props.layout;\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n // Create FeatureService, add layer, and clean up on unmount\n useEffect(() => {\n if (!map || !isMapLoaded) return;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return;\n\n const mi = mapInstance as any;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: Partial<FeatureServiceOptions> & { url: string } = { url: props.url };\n if (props.where !== undefined) options.where = props.where;\n if (props.outFields !== undefined) options.outFields = props.outFields;\n\n const service = new FeatureService(\n sourceId,\n mapInstance as unknown as import('@/types').Map,\n options\n );\n serviceRef.current = service;\n\n // Add GeoJSON layer\n if (\n typeof mi.getLayer === 'function' &&\n typeof mi.addLayer === 'function' &&\n !mi.getLayer(props.id)\n ) {\n const layerType = props.type || 'fill';\n const defaultPaint =\n layerType === 'circle'\n ? { 'circle-radius': 4, 'circle-color': '#888888' }\n : { 'fill-color': '#888888', 'fill-opacity': 0.5 };\n const layerConfig = {\n id: props.id,\n type: layerType,\n source: sourceId,\n paint: paintRef.current || defaultPaint,\n layout: {\n ...layoutRef.current,\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n mi.addLayer(layerConfig as any, props.beforeId as any);\n } else {\n mi.addLayer(layerConfig as any);\n }\n }\n\n return () => {\n if (mi.getStyle?.() && mi.getLayer?.(props.id)) {\n mi.removeLayer(props.id);\n }\n service.remove();\n serviceRef.current = null;\n };\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.where,\n props.outFields,\n props.id,\n props.beforeId,\n props.visible,\n props.type,\n ]);\n\n return null;\n}\n","import { useMap } from 'react-map-gl/mapbox';\nimport { useDynamicMapService } from '../../react/hooks/useDynamicMapService';\nimport { useTiledMapService } from '../../react/hooks/useTiledMapService';\nimport { useImageService } from '../../react/hooks/useImageService';\nimport { useVectorTileService } from '../../react/hooks/useVectorTileService';\nimport { useFeatureService } from '../../react/hooks/useFeatureService';\nimport type { Map } from '@/types';\n\n/**\n * Hook for using Esri services with Mapbox GL JS (via react-map-gl)\n */\nexport function useEsriMapboxLayer() {\n const { current: mapRef } = useMap();\n const map = mapRef?.getMap() as unknown as Map | null;\n\n return {\n map,\n useDynamicMapService: (options: Parameters<typeof useDynamicMapService>[0]) =>\n useDynamicMapService({ ...options, map }),\n useTiledMapService: (options: Parameters<typeof useTiledMapService>[0]) =>\n useTiledMapService({ ...options, map }),\n useImageService: (options: Parameters<typeof useImageService>[0]) =>\n useImageService({ ...options, map }),\n useVectorTileService: (options: Parameters<typeof useVectorTileService>[0]) =>\n useVectorTileService({ ...options, map }),\n useFeatureService: (options: Parameters<typeof useFeatureService>[0]) =>\n useFeatureService({ ...options, map }),\n };\n}\n","import { useMap } from 'react-map-gl/maplibre';\nimport { useDynamicMapService } from '../../react/hooks/useDynamicMapService';\nimport { useTiledMapService } from '../../react/hooks/useTiledMapService';\nimport { useImageService } from '../../react/hooks/useImageService';\nimport { useVectorTileService } from '../../react/hooks/useVectorTileService';\nimport { useFeatureService } from '../../react/hooks/useFeatureService';\nimport type { Map } from '@/types';\n\n/**\n * Hook for using Esri services with MapLibre GL JS (via react-map-gl/maplibre)\n */\nexport function useEsriMaplibreLayer() {\n const { current: mapRef } = useMap();\n const map = mapRef?.getMap() as unknown as Map | null;\n\n return {\n map,\n useDynamicMapService: (options: Parameters<typeof useDynamicMapService>[0]) =>\n useDynamicMapService({ ...options, map }),\n useTiledMapService: (options: Parameters<typeof useTiledMapService>[0]) =>\n useTiledMapService({ ...options, map }),\n useImageService: (options: Parameters<typeof useImageService>[0]) =>\n useImageService({ ...options, map }),\n useVectorTileService: (options: Parameters<typeof useVectorTileService>[0]) =>\n useVectorTileService({ ...options, map }),\n useFeatureService: (options: Parameters<typeof useFeatureService>[0]) =>\n useFeatureService({ ...options, map }),\n };\n}\n"],"names":["EMPTY_COLLECTION","current","withFallback","fn","normalizeCollection","collection","useReactMapGL","mapboxCollection","useMapMapbox","maplibreCollection","useMapMaplibre","EsriDynamicLayer","props","map","sourceId","id","isMapLoaded","setIsMapLoaded","useState","useEffect","mapInstance","getMap","mi","isStyleLoaded","handleLoad","once","off","service","useMemo","options","url","layers","undefined","layerDefs","format","dpi","transparent","DynamicMapService","getLayer","addLayer","remove","layerConfig","type","source","layout","visibility","visible","beforeId","getStyle","removeLayer","EsriTiledLayer","TiledMapService","EsriImageLayer","renderingRule","mosaicRule","ImageService","EsriVectorTileLayer","serviceRef","useRef","layerIdsRef","cancelled","VectorTileService","then","styleUrl","fetch","response","ok","Error","status","json","data","addedIds","layer","layerId","paint","filter","minzoom","maxzoom","push","catch","err","console","warn","EsriVectorBasemapLayer","VectorBasemapStyle","basemapEnum","token","EsriFeatureLayer","paintRef","layoutRef","where","outFields","FeatureService","layerType","defaultPaint","useEsriMapboxLayer","mapRef","useMap","useDynamicMapService","useTiledMapService","useImageService","useVectorTileService","useFeatureService","useEsriMaplibreLayer"],"mappings":";;;;;;;;;AAYA,MAAMA,gBAAgB,GAA4B;AAAEC,EAAAA,OAAO,EAAE;CAAM;AAEnE,SAASC,YAAYA,CAAIC,EAAW,EAAA;EAClC,IAAI;IACF,OAAOA,EAAE,EAAE;AACb,EAAA,CAAC,CAAC,MAAM;AACN;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACF;AAEA,SAASC,mBAAmBA,CAC1BC,UAAsF,EAAA;EAEtF,IAAI,CAACA,UAAU,EAAE;AACf,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,MAAMJ,OAAO,GAAKI,UAA6C,CAACJ,OAAO,IACrE,IAAgC;EAElC,OAAO;IACLA,OAAO;IACP,GAAGI;GACuB;AAC9B;SAEgBC,aAAaA,GAAA;EAC3B,MAAMC,gBAAgB,GAAGH,mBAAmB,CAACF,YAAY,CAACM,MAAY,CAAC,CAAC;EACxE,MAAMC,kBAAkB,GAAGL,mBAAmB,CAACF,YAAY,CAACQ,QAAc,CAAC,CAAC;EAE5E,IAAIH,gBAAgB,EAAEN,OAAO,EAAE;AAC7B,IAAA,OAAOM,gBAAgB;AACzB,EAAA;EAEA,IAAIE,kBAAkB,EAAER,OAAO,EAAE;AAC/B,IAAA,OAAOQ,kBAAkB;AAC3B,EAAA;AAEA,EAAA,OAAOF,gBAAgB,IAAIE,kBAAkB,IAAIT,gBAAgB;AACnE;;AC9CA;;AAEG;AACG,SAAUW,gBAAgBA,CAACC,KAA4B,EAAA;EAC3D,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;EACxC,MAAMQ,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAA,aAAA,EAAgBF,KAAK,CAACG,EAAE,CAAA,CAAE;EAC7D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B;AACA,IAAA,MAAMS,OAAO,GAAyC;MAAEC,GAAG,EAAElB,KAAK,CAACkB;KAAK;AACxE,IAAA,IAAIlB,KAAK,CAACmB,MAAM,KAAKC,SAAS,EAAEH,OAAO,CAACE,MAAM,GAAGnB,KAAK,CAACmB,MAAM;AAC7D,IAAA,IAAInB,KAAK,CAACqB,SAAS,KAAKD,SAAS,EAAEH,OAAO,CAACI,SAAS,GAAGrB,KAAK,CAACqB,SAAS;AACtE,IAAA,IAAIrB,KAAK,CAACsB,MAAM,KAAKF,SAAS,EAAEH,OAAO,CAACK,MAAM,GAAGtB,KAAK,CAACsB,MAAM;AAC7D,IAAA,IAAItB,KAAK,CAACuB,GAAG,KAAKH,SAAS,EAAEH,OAAO,CAACM,GAAG,GAAGvB,KAAK,CAACuB,GAAG;AACpD,IAAA,IAAIvB,KAAK,CAACwB,WAAW,KAAKJ,SAAS,EAAEH,OAAO,CAACO,WAAW,GAAGxB,KAAK,CAACwB,WAAW;AAE5E,IAAA,OAAO,IAAIC,iBAAiB,CAC1BvB,QAAQ,EACRM,WAA+C;AAAE;AACjDS,IAAAA,OAAO,CACR;AACH,EAAA,CAAC,EAAE,CACDhB,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRF,KAAK,CAACkB,GAAG,EACTlB,KAAK,CAACmB,MAAM,EACZnB,KAAK,CAACqB,SAAS,EACfrB,KAAK,CAACsB,MAAM,EACZtB,KAAK,CAACuB,GAAG,EACTvB,KAAK,CAACwB,WAAW,CAClB,CAAC;AAEFjB,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACkB,QAAQ,KAAK,UAAU,IAC1C,OAAOlB,WAAW,CAACmB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVZ,OAAO,CAACa,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAACpB,WAAW,CAACkB,QAAQ,CAAC1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACnC,MAAA,MAAM0B,WAAW,GAAG;QAClB1B,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZ2B,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE7B,QAAQ;AAChB8B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGjC,KAAK,CAACkC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIlC,KAAK,CAACmC,QAAQ,EAAE;QACjB3B,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,EAAE7B,KAAK,CAACmC,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJ3B,QAAAA,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKrB,WAAmB,CAAC4B,QAAQ,IAAI,IAAK5B,WAAmB,CAACkB,QAAQ,GAAG1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC6B,WAAW,CAACrC,KAAK,CAACG,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACa,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAAC3B,GAAG,EAAEc,OAAO,EAAEf,KAAK,CAACG,EAAE,EAAEH,KAAK,CAACmC,QAAQ,EAAEnC,KAAK,CAACkC,OAAO,EAAEhC,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;AC3GA;;AAEG;AACG,SAAUoC,cAAcA,CAACtC,KAA0B,EAAA;EACvD,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;EACxC,MAAMQ,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAA,WAAA,EAAcF,KAAK,CAACG,EAAE,CAAA,CAAE;EAC3D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B,IAAA,OAAO,IAAI+B,eAAe,CAACrC,QAAQ,EAAEM,WAA+C,EAAE;MACpFU,GAAG,EAAElB,KAAK,CAACkB;AACZ,KAAA,CAAC;AACJ,EAAA,CAAC,EAAE,CAACjB,GAAG,EAAEG,WAAW,EAAEF,QAAQ,EAAEF,KAAK,CAACkB,GAAG,CAAC,CAAC;AAE3CX,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACkB,QAAQ,KAAK,UAAU,IAC1C,OAAOlB,WAAW,CAACmB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVZ,OAAO,CAACa,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAACpB,WAAW,CAACkB,QAAQ,CAAC1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACnC,MAAA,MAAM0B,WAAW,GAAG;QAClB1B,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZ2B,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE7B,QAAQ;AAChB8B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGjC,KAAK,CAACkC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIlC,KAAK,CAACmC,QAAQ,EAAE;QACjB3B,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,EAAE7B,KAAK,CAACmC,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJ3B,QAAAA,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKrB,WAAmB,CAAC4B,QAAQ,IAAI,IAAK5B,WAAmB,CAACkB,QAAQ,GAAG1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC6B,WAAW,CAACrC,KAAK,CAACG,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACa,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAAC3B,GAAG,EAAEc,OAAO,EAAEf,KAAK,CAACG,EAAE,EAAEH,KAAK,CAACmC,QAAQ,EAAEnC,KAAK,CAACkC,OAAO,EAAEhC,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;ACrFA;;AAEG;AACG,SAAUsC,cAAcA,CAACxC,KAA0B,EAAA;EACvD,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;EACxC,MAAMQ,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAA,WAAA,EAAcF,KAAK,CAACG,EAAE,CAAA,CAAE;EAC3D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B;AACA,IAAA,MAAMS,OAAO,GAAmD;MAAEC,GAAG,EAAElB,KAAK,CAACkB;KAAK;AAClF,IAAA,IAAIlB,KAAK,CAACyC,aAAa,KAAKrB,SAAS,EAAEH,OAAO,CAACwB,aAAa,GAAGzC,KAAK,CAACyC,aAAa;AAClF,IAAA,IAAIzC,KAAK,CAAC0C,UAAU,KAAKtB,SAAS,EAAEH,OAAO,CAACyB,UAAU,GAAG1C,KAAK,CAAC0C,UAAU;AACzE,IAAA,IAAI1C,KAAK,CAACsB,MAAM,KAAKF,SAAS,EAAEH,OAAO,CAACK,MAAM,GAAGtB,KAAK,CAACsB,MAAuC;IAE9F,OAAO,IAAIqB,YAAY,CAACzC,QAAQ,EAAEM,WAA+C,EAAES,OAAO,CAAC;EAC7F,CAAC,EAAE,CAAChB,GAAG,EAAEG,WAAW,EAAEF,QAAQ,EAAEF,KAAK,CAACkB,GAAG,EAAElB,KAAK,CAACyC,aAAa,EAAEzC,KAAK,CAAC0C,UAAU,EAAE1C,KAAK,CAACsB,MAAM,CAAC,CAAC;AAEhGf,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACkB,QAAQ,KAAK,UAAU,IAC1C,OAAOlB,WAAW,CAACmB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVZ,OAAO,CAACa,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAACpB,WAAW,CAACkB,QAAQ,CAAC1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACnC,MAAA,MAAM0B,WAAW,GAAG;QAClB1B,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZ2B,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE7B,QAAQ;AAChB8B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGjC,KAAK,CAACkC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIlC,KAAK,CAACmC,QAAQ,EAAE;QACjB3B,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,EAAE7B,KAAK,CAACmC,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJ3B,QAAAA,WAAmB,CAACmB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKrB,WAAmB,CAAC4B,QAAQ,IAAI,IAAK5B,WAAmB,CAACkB,QAAQ,GAAG1B,KAAK,CAACG,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC6B,WAAW,CAACrC,KAAK,CAACG,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACa,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAAC3B,GAAG,EAAEc,OAAO,EAAEf,KAAK,CAACG,EAAE,EAAEH,KAAK,CAACmC,QAAQ,EAAEnC,KAAK,CAACkC,OAAO,EAAEhC,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;AC1FA;;AAEG;AACG,SAAU0C,mBAAmBA,CAAC5C,KAA+B,EAAA;EACjE,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;EACxC,MAAMQ,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAA,iBAAA,EAAoBF,KAAK,CAACG,EAAE,CAAA,CAAE;EACjE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AACrD,EAAA,MAAMuC,UAAU,GAAGC,MAAM,CAA2B,IAAI,CAAC;AACzD,EAAA,MAAMC,WAAW,GAAGD,MAAM,CAAW,EAAE,CAAC;AAExC;AACAvC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AAEnD,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET;AACAM,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACG,WAAW,EAAE;AAE1B,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,IAAI,CAACD,WAAW,EAAE;IAElB,MAAME,EAAE,GAAGF,WAAkB;IAC7B,IAAIwC,SAAS,GAAG,KAAK;IAErB,MAAMjC,OAAO,GAAG,IAAIkC,iBAAiB,CAAC/C,QAAQ,EAAEM,WAA6B,EAAE;MAC7EU,GAAG,EAAElB,KAAK,CAACkB;AACZ,KAAA,CAAC;IACF2B,UAAU,CAACxD,OAAO,GAAG0B,OAAO;AAE5B;AACAA,IAAAA,OAAO,CACJqB,QAAQ,EAAE,CACVc,IAAI,CAAC,MAAK;AACT,MAAA,IAAIF,SAAS,EAAE;AAEf;AACA,MAAA,MAAMG,QAAQ,GAAG,CAAA,EAAGnD,KAAK,CAACkB,GAAG,CAAA,2BAAA,CAA6B;MAC1D,OAAOkC,KAAK,CAACD,QAAQ,CAAC;AACxB,IAAA,CAAC,CAAC,CACDD,IAAI,CAACG,QAAQ,IAAG;AACf,MAAA,IAAIL,SAAS,IAAI,CAACK,QAAQ,EAAE;AAC5B,MAAA,IAAI,CAACA,QAAQ,CAACC,EAAE,EAAE,MAAM,IAAIC,KAAK,CAAC,CAAA,uBAAA,EAA0BF,QAAQ,CAACG,MAAM,EAAE,CAAC;AAC9E,MAAA,OAAOH,QAAQ,CAACI,IAAI,EAAE;AACxB,IAAA,CAAC,CAAC,CACDP,IAAI,CAACQ,IAAI,IAAG;AACX,MAAA,IAAIV,SAAS,IAAI,CAACU,IAAI,EAAEvC,MAAM,EAAE;MAEhC,MAAMwC,QAAQ,GAAa,EAAE;AAC7B,MAAA,KAAK,MAAMC,KAAK,IAAIF,IAAI,CAACvC,MAAM,EAAE;AAC/B,QAAA,IAAI,CAACyC,KAAK,CAAC,cAAc,CAAC,EAAE;QAC5B,MAAMC,OAAO,GAAG,CAAA,EAAG7D,KAAK,CAACG,EAAE,CAAA,CAAA,EAAIyD,KAAK,CAACzD,EAAE,CAAA,CAAE;AAEzC,QAAA,IAAIO,EAAE,CAACgB,QAAQ,GAAGmC,OAAO,CAAC,EAAE;AAE5B,QAAA,MAAMhC,WAAW,GAAQ;AACvB1B,UAAAA,EAAE,EAAE0D,OAAO;UACX/B,IAAI,EAAE8B,KAAK,CAAC9B,IAAI;AAChBC,UAAAA,MAAM,EAAE7B,QAAQ;UAChB,cAAc,EAAE0D,KAAK,CAAC,cAAc;SACrC;QACD,IAAIA,KAAK,CAAC5B,MAAM,EAAEH,WAAW,CAACG,MAAM,GAAG4B,KAAK,CAAC5B,MAAM;QACnD,IAAI4B,KAAK,CAACE,KAAK,EAAEjC,WAAW,CAACiC,KAAK,GAAGF,KAAK,CAACE,KAAK;QAChD,IAAIF,KAAK,CAACG,MAAM,EAAElC,WAAW,CAACkC,MAAM,GAAGH,KAAK,CAACG,MAAM;AACnD,QAAA,IAAIH,KAAK,CAACI,OAAO,KAAK5C,SAAS,EAAES,WAAW,CAACmC,OAAO,GAAGJ,KAAK,CAACI,OAAO;AACpE,QAAA,IAAIJ,KAAK,CAACK,OAAO,KAAK7C,SAAS,EAAES,WAAW,CAACoC,OAAO,GAAGL,KAAK,CAACK,OAAO;AAEpE;AACA,QAAA,IAAIjE,KAAK,CAACkC,OAAO,KAAK,KAAK,EAAE;UAC3BL,WAAW,CAACG,MAAM,GAAG;YAAE,GAAGH,WAAW,CAACG,MAAM;AAAEC,YAAAA,UAAU,EAAE;WAAQ;AACpE,QAAA;QAEA,IAAIjC,KAAK,CAACmC,QAAQ,EAAE;UAClBzB,EAAE,CAACiB,QAAQ,CAACE,WAAW,EAAE7B,KAAK,CAACmC,QAAQ,CAAC;AAC1C,QAAA,CAAC,MAAM;AACLzB,UAAAA,EAAE,CAACiB,QAAQ,CAACE,WAAW,CAAC;AAC1B,QAAA;AACA8B,QAAAA,QAAQ,CAACO,IAAI,CAACL,OAAO,CAAC;AACxB,MAAA;MACAd,WAAW,CAAC1D,OAAO,GAAGsE,QAAQ;AAChC,IAAA,CAAC,CAAC,CACDQ,KAAK,CAACC,GAAG,IAAG;AACXC,MAAAA,OAAO,CAACC,IAAI,CAAC,kDAAkD,EAAEF,GAAG,CAAC;AACvE,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,MAAK;AACVpB,MAAAA,SAAS,GAAG,IAAI;AAChB;AACA,MAAA,IAAItC,EAAE,CAAC0B,QAAQ,IAAI,EAAE;AACnB,QAAA,KAAK,MAAMjC,EAAE,IAAI4C,WAAW,CAAC1D,OAAO,EAAE;UACpC,IAAI;AACF,YAAA,IAAIqB,EAAE,CAACgB,QAAQ,GAAGvB,EAAE,CAAC,EAAEO,EAAE,CAAC2B,WAAW,CAAClC,EAAE,CAAC;AAC3C,UAAA,CAAC,CAAC,MAAM;AACN;AAAA,UAAA;AAEJ,QAAA;AACF,MAAA;MACA4C,WAAW,CAAC1D,OAAO,GAAG,EAAE;MACxB0B,OAAO,CAACa,MAAM,EAAE;MAChBiB,UAAU,CAACxD,OAAO,GAAG,IAAI;IAC3B,CAAC;EACH,CAAC,EAAE,CAACY,GAAG,EAAEG,WAAW,EAAEF,QAAQ,EAAEF,KAAK,CAACkB,GAAG,EAAElB,KAAK,CAACG,EAAE,EAAEH,KAAK,CAACmC,QAAQ,EAAEnC,KAAK,CAACkC,OAAO,CAAC,CAAC;AAEpF,EAAA,OAAO,IAAI;AACb;;ACzHA;;AAEG;AACG,SAAUqC,sBAAsBA,CAACvE,KAAkC,EAAA;EACvE,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;AAExC,EAAA,MAAMqB,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,OAAO,IAAIwD,kBAAkB,CAACxE,KAAK,CAACyE,WAAW,EAAE;MAAEC,KAAK,EAAE1E,KAAK,CAAC0E;AAAK,KAAE,CAAC;EAC1E,CAAC,EAAE,CAAC1E,KAAK,CAACyE,WAAW,EAAEzE,KAAK,CAAC0E,KAAK,CAAC,CAAC;AAEpCnE,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB;AACA;AACA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAIA,OAAO,EAAE;QACXA,OAAO,CAACa,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;AACH,EAAA,CAAC,EAAE,CAAC3B,GAAG,EAAEc,OAAO,CAAC,CAAC;AAElB,EAAA,OAAO,IAAI;AACb;;ACzBA;;AAEG;AACG,SAAU4D,gBAAgBA,CAAC3E,KAA4B,EAAA;EAC3D,MAAM;AAAEX,IAAAA,OAAO,EAAEY;GAAK,GAAGP,aAAa,EAAE;EACxC,MAAMQ,QAAQ,GAAGF,KAAK,CAACE,QAAQ,IAAI,CAAA,aAAA,EAAgBF,KAAK,CAACG,EAAE,CAAA,CAAE;EAC7D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AACrD,EAAA,MAAMuC,UAAU,GAAGC,MAAM,CAAwB,IAAI,CAAC;AAEtD;AACA,EAAA,MAAM8B,QAAQ,GAAG9B,MAAM,CAAC9C,KAAK,CAAC8D,KAAK,CAAC;AACpCc,EAAAA,QAAQ,CAACvF,OAAO,GAAGW,KAAK,CAAC8D,KAAK;AAC9B,EAAA,MAAMe,SAAS,GAAG/B,MAAM,CAAC9C,KAAK,CAACgC,MAAM,CAAC;AACtC6C,EAAAA,SAAS,CAACxF,OAAO,GAAGW,KAAK,CAACgC,MAAM;AAEhC;AACAzB,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET;AACAM,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACG,WAAW,EAAE;AAE1B,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,IAAI,CAACD,WAAW,EAAE;IAElB,MAAME,EAAE,GAAGF,WAAkB;AAE7B;AACA,IAAA,MAAMS,OAAO,GAAqD;MAAEC,GAAG,EAAElB,KAAK,CAACkB;KAAK;AACpF,IAAA,IAAIlB,KAAK,CAAC8E,KAAK,KAAK1D,SAAS,EAAEH,OAAO,CAAC6D,KAAK,GAAG9E,KAAK,CAAC8E,KAAK;AAC1D,IAAA,IAAI9E,KAAK,CAAC+E,SAAS,KAAK3D,SAAS,EAAEH,OAAO,CAAC8D,SAAS,GAAG/E,KAAK,CAAC+E,SAAS;IAEtE,MAAMhE,OAAO,GAAG,IAAIiE,cAAc,CAChC9E,QAAQ,EACRM,WAA+C,EAC/CS,OAAO,CACR;IACD4B,UAAU,CAACxD,OAAO,GAAG0B,OAAO;AAE5B;IACA,IACE,OAAOL,EAAE,CAACgB,QAAQ,KAAK,UAAU,IACjC,OAAOhB,EAAE,CAACiB,QAAQ,KAAK,UAAU,IACjC,CAACjB,EAAE,CAACgB,QAAQ,CAAC1B,KAAK,CAACG,EAAE,CAAC,EACtB;AACA,MAAA,MAAM8E,SAAS,GAAGjF,KAAK,CAAC8B,IAAI,IAAI,MAAM;AACtC,MAAA,MAAMoD,YAAY,GAChBD,SAAS,KAAK,QAAQ,GAClB;AAAE,QAAA,eAAe,EAAE,CAAC;AAAE,QAAA,cAAc,EAAE;AAAS,OAAE,GACjD;AAAE,QAAA,YAAY,EAAE,SAAS;AAAE,QAAA,cAAc,EAAE;OAAK;AACtD,MAAA,MAAMpD,WAAW,GAAG;QAClB1B,EAAE,EAAEH,KAAK,CAACG,EAAE;AACZ2B,QAAAA,IAAI,EAAEmD,SAAS;AACflD,QAAAA,MAAM,EAAE7B,QAAQ;AAChB4D,QAAAA,KAAK,EAAEc,QAAQ,CAACvF,OAAO,IAAI6F,YAAY;AACvClD,QAAAA,MAAM,EAAE;UACN,GAAG6C,SAAS,CAACxF,OAAO;UACpB4C,UAAU,EAAGjC,KAAK,CAACkC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIlC,KAAK,CAACmC,QAAQ,EAAE;QAClBzB,EAAE,CAACiB,QAAQ,CAACE,WAAkB,EAAE7B,KAAK,CAACmC,QAAe,CAAC;AACxD,MAAA,CAAC,MAAM;AACLzB,QAAAA,EAAE,CAACiB,QAAQ,CAACE,WAAkB,CAAC;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,MAAK;AACV,MAAA,IAAInB,EAAE,CAAC0B,QAAQ,IAAI,IAAI1B,EAAE,CAACgB,QAAQ,GAAG1B,KAAK,CAACG,EAAE,CAAC,EAAE;AAC9CO,QAAAA,EAAE,CAAC2B,WAAW,CAACrC,KAAK,CAACG,EAAE,CAAC;AAC1B,MAAA;MACAY,OAAO,CAACa,MAAM,EAAE;MAChBiB,UAAU,CAACxD,OAAO,GAAG,IAAI;IAC3B,CAAC;AACH,EAAA,CAAC,EAAE,CACDY,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRF,KAAK,CAACkB,GAAG,EACTlB,KAAK,CAAC8E,KAAK,EACX9E,KAAK,CAAC+E,SAAS,EACf/E,KAAK,CAACG,EAAE,EACRH,KAAK,CAACmC,QAAQ,EACdnC,KAAK,CAACkC,OAAO,EACblC,KAAK,CAAC8B,IAAI,CACX,CAAC;AAEF,EAAA,OAAO,IAAI;AACb;;AC3GA;;AAEG;SACaqD,kBAAkBA,GAAA;EAChC,MAAM;AAAE9F,IAAAA,OAAO,EAAE+F;GAAQ,GAAGC,MAAM,EAAE;AACpC,EAAA,MAAMpF,GAAG,GAAGmF,MAAM,EAAE3E,MAAM,EAA2B;EAErD,OAAO;IACLR,GAAG;AACHqF,IAAAA,oBAAoB,EAAGrE,OAAmD,IACxEqE,oBAAoB,CAAC;AAAE,MAAA,GAAGrE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AAC3CsF,IAAAA,kBAAkB,EAAGtE,OAAiD,IACpEsE,kBAAkB,CAAC;AAAE,MAAA,GAAGtE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AACzCuF,IAAAA,eAAe,EAAGvE,OAA8C,IAC9DuE,eAAe,CAAC;AAAE,MAAA,GAAGvE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AACtCwF,IAAAA,oBAAoB,EAAGxE,OAAmD,IACxEwE,oBAAoB,CAAC;AAAE,MAAA,GAAGxE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AAC3CyF,IAAAA,iBAAiB,EAAGzE,OAAgD,IAClEyE,iBAAiB,CAAC;AAAE,MAAA,GAAGzE,OAAO;AAAEhB,MAAAA;KAAK;GACxC;AACH;;ACpBA;;AAEG;SACa0F,oBAAoBA,GAAA;EAClC,MAAM;AAAEtG,IAAAA,OAAO,EAAE+F;GAAQ,GAAGC,QAAM,EAAE;AACpC,EAAA,MAAMpF,GAAG,GAAGmF,MAAM,EAAE3E,MAAM,EAA2B;EAErD,OAAO;IACLR,GAAG;AACHqF,IAAAA,oBAAoB,EAAGrE,OAAmD,IACxEqE,oBAAoB,CAAC;AAAE,MAAA,GAAGrE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AAC3CsF,IAAAA,kBAAkB,EAAGtE,OAAiD,IACpEsE,kBAAkB,CAAC;AAAE,MAAA,GAAGtE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AACzCuF,IAAAA,eAAe,EAAGvE,OAA8C,IAC9DuE,eAAe,CAAC;AAAE,MAAA,GAAGvE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AACtCwF,IAAAA,oBAAoB,EAAGxE,OAAmD,IACxEwE,oBAAoB,CAAC;AAAE,MAAA,GAAGxE,OAAO;AAAEhB,MAAAA;KAAK,CAAC;AAC3CyF,IAAAA,iBAAiB,EAAGzE,OAAgD,IAClEyE,iBAAiB,CAAC;AAAE,MAAA,GAAGzE,OAAO;AAAEhB,MAAAA;KAAK;GACxC;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"react-map-gl.js","sources":["../src/react-map-gl/utils/useReactMapGL.ts","../src/react-map-gl/utils/buildServiceOptions.ts","../src/react-map-gl/components/EsriDynamicLayer.tsx","../src/react-map-gl/components/EsriTiledLayer.tsx","../src/react-map-gl/components/EsriImageLayer.tsx","../src/react-map-gl/components/EsriVectorTileLayer.tsx","../src/react-map-gl/components/EsriVectorBasemapLayer.tsx","../src/react-map-gl/components/EsriFeatureLayer.tsx","../src/react-map-gl/hooks/useEsriMapboxLayer.ts","../src/react-map-gl/hooks/useEsriMaplibreLayer.ts"],"sourcesContent":["import { useMap as useMapMapbox } from 'react-map-gl/mapbox';\nimport { useMap as useMapMaplibre } from 'react-map-gl/maplibre';\nimport type { MapRef as MapboxMapRef } from 'react-map-gl/mapbox';\nimport type { MapRef as MaplibreMapRef } from 'react-map-gl/maplibre';\n\nexport type ReactMapGLMapRef = MapboxMapRef | MaplibreMapRef;\n\nexport type ReactMapGLMapCollection = {\n current: ReactMapGLMapRef | null;\n [id: string]: ReactMapGLMapRef | null | undefined;\n};\n\nconst EMPTY_COLLECTION: ReactMapGLMapCollection = { current: null };\n\nfunction withFallback<T>(fn: () => T): T | null {\n try {\n return fn();\n } catch {\n // The hook will throw if the corresponding provider is not present.\n return null;\n }\n}\n\nfunction normalizeCollection(\n collection: ReturnType<typeof useMapMapbox> | ReturnType<typeof useMapMaplibre> | null\n): ReactMapGLMapCollection | null {\n if (!collection) {\n return null;\n }\n\n const current = ((collection as { current?: ReactMapGLMapRef }).current ??\n null) as ReactMapGLMapRef | null;\n\n return {\n current,\n ...collection,\n } as ReactMapGLMapCollection;\n}\n\nexport function useReactMapGL(): ReactMapGLMapCollection {\n const mapboxCollection = normalizeCollection(withFallback(useMapMapbox));\n const maplibreCollection = normalizeCollection(withFallback(useMapMaplibre));\n\n if (mapboxCollection?.current) {\n return mapboxCollection;\n }\n\n if (maplibreCollection?.current) {\n return maplibreCollection;\n }\n\n return mapboxCollection ?? maplibreCollection ?? EMPTY_COLLECTION;\n}\n","import type { EsriAuthProps } from '../types';\n\n/**\n * Copy any defined auth/passthrough props from a layer component's props\n * onto a service-options object. Undefined values are skipped so they\n * do not override service defaults.\n */\nexport function applyAuthOptions<T extends object>(options: T, props: EsriAuthProps): T {\n const target = options as Record<string, unknown>;\n if (props.token !== undefined) target.token = props.token;\n if (props.apiKey !== undefined) target.apiKey = props.apiKey;\n if (props.proxy !== undefined) target.proxy = props.proxy;\n if (props.getAttributionFromService !== undefined)\n target.getAttributionFromService = props.getAttributionFromService;\n if (props.requestParams !== undefined) target.requestParams = props.requestParams;\n if (props.fetchOptions !== undefined) target.fetchOptions = props.fetchOptions;\n return options;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { DynamicMapService } from '@/Services/DynamicMapService';\nimport type { EsriServiceOptions } from '@/types';\nimport type { EsriDynamicLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport { applyAuthOptions } from '../utils/buildServiceOptions';\n\n/**\n * React Map GL component for Esri Dynamic Map Service\n */\nexport function EsriDynamicLayer(props: EsriDynamicLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-dynamic-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: EsriServiceOptions & { url: string } = { url: props.url };\n if (props.layers !== undefined) options.layers = props.layers;\n if (props.layerDefs !== undefined) options.layerDefs = props.layerDefs;\n if (props.format !== undefined) options.format = props.format;\n if (props.dpi !== undefined) options.dpi = props.dpi;\n if (props.transparent !== undefined) options.transparent = props.transparent;\n applyAuthOptions(options, props);\n\n return new DynamicMapService(\n sourceId,\n mapInstance as unknown as import('@/types').Map, // Type assertion for map compatibility\n options\n );\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.layers,\n props.layerDefs,\n props.format,\n props.dpi,\n props.transparent,\n props.token,\n props.apiKey,\n props.proxy,\n props.getAttributionFromService,\n props.requestParams,\n props.fetchOptions,\n ]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { TiledMapService } from '@/Services/TiledMapService';\nimport type { EsriServiceOptions } from '@/types';\nimport type { EsriTiledLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport { applyAuthOptions } from '../utils/buildServiceOptions';\n\n/**\n * React Map GL component for Esri Tiled Map Service\n */\nexport function EsriTiledLayer(props: EsriTiledLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-tiled-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n const options: EsriServiceOptions & { url: string } = { url: props.url };\n applyAuthOptions(options, props);\n\n return new TiledMapService(sourceId, mapInstance as unknown as import('@/types').Map, options);\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.token,\n props.apiKey,\n props.proxy,\n props.getAttributionFromService,\n props.requestParams,\n props.fetchOptions,\n ]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport { ImageService } from '@/Services/ImageService';\nimport type { ImageServiceOptions } from '@/types';\nimport type { EsriImageLayerProps } from '../types';\nimport { applyAuthOptions } from '../utils/buildServiceOptions';\n\n/**\n * React Map GL component for Esri Image Service\n */\nexport function EsriImageLayer(props: EsriImageLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-image-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n const service = useMemo(() => {\n if (!map || !isMapLoaded) return null;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return null;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: Partial<ImageServiceOptions> & { url: string } = { url: props.url };\n if (props.renderingRule !== undefined) options.renderingRule = props.renderingRule;\n if (props.mosaicRule !== undefined) options.mosaicRule = props.mosaicRule;\n if (props.format !== undefined) options.format = props.format as ImageServiceOptions['format'];\n applyAuthOptions(options, props);\n\n return new ImageService(sourceId, mapInstance as unknown as import('@/types').Map, options);\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.renderingRule,\n props.mosaicRule,\n props.format,\n props.token,\n props.apiKey,\n props.proxy,\n props.getAttributionFromService,\n props.requestParams,\n props.fetchOptions,\n ]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n const mapInstance = map.getMap?.() as any;\n if (\n !mapInstance ||\n typeof mapInstance.getLayer !== 'function' ||\n typeof mapInstance.addLayer !== 'function'\n ) {\n return () => {\n service.remove();\n };\n }\n\n // Add raster layer\n if (!mapInstance.getLayer(props.id)) {\n const layerConfig = {\n id: props.id,\n type: 'raster' as const,\n source: sourceId,\n layout: {\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n (mapInstance as any).addLayer(layerConfig as any, props.beforeId as any);\n } else {\n (mapInstance as any).addLayer(layerConfig as any);\n }\n }\n\n // Cleanup function\n return () => {\n if ((mapInstance as any).getStyle?.() && (mapInstance as any).getLayer?.(props.id)) {\n (mapInstance as any).removeLayer(props.id);\n }\n if (service) {\n service.remove();\n }\n };\n }, [map, service, props.id, props.beforeId, props.visible, sourceId]);\n\n return null;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { VectorTileService } from '@/Services/VectorTileService';\nimport type { EsriVectorTileLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport type { Map, VectorTileServiceOptions } from '@/types';\nimport { applyAuthOptions } from '../utils/buildServiceOptions';\n\n/**\n * React Map GL component for Esri Vector Tile Service\n */\nexport function EsriVectorTileLayer(props: EsriVectorTileLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-vector-tile-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n const serviceRef = useRef<VectorTileService | null>(null);\n const layerIdsRef = useRef<string[]>([]);\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') return;\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n // Create VectorTileService, fetch style, add layers, and clean up on unmount\n useEffect(() => {\n if (!map || !isMapLoaded) return;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return;\n\n const mi = mapInstance as any;\n let cancelled = false;\n\n const options: VectorTileServiceOptions & { url: string } = { url: props.url };\n applyAuthOptions(options, props);\n\n const service = new VectorTileService(sourceId, mapInstance as unknown as Map, options);\n serviceRef.current = service;\n\n // Fetch the full style and add all layers from it\n service\n .getStyle()\n .then(() => {\n if (cancelled) return;\n\n // Fetch the full style document to get all layers\n let styleUrl = `${props.url}/resources/styles/root.json`;\n if (props.token) {\n styleUrl += `?token=${encodeURIComponent(props.token)}`;\n }\n const fetchInit: RequestInit = { ...(props.fetchOptions || {}) };\n if (props.apiKey) {\n fetchInit.headers = {\n ...(fetchInit.headers || {}),\n 'X-Esri-Authorization': `Bearer ${props.apiKey}`,\n };\n }\n return fetch(styleUrl, fetchInit);\n })\n .then(response => {\n if (cancelled || !response) return;\n if (!response.ok) throw new Error(`Failed to fetch style: ${response.status}`);\n return response.json();\n })\n .then(data => {\n if (cancelled || !data?.layers) return;\n\n const addedIds: string[] = [];\n for (const layer of data.layers) {\n if (!layer['source-layer']) continue;\n const layerId = `${props.id}-${layer.id}`;\n\n if (mi.getLayer?.(layerId)) continue;\n\n const layerConfig: any = {\n id: layerId,\n type: layer.type,\n source: sourceId,\n 'source-layer': layer['source-layer'],\n };\n if (layer.layout) layerConfig.layout = layer.layout;\n if (layer.paint) layerConfig.paint = layer.paint;\n if (layer.filter) layerConfig.filter = layer.filter;\n if (layer.minzoom !== undefined) layerConfig.minzoom = layer.minzoom;\n if (layer.maxzoom !== undefined) layerConfig.maxzoom = layer.maxzoom;\n\n // Apply visibility from props\n if (props.visible === false) {\n layerConfig.layout = { ...layerConfig.layout, visibility: 'none' };\n }\n\n if (props.beforeId) {\n mi.addLayer(layerConfig, props.beforeId);\n } else {\n mi.addLayer(layerConfig);\n }\n addedIds.push(layerId);\n }\n layerIdsRef.current = addedIds;\n })\n .catch(err => {\n console.warn('EsriVectorTileLayer: failed to load style layers', err);\n });\n\n return () => {\n cancelled = true;\n // Remove layers we added\n if (mi.getStyle?.()) {\n for (const id of layerIdsRef.current) {\n try {\n if (mi.getLayer?.(id)) mi.removeLayer(id);\n } catch {\n // layer may already be gone\n }\n }\n }\n layerIdsRef.current = [];\n service.remove();\n serviceRef.current = null;\n };\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.id,\n props.beforeId,\n props.visible,\n props.token,\n props.apiKey,\n props.proxy,\n props.getAttributionFromService,\n props.requestParams,\n props.fetchOptions,\n ]);\n\n return null;\n}\n","import { useEffect, useMemo } from 'react';\nimport { VectorBasemapStyle } from '@/Services/VectorBasemapStyle';\nimport type { EsriVectorBasemapLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\n\n/**\n * React Map GL component for Esri Vector Basemap Style\n */\nexport function EsriVectorBasemapLayer(props: EsriVectorBasemapLayerProps) {\n const { current: map } = useReactMapGL();\n\n const service = useMemo(() => {\n return new VectorBasemapStyle(props.basemapEnum, { token: props.token });\n }, [props.basemapEnum, props.token]);\n\n useEffect(() => {\n if (!map || !service) return;\n\n // Vector basemap styles replace the entire map style\n // This is typically handled differently in react-map-gl\n // For now, we'll just ensure cleanup\n\n // Cleanup function\n return () => {\n if (service) {\n service.remove();\n }\n };\n }, [map, service]);\n\n return null;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { FeatureService } from '@/Services/FeatureService';\nimport type { FeatureServiceOptions } from '@/types';\nimport type { EsriFeatureLayerProps } from '../types';\nimport { useReactMapGL } from '../utils/useReactMapGL';\nimport { applyAuthOptions } from '../utils/buildServiceOptions';\n\n/**\n * React Map GL component for Esri Feature Service\n */\nexport function EsriFeatureLayer(props: EsriFeatureLayerProps) {\n const { current: map } = useReactMapGL();\n const sourceId = props.sourceId || `esri-feature-${props.id}`;\n const [isMapLoaded, setIsMapLoaded] = useState(false);\n const serviceRef = useRef<FeatureService | null>(null);\n\n // Keep stable refs for object props to avoid effect re-runs on every render\n const paintRef = useRef(props.paint);\n paintRef.current = props.paint;\n const layoutRef = useRef(props.layout);\n layoutRef.current = props.layout;\n\n // Wait for map to be loaded before creating service\n useEffect(() => {\n if (!map) return;\n\n const mapInstance = map.getMap?.();\n const mi = mapInstance as any;\n if (!mi || typeof mi.isStyleLoaded !== 'function') {\n return;\n }\n\n if (mi.isStyleLoaded()) {\n setIsMapLoaded(true);\n return;\n }\n\n const handleLoad = () => setIsMapLoaded(true);\n mi?.once?.('load', handleLoad);\n\n return () => {\n mi?.off?.('load', handleLoad);\n };\n }, [map]);\n\n // Create FeatureService, add layer, and clean up on unmount\n useEffect(() => {\n if (!map || !isMapLoaded) return;\n\n const mapInstance = map.getMap?.();\n if (!mapInstance) return;\n\n const mi = mapInstance as any;\n\n // Only include defined properties to avoid overriding defaults with undefined\n const options: Partial<FeatureServiceOptions> & { url: string } = { url: props.url };\n if (props.where !== undefined) options.where = props.where;\n if (props.outFields !== undefined) options.outFields = props.outFields;\n applyAuthOptions(options, props);\n\n const service = new FeatureService(\n sourceId,\n mapInstance as unknown as import('@/types').Map,\n options\n );\n serviceRef.current = service;\n\n // Add GeoJSON layer\n if (\n typeof mi.getLayer === 'function' &&\n typeof mi.addLayer === 'function' &&\n !mi.getLayer(props.id)\n ) {\n const layerType = props.type || 'fill';\n const defaultPaint =\n layerType === 'circle'\n ? { 'circle-radius': 4, 'circle-color': '#888888' }\n : { 'fill-color': '#888888', 'fill-opacity': 0.5 };\n const layerConfig = {\n id: props.id,\n type: layerType,\n source: sourceId,\n paint: paintRef.current || defaultPaint,\n layout: {\n ...layoutRef.current,\n visibility: (props.visible !== false ? 'visible' : 'none') as 'visible' | 'none',\n },\n };\n\n if (props.beforeId) {\n mi.addLayer(layerConfig as any, props.beforeId as any);\n } else {\n mi.addLayer(layerConfig as any);\n }\n }\n\n return () => {\n if (mi.getStyle?.() && mi.getLayer?.(props.id)) {\n mi.removeLayer(props.id);\n }\n service.remove();\n serviceRef.current = null;\n };\n }, [\n map,\n isMapLoaded,\n sourceId,\n props.url,\n props.where,\n props.outFields,\n props.id,\n props.beforeId,\n props.visible,\n props.type,\n props.token,\n props.apiKey,\n props.proxy,\n props.getAttributionFromService,\n props.requestParams,\n props.fetchOptions,\n ]);\n\n return null;\n}\n","import { useMap } from 'react-map-gl/mapbox';\nimport { useDynamicMapService } from '../../react/hooks/useDynamicMapService';\nimport { useTiledMapService } from '../../react/hooks/useTiledMapService';\nimport { useImageService } from '../../react/hooks/useImageService';\nimport { useVectorTileService } from '../../react/hooks/useVectorTileService';\nimport { useFeatureService } from '../../react/hooks/useFeatureService';\nimport type { Map } from '@/types';\n\n/**\n * Hook for using Esri services with Mapbox GL JS (via react-map-gl)\n */\nexport function useEsriMapboxLayer() {\n const { current: mapRef } = useMap();\n const map = mapRef?.getMap() as unknown as Map | null;\n\n return {\n map,\n useDynamicMapService: (options: Parameters<typeof useDynamicMapService>[0]) =>\n useDynamicMapService({ ...options, map }),\n useTiledMapService: (options: Parameters<typeof useTiledMapService>[0]) =>\n useTiledMapService({ ...options, map }),\n useImageService: (options: Parameters<typeof useImageService>[0]) =>\n useImageService({ ...options, map }),\n useVectorTileService: (options: Parameters<typeof useVectorTileService>[0]) =>\n useVectorTileService({ ...options, map }),\n useFeatureService: (options: Parameters<typeof useFeatureService>[0]) =>\n useFeatureService({ ...options, map }),\n };\n}\n","import { useMap } from 'react-map-gl/maplibre';\nimport { useDynamicMapService } from '../../react/hooks/useDynamicMapService';\nimport { useTiledMapService } from '../../react/hooks/useTiledMapService';\nimport { useImageService } from '../../react/hooks/useImageService';\nimport { useVectorTileService } from '../../react/hooks/useVectorTileService';\nimport { useFeatureService } from '../../react/hooks/useFeatureService';\nimport type { Map } from '@/types';\n\n/**\n * Hook for using Esri services with MapLibre GL JS (via react-map-gl/maplibre)\n */\nexport function useEsriMaplibreLayer() {\n const { current: mapRef } = useMap();\n const map = mapRef?.getMap() as unknown as Map | null;\n\n return {\n map,\n useDynamicMapService: (options: Parameters<typeof useDynamicMapService>[0]) =>\n useDynamicMapService({ ...options, map }),\n useTiledMapService: (options: Parameters<typeof useTiledMapService>[0]) =>\n useTiledMapService({ ...options, map }),\n useImageService: (options: Parameters<typeof useImageService>[0]) =>\n useImageService({ ...options, map }),\n useVectorTileService: (options: Parameters<typeof useVectorTileService>[0]) =>\n useVectorTileService({ ...options, map }),\n useFeatureService: (options: Parameters<typeof useFeatureService>[0]) =>\n useFeatureService({ ...options, map }),\n };\n}\n"],"names":["EMPTY_COLLECTION","current","withFallback","fn","normalizeCollection","collection","useReactMapGL","mapboxCollection","useMapMapbox","maplibreCollection","useMapMaplibre","applyAuthOptions","options","props","target","token","undefined","apiKey","proxy","getAttributionFromService","requestParams","fetchOptions","EsriDynamicLayer","map","sourceId","id","isMapLoaded","setIsMapLoaded","useState","useEffect","mapInstance","getMap","mi","isStyleLoaded","handleLoad","once","off","service","useMemo","url","layers","layerDefs","format","dpi","transparent","DynamicMapService","getLayer","addLayer","remove","layerConfig","type","source","layout","visibility","visible","beforeId","getStyle","removeLayer","EsriTiledLayer","TiledMapService","EsriImageLayer","renderingRule","mosaicRule","ImageService","EsriVectorTileLayer","serviceRef","useRef","layerIdsRef","cancelled","VectorTileService","then","styleUrl","encodeURIComponent","fetchInit","headers","fetch","response","ok","Error","status","json","data","addedIds","layer","layerId","paint","filter","minzoom","maxzoom","push","catch","err","console","warn","EsriVectorBasemapLayer","VectorBasemapStyle","basemapEnum","EsriFeatureLayer","paintRef","layoutRef","where","outFields","FeatureService","layerType","defaultPaint","useEsriMapboxLayer","mapRef","useMap","useDynamicMapService","useTiledMapService","useImageService","useVectorTileService","useFeatureService","useEsriMaplibreLayer"],"mappings":";;;;;;;;;AAYA,MAAMA,gBAAgB,GAA4B;AAAEC,EAAAA,OAAO,EAAE;CAAM;AAEnE,SAASC,YAAYA,CAAIC,EAAW,EAAA;EAClC,IAAI;IACF,OAAOA,EAAE,EAAE;AACb,EAAA,CAAC,CAAC,MAAM;AACN;AACA,IAAA,OAAO,IAAI;AACb,EAAA;AACF;AAEA,SAASC,mBAAmBA,CAC1BC,UAAsF,EAAA;EAEtF,IAAI,CAACA,UAAU,EAAE;AACf,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,MAAMJ,OAAO,GAAKI,UAA6C,CAACJ,OAAO,IACrE,IAAgC;EAElC,OAAO;IACLA,OAAO;IACP,GAAGI;GACuB;AAC9B;SAEgBC,aAAaA,GAAA;EAC3B,MAAMC,gBAAgB,GAAGH,mBAAmB,CAACF,YAAY,CAACM,MAAY,CAAC,CAAC;EACxE,MAAMC,kBAAkB,GAAGL,mBAAmB,CAACF,YAAY,CAACQ,QAAc,CAAC,CAAC;EAE5E,IAAIH,gBAAgB,EAAEN,OAAO,EAAE;AAC7B,IAAA,OAAOM,gBAAgB;AACzB,EAAA;EAEA,IAAIE,kBAAkB,EAAER,OAAO,EAAE;AAC/B,IAAA,OAAOQ,kBAAkB;AAC3B,EAAA;AAEA,EAAA,OAAOF,gBAAgB,IAAIE,kBAAkB,IAAIT,gBAAgB;AACnE;;AClDA;;;;AAIG;AACG,SAAUW,gBAAgBA,CAAmBC,OAAU,EAAEC,KAAoB,EAAA;EACjF,MAAMC,MAAM,GAAGF,OAAkC;AACjD,EAAA,IAAIC,KAAK,CAACE,KAAK,KAAKC,SAAS,EAAEF,MAAM,CAACC,KAAK,GAAGF,KAAK,CAACE,KAAK;AACzD,EAAA,IAAIF,KAAK,CAACI,MAAM,KAAKD,SAAS,EAAEF,MAAM,CAACG,MAAM,GAAGJ,KAAK,CAACI,MAAM;AAC5D,EAAA,IAAIJ,KAAK,CAACK,KAAK,KAAKF,SAAS,EAAEF,MAAM,CAACI,KAAK,GAAGL,KAAK,CAACK,KAAK;AACzD,EAAA,IAAIL,KAAK,CAACM,yBAAyB,KAAKH,SAAS,EAC/CF,MAAM,CAACK,yBAAyB,GAAGN,KAAK,CAACM,yBAAyB;AACpE,EAAA,IAAIN,KAAK,CAACO,aAAa,KAAKJ,SAAS,EAAEF,MAAM,CAACM,aAAa,GAAGP,KAAK,CAACO,aAAa;AACjF,EAAA,IAAIP,KAAK,CAACQ,YAAY,KAAKL,SAAS,EAAEF,MAAM,CAACO,YAAY,GAAGR,KAAK,CAACQ,YAAY;AAC9E,EAAA,OAAOT,OAAO;AAChB;;ACVA;;AAEG;AACG,SAAUU,gBAAgBA,CAACT,KAA4B,EAAA;EAC3D,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;EACxC,MAAMkB,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAI,CAAA,aAAA,EAAgBX,KAAK,CAACY,EAAE,CAAA,CAAE;EAC7D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B;AACA,IAAA,MAAMlB,OAAO,GAAyC;MAAE2B,GAAG,EAAE1B,KAAK,CAAC0B;KAAK;AACxE,IAAA,IAAI1B,KAAK,CAAC2B,MAAM,KAAKxB,SAAS,EAAEJ,OAAO,CAAC4B,MAAM,GAAG3B,KAAK,CAAC2B,MAAM;AAC7D,IAAA,IAAI3B,KAAK,CAAC4B,SAAS,KAAKzB,SAAS,EAAEJ,OAAO,CAAC6B,SAAS,GAAG5B,KAAK,CAAC4B,SAAS;AACtE,IAAA,IAAI5B,KAAK,CAAC6B,MAAM,KAAK1B,SAAS,EAAEJ,OAAO,CAAC8B,MAAM,GAAG7B,KAAK,CAAC6B,MAAM;AAC7D,IAAA,IAAI7B,KAAK,CAAC8B,GAAG,KAAK3B,SAAS,EAAEJ,OAAO,CAAC+B,GAAG,GAAG9B,KAAK,CAAC8B,GAAG;AACpD,IAAA,IAAI9B,KAAK,CAAC+B,WAAW,KAAK5B,SAAS,EAAEJ,OAAO,CAACgC,WAAW,GAAG/B,KAAK,CAAC+B,WAAW;AAC5EjC,IAAAA,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;AAEhC,IAAA,OAAO,IAAIgC,iBAAiB,CAC1BrB,QAAQ,EACRM,WAA+C;AAAE;AACjDlB,IAAAA,OAAO,CACR;EACH,CAAC,EAAE,CACDW,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRX,KAAK,CAAC0B,GAAG,EACT1B,KAAK,CAAC2B,MAAM,EACZ3B,KAAK,CAAC4B,SAAS,EACf5B,KAAK,CAAC6B,MAAM,EACZ7B,KAAK,CAAC8B,GAAG,EACT9B,KAAK,CAAC+B,WAAW,EACjB/B,KAAK,CAACE,KAAK,EACXF,KAAK,CAACI,MAAM,EACZJ,KAAK,CAACK,KAAK,EACXL,KAAK,CAACM,yBAAyB,EAC/BN,KAAK,CAACO,aAAa,EACnBP,KAAK,CAACQ,YAAY,CACnB,CAAC;AAEFQ,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACgB,QAAQ,KAAK,UAAU,IAC1C,OAAOhB,WAAW,CAACiB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVV,OAAO,CAACW,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAAClB,WAAW,CAACgB,QAAQ,CAACjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACnC,MAAA,MAAMwB,WAAW,GAAG;QAClBxB,EAAE,EAAEZ,KAAK,CAACY,EAAE;AACZyB,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE3B,QAAQ;AAChB4B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGxC,KAAK,CAACyC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIzC,KAAK,CAAC0C,QAAQ,EAAE;QACjBzB,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,EAAEpC,KAAK,CAAC0C,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJzB,QAAAA,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKnB,WAAmB,CAAC0B,QAAQ,IAAI,IAAK1B,WAAmB,CAACgB,QAAQ,GAAGjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC2B,WAAW,CAAC5C,KAAK,CAACY,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACW,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAACzB,GAAG,EAAEc,OAAO,EAAExB,KAAK,CAACY,EAAE,EAAEZ,KAAK,CAAC0C,QAAQ,EAAE1C,KAAK,CAACyC,OAAO,EAAE9B,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;ACjHA;;AAEG;AACG,SAAUkC,cAAcA,CAAC7C,KAA0B,EAAA;EACvD,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;EACxC,MAAMkB,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAI,CAAA,WAAA,EAAcX,KAAK,CAACY,EAAE,CAAA,CAAE;EAC3D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B,IAAA,MAAMlB,OAAO,GAAyC;MAAE2B,GAAG,EAAE1B,KAAK,CAAC0B;KAAK;AACxE5B,IAAAA,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;IAEhC,OAAO,IAAI8C,eAAe,CAACnC,QAAQ,EAAEM,WAA+C,EAAElB,OAAO,CAAC;AAChG,EAAA,CAAC,EAAE,CACDW,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRX,KAAK,CAAC0B,GAAG,EACT1B,KAAK,CAACE,KAAK,EACXF,KAAK,CAACI,MAAM,EACZJ,KAAK,CAACK,KAAK,EACXL,KAAK,CAACM,yBAAyB,EAC/BN,KAAK,CAACO,aAAa,EACnBP,KAAK,CAACQ,YAAY,CACnB,CAAC;AAEFQ,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACgB,QAAQ,KAAK,UAAU,IAC1C,OAAOhB,WAAW,CAACiB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVV,OAAO,CAACW,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAAClB,WAAW,CAACgB,QAAQ,CAACjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACnC,MAAA,MAAMwB,WAAW,GAAG;QAClBxB,EAAE,EAAEZ,KAAK,CAACY,EAAE;AACZyB,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE3B,QAAQ;AAChB4B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGxC,KAAK,CAACyC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIzC,KAAK,CAAC0C,QAAQ,EAAE;QACjBzB,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,EAAEpC,KAAK,CAAC0C,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJzB,QAAAA,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKnB,WAAmB,CAAC0B,QAAQ,IAAI,IAAK1B,WAAmB,CAACgB,QAAQ,GAAGjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC2B,WAAW,CAAC5C,KAAK,CAACY,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACW,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAACzB,GAAG,EAAEc,OAAO,EAAExB,KAAK,CAACY,EAAE,EAAEZ,KAAK,CAAC0C,QAAQ,EAAE1C,KAAK,CAACyC,OAAO,EAAE9B,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;AClGA;;AAEG;AACG,SAAUoC,cAAcA,CAAC/C,KAA0B,EAAA;EACvD,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;EACxC,MAAMkB,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAI,CAAA,WAAA,EAAcX,KAAK,CAACY,EAAE,CAAA,CAAE;EAC3D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AAErD;AACAC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET,EAAA,MAAMc,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,IAAI,CAACf,GAAG,IAAI,CAACG,WAAW,EAAE,OAAO,IAAI;AAErC,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;AAClC,IAAA,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;AAE7B;AACA,IAAA,MAAMlB,OAAO,GAAmD;MAAE2B,GAAG,EAAE1B,KAAK,CAAC0B;KAAK;AAClF,IAAA,IAAI1B,KAAK,CAACgD,aAAa,KAAK7C,SAAS,EAAEJ,OAAO,CAACiD,aAAa,GAAGhD,KAAK,CAACgD,aAAa;AAClF,IAAA,IAAIhD,KAAK,CAACiD,UAAU,KAAK9C,SAAS,EAAEJ,OAAO,CAACkD,UAAU,GAAGjD,KAAK,CAACiD,UAAU;AACzE,IAAA,IAAIjD,KAAK,CAAC6B,MAAM,KAAK1B,SAAS,EAAEJ,OAAO,CAAC8B,MAAM,GAAG7B,KAAK,CAAC6B,MAAuC;AAC9F/B,IAAAA,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;IAEhC,OAAO,IAAIkD,YAAY,CAACvC,QAAQ,EAAEM,WAA+C,EAAElB,OAAO,CAAC;EAC7F,CAAC,EAAE,CACDW,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRX,KAAK,CAAC0B,GAAG,EACT1B,KAAK,CAACgD,aAAa,EACnBhD,KAAK,CAACiD,UAAU,EAChBjD,KAAK,CAAC6B,MAAM,EACZ7B,KAAK,CAACE,KAAK,EACXF,KAAK,CAACI,MAAM,EACZJ,KAAK,CAACK,KAAK,EACXL,KAAK,CAACM,yBAAyB,EAC/BN,KAAK,CAACO,aAAa,EACnBP,KAAK,CAACQ,YAAY,CACnB,CAAC;AAEFQ,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB,IAAA,MAAMP,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAW;AACzC,IAAA,IACE,CAACD,WAAW,IACZ,OAAOA,WAAW,CAACgB,QAAQ,KAAK,UAAU,IAC1C,OAAOhB,WAAW,CAACiB,QAAQ,KAAK,UAAU,EAC1C;AACA,MAAA,OAAO,MAAK;QACVV,OAAO,CAACW,MAAM,EAAE;MAClB,CAAC;AACH,IAAA;AAEA;IACA,IAAI,CAAClB,WAAW,CAACgB,QAAQ,CAACjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACnC,MAAA,MAAMwB,WAAW,GAAG;QAClBxB,EAAE,EAAEZ,KAAK,CAACY,EAAE;AACZyB,QAAAA,IAAI,EAAE,QAAiB;AACvBC,QAAAA,MAAM,EAAE3B,QAAQ;AAChB4B,QAAAA,MAAM,EAAE;UACNC,UAAU,EAAGxC,KAAK,CAACyC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIzC,KAAK,CAAC0C,QAAQ,EAAE;QACjBzB,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,EAAEpC,KAAK,CAAC0C,QAAe,CAAC;AAC1E,MAAA,CAAC,MAAM;AACJzB,QAAAA,WAAmB,CAACiB,QAAQ,CAACE,WAAkB,CAAC;AACnD,MAAA;AACF,IAAA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAKnB,WAAmB,CAAC0B,QAAQ,IAAI,IAAK1B,WAAmB,CAACgB,QAAQ,GAAGjC,KAAK,CAACY,EAAE,CAAC,EAAE;AACjFK,QAAAA,WAAmB,CAAC2B,WAAW,CAAC5C,KAAK,CAACY,EAAE,CAAC;AAC5C,MAAA;AACA,MAAA,IAAIY,OAAO,EAAE;QACXA,OAAO,CAACW,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;EACH,CAAC,EAAE,CAACzB,GAAG,EAAEc,OAAO,EAAExB,KAAK,CAACY,EAAE,EAAEZ,KAAK,CAAC0C,QAAQ,EAAE1C,KAAK,CAACyC,OAAO,EAAE9B,QAAQ,CAAC,CAAC;AAErE,EAAA,OAAO,IAAI;AACb;;ACzGA;;AAEG;AACG,SAAUwC,mBAAmBA,CAACnD,KAA+B,EAAA;EACjE,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;EACxC,MAAMkB,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAI,CAAA,iBAAA,EAAoBX,KAAK,CAACY,EAAE,CAAA,CAAE;EACjE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AACrD,EAAA,MAAMqC,UAAU,GAAGC,MAAM,CAA2B,IAAI,CAAC;AACzD,EAAA,MAAMC,WAAW,GAAGD,MAAM,CAAW,EAAE,CAAC;AAExC;AACArC,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AAEnD,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET;AACAM,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACG,WAAW,EAAE;AAE1B,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,IAAI,CAACD,WAAW,EAAE;IAElB,MAAME,EAAE,GAAGF,WAAkB;IAC7B,IAAIsC,SAAS,GAAG,KAAK;AAErB,IAAA,MAAMxD,OAAO,GAA+C;MAAE2B,GAAG,EAAE1B,KAAK,CAAC0B;KAAK;AAC9E5B,IAAAA,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;IAEhC,MAAMwB,OAAO,GAAG,IAAIgC,iBAAiB,CAAC7C,QAAQ,EAAEM,WAA6B,EAAElB,OAAO,CAAC;IACvFqD,UAAU,CAAChE,OAAO,GAAGoC,OAAO;AAE5B;AACAA,IAAAA,OAAO,CACJmB,QAAQ,EAAE,CACVc,IAAI,CAAC,MAAK;AACT,MAAA,IAAIF,SAAS,EAAE;AAEf;AACA,MAAA,IAAIG,QAAQ,GAAG,CAAA,EAAG1D,KAAK,CAAC0B,GAAG,CAAA,2BAAA,CAA6B;MACxD,IAAI1B,KAAK,CAACE,KAAK,EAAE;QACfwD,QAAQ,IAAI,UAAUC,kBAAkB,CAAC3D,KAAK,CAACE,KAAK,CAAC,CAAA,CAAE;AACzD,MAAA;AACA,MAAA,MAAM0D,SAAS,GAAgB;AAAE,QAAA,IAAI5D,KAAK,CAACQ,YAAY,IAAI,EAAE;OAAG;MAChE,IAAIR,KAAK,CAACI,MAAM,EAAE;QAChBwD,SAAS,CAACC,OAAO,GAAG;AAClB,UAAA,IAAID,SAAS,CAACC,OAAO,IAAI,EAAE,CAAC;AAC5B,UAAA,sBAAsB,EAAE,CAAA,OAAA,EAAU7D,KAAK,CAACI,MAAM,CAAA;SAC/C;AACH,MAAA;AACA,MAAA,OAAO0D,KAAK,CAACJ,QAAQ,EAAEE,SAAS,CAAC;AACnC,IAAA,CAAC,CAAC,CACDH,IAAI,CAACM,QAAQ,IAAG;AACf,MAAA,IAAIR,SAAS,IAAI,CAACQ,QAAQ,EAAE;AAC5B,MAAA,IAAI,CAACA,QAAQ,CAACC,EAAE,EAAE,MAAM,IAAIC,KAAK,CAAC,CAAA,uBAAA,EAA0BF,QAAQ,CAACG,MAAM,EAAE,CAAC;AAC9E,MAAA,OAAOH,QAAQ,CAACI,IAAI,EAAE;AACxB,IAAA,CAAC,CAAC,CACDV,IAAI,CAACW,IAAI,IAAG;AACX,MAAA,IAAIb,SAAS,IAAI,CAACa,IAAI,EAAEzC,MAAM,EAAE;MAEhC,MAAM0C,QAAQ,GAAa,EAAE;AAC7B,MAAA,KAAK,MAAMC,KAAK,IAAIF,IAAI,CAACzC,MAAM,EAAE;AAC/B,QAAA,IAAI,CAAC2C,KAAK,CAAC,cAAc,CAAC,EAAE;QAC5B,MAAMC,OAAO,GAAG,CAAA,EAAGvE,KAAK,CAACY,EAAE,CAAA,CAAA,EAAI0D,KAAK,CAAC1D,EAAE,CAAA,CAAE;AAEzC,QAAA,IAAIO,EAAE,CAACc,QAAQ,GAAGsC,OAAO,CAAC,EAAE;AAE5B,QAAA,MAAMnC,WAAW,GAAQ;AACvBxB,UAAAA,EAAE,EAAE2D,OAAO;UACXlC,IAAI,EAAEiC,KAAK,CAACjC,IAAI;AAChBC,UAAAA,MAAM,EAAE3B,QAAQ;UAChB,cAAc,EAAE2D,KAAK,CAAC,cAAc;SACrC;QACD,IAAIA,KAAK,CAAC/B,MAAM,EAAEH,WAAW,CAACG,MAAM,GAAG+B,KAAK,CAAC/B,MAAM;QACnD,IAAI+B,KAAK,CAACE,KAAK,EAAEpC,WAAW,CAACoC,KAAK,GAAGF,KAAK,CAACE,KAAK;QAChD,IAAIF,KAAK,CAACG,MAAM,EAAErC,WAAW,CAACqC,MAAM,GAAGH,KAAK,CAACG,MAAM;AACnD,QAAA,IAAIH,KAAK,CAACI,OAAO,KAAKvE,SAAS,EAAEiC,WAAW,CAACsC,OAAO,GAAGJ,KAAK,CAACI,OAAO;AACpE,QAAA,IAAIJ,KAAK,CAACK,OAAO,KAAKxE,SAAS,EAAEiC,WAAW,CAACuC,OAAO,GAAGL,KAAK,CAACK,OAAO;AAEpE;AACA,QAAA,IAAI3E,KAAK,CAACyC,OAAO,KAAK,KAAK,EAAE;UAC3BL,WAAW,CAACG,MAAM,GAAG;YAAE,GAAGH,WAAW,CAACG,MAAM;AAAEC,YAAAA,UAAU,EAAE;WAAQ;AACpE,QAAA;QAEA,IAAIxC,KAAK,CAAC0C,QAAQ,EAAE;UAClBvB,EAAE,CAACe,QAAQ,CAACE,WAAW,EAAEpC,KAAK,CAAC0C,QAAQ,CAAC;AAC1C,QAAA,CAAC,MAAM;AACLvB,UAAAA,EAAE,CAACe,QAAQ,CAACE,WAAW,CAAC;AAC1B,QAAA;AACAiC,QAAAA,QAAQ,CAACO,IAAI,CAACL,OAAO,CAAC;AACxB,MAAA;MACAjB,WAAW,CAAClE,OAAO,GAAGiF,QAAQ;AAChC,IAAA,CAAC,CAAC,CACDQ,KAAK,CAACC,GAAG,IAAG;AACXC,MAAAA,OAAO,CAACC,IAAI,CAAC,kDAAkD,EAAEF,GAAG,CAAC;AACvE,IAAA,CAAC,CAAC;AAEJ,IAAA,OAAO,MAAK;AACVvB,MAAAA,SAAS,GAAG,IAAI;AAChB;AACA,MAAA,IAAIpC,EAAE,CAACwB,QAAQ,IAAI,EAAE;AACnB,QAAA,KAAK,MAAM/B,EAAE,IAAI0C,WAAW,CAAClE,OAAO,EAAE;UACpC,IAAI;AACF,YAAA,IAAI+B,EAAE,CAACc,QAAQ,GAAGrB,EAAE,CAAC,EAAEO,EAAE,CAACyB,WAAW,CAAChC,EAAE,CAAC;AAC3C,UAAA,CAAC,CAAC,MAAM;AACN;AAAA,UAAA;AAEJ,QAAA;AACF,MAAA;MACA0C,WAAW,CAAClE,OAAO,GAAG,EAAE;MACxBoC,OAAO,CAACW,MAAM,EAAE;MAChBiB,UAAU,CAAChE,OAAO,GAAG,IAAI;IAC3B,CAAC;EACH,CAAC,EAAE,CACDsB,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRX,KAAK,CAAC0B,GAAG,EACT1B,KAAK,CAACY,EAAE,EACRZ,KAAK,CAAC0C,QAAQ,EACd1C,KAAK,CAACyC,OAAO,EACbzC,KAAK,CAACE,KAAK,EACXF,KAAK,CAACI,MAAM,EACZJ,KAAK,CAACK,KAAK,EACXL,KAAK,CAACM,yBAAyB,EAC/BN,KAAK,CAACO,aAAa,EACnBP,KAAK,CAACQ,YAAY,CACnB,CAAC;AAEF,EAAA,OAAO,IAAI;AACb;;ACnJA;;AAEG;AACG,SAAUyE,sBAAsBA,CAACjF,KAAkC,EAAA;EACvE,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;AAExC,EAAA,MAAM+B,OAAO,GAAGC,OAAO,CAAC,MAAK;AAC3B,IAAA,OAAO,IAAIyD,kBAAkB,CAAClF,KAAK,CAACmF,WAAW,EAAE;MAAEjF,KAAK,EAAEF,KAAK,CAACE;AAAK,KAAE,CAAC;EAC1E,CAAC,EAAE,CAACF,KAAK,CAACmF,WAAW,EAAEnF,KAAK,CAACE,KAAK,CAAC,CAAC;AAEpCc,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACc,OAAO,EAAE;AAEtB;AACA;AACA;AAEA;AACA,IAAA,OAAO,MAAK;AACV,MAAA,IAAIA,OAAO,EAAE;QACXA,OAAO,CAACW,MAAM,EAAE;AAClB,MAAA;IACF,CAAC;AACH,EAAA,CAAC,EAAE,CAACzB,GAAG,EAAEc,OAAO,CAAC,CAAC;AAElB,EAAA,OAAO,IAAI;AACb;;ACxBA;;AAEG;AACG,SAAU4D,gBAAgBA,CAACpF,KAA4B,EAAA;EAC3D,MAAM;AAAEZ,IAAAA,OAAO,EAAEsB;GAAK,GAAGjB,aAAa,EAAE;EACxC,MAAMkB,QAAQ,GAAGX,KAAK,CAACW,QAAQ,IAAI,CAAA,aAAA,EAAgBX,KAAK,CAACY,EAAE,CAAA,CAAE;EAC7D,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGC,QAAQ,CAAC,KAAK,CAAC;AACrD,EAAA,MAAMqC,UAAU,GAAGC,MAAM,CAAwB,IAAI,CAAC;AAEtD;AACA,EAAA,MAAMgC,QAAQ,GAAGhC,MAAM,CAACrD,KAAK,CAACwE,KAAK,CAAC;AACpCa,EAAAA,QAAQ,CAACjG,OAAO,GAAGY,KAAK,CAACwE,KAAK;AAC9B,EAAA,MAAMc,SAAS,GAAGjC,MAAM,CAACrD,KAAK,CAACuC,MAAM,CAAC;AACtC+C,EAAAA,SAAS,CAAClG,OAAO,GAAGY,KAAK,CAACuC,MAAM;AAEhC;AACAvB,EAAAA,SAAS,CAAC,MAAK;IACb,IAAI,CAACN,GAAG,EAAE;AAEV,IAAA,MAAMO,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,MAAMC,EAAE,GAAGF,WAAkB;IAC7B,IAAI,CAACE,EAAE,IAAI,OAAOA,EAAE,CAACC,aAAa,KAAK,UAAU,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,IAAID,EAAE,CAACC,aAAa,EAAE,EAAE;MACtBN,cAAc,CAAC,IAAI,CAAC;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMO,UAAU,GAAGA,MAAMP,cAAc,CAAC,IAAI,CAAC;AAC7CK,IAAAA,EAAE,EAAEG,IAAI,GAAG,MAAM,EAAED,UAAU,CAAC;AAE9B,IAAA,OAAO,MAAK;AACVF,MAAAA,EAAE,EAAEI,GAAG,GAAG,MAAM,EAAEF,UAAU,CAAC;IAC/B,CAAC;AACH,EAAA,CAAC,EAAE,CAACX,GAAG,CAAC,CAAC;AAET;AACAM,EAAAA,SAAS,CAAC,MAAK;AACb,IAAA,IAAI,CAACN,GAAG,IAAI,CAACG,WAAW,EAAE;AAE1B,IAAA,MAAMI,WAAW,GAAGP,GAAG,CAACQ,MAAM,IAAI;IAClC,IAAI,CAACD,WAAW,EAAE;IAElB,MAAME,EAAE,GAAGF,WAAkB;AAE7B;AACA,IAAA,MAAMlB,OAAO,GAAqD;MAAE2B,GAAG,EAAE1B,KAAK,CAAC0B;KAAK;AACpF,IAAA,IAAI1B,KAAK,CAACuF,KAAK,KAAKpF,SAAS,EAAEJ,OAAO,CAACwF,KAAK,GAAGvF,KAAK,CAACuF,KAAK;AAC1D,IAAA,IAAIvF,KAAK,CAACwF,SAAS,KAAKrF,SAAS,EAAEJ,OAAO,CAACyF,SAAS,GAAGxF,KAAK,CAACwF,SAAS;AACtE1F,IAAAA,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;IAEhC,MAAMwB,OAAO,GAAG,IAAIiE,cAAc,CAChC9E,QAAQ,EACRM,WAA+C,EAC/ClB,OAAO,CACR;IACDqD,UAAU,CAAChE,OAAO,GAAGoC,OAAO;AAE5B;IACA,IACE,OAAOL,EAAE,CAACc,QAAQ,KAAK,UAAU,IACjC,OAAOd,EAAE,CAACe,QAAQ,KAAK,UAAU,IACjC,CAACf,EAAE,CAACc,QAAQ,CAACjC,KAAK,CAACY,EAAE,CAAC,EACtB;AACA,MAAA,MAAM8E,SAAS,GAAG1F,KAAK,CAACqC,IAAI,IAAI,MAAM;AACtC,MAAA,MAAMsD,YAAY,GAChBD,SAAS,KAAK,QAAQ,GAClB;AAAE,QAAA,eAAe,EAAE,CAAC;AAAE,QAAA,cAAc,EAAE;AAAS,OAAE,GACjD;AAAE,QAAA,YAAY,EAAE,SAAS;AAAE,QAAA,cAAc,EAAE;OAAK;AACtD,MAAA,MAAMtD,WAAW,GAAG;QAClBxB,EAAE,EAAEZ,KAAK,CAACY,EAAE;AACZyB,QAAAA,IAAI,EAAEqD,SAAS;AACfpD,QAAAA,MAAM,EAAE3B,QAAQ;AAChB6D,QAAAA,KAAK,EAAEa,QAAQ,CAACjG,OAAO,IAAIuG,YAAY;AACvCpD,QAAAA,MAAM,EAAE;UACN,GAAG+C,SAAS,CAAClG,OAAO;UACpBoD,UAAU,EAAGxC,KAAK,CAACyC,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG;AACpD;OACF;MAED,IAAIzC,KAAK,CAAC0C,QAAQ,EAAE;QAClBvB,EAAE,CAACe,QAAQ,CAACE,WAAkB,EAAEpC,KAAK,CAAC0C,QAAe,CAAC;AACxD,MAAA,CAAC,MAAM;AACLvB,QAAAA,EAAE,CAACe,QAAQ,CAACE,WAAkB,CAAC;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,OAAO,MAAK;AACV,MAAA,IAAIjB,EAAE,CAACwB,QAAQ,IAAI,IAAIxB,EAAE,CAACc,QAAQ,GAAGjC,KAAK,CAACY,EAAE,CAAC,EAAE;AAC9CO,QAAAA,EAAE,CAACyB,WAAW,CAAC5C,KAAK,CAACY,EAAE,CAAC;AAC1B,MAAA;MACAY,OAAO,CAACW,MAAM,EAAE;MAChBiB,UAAU,CAAChE,OAAO,GAAG,IAAI;IAC3B,CAAC;AACH,EAAA,CAAC,EAAE,CACDsB,GAAG,EACHG,WAAW,EACXF,QAAQ,EACRX,KAAK,CAAC0B,GAAG,EACT1B,KAAK,CAACuF,KAAK,EACXvF,KAAK,CAACwF,SAAS,EACfxF,KAAK,CAACY,EAAE,EACRZ,KAAK,CAAC0C,QAAQ,EACd1C,KAAK,CAACyC,OAAO,EACbzC,KAAK,CAACqC,IAAI,EACVrC,KAAK,CAACE,KAAK,EACXF,KAAK,CAACI,MAAM,EACZJ,KAAK,CAACK,KAAK,EACXL,KAAK,CAACM,yBAAyB,EAC/BN,KAAK,CAACO,aAAa,EACnBP,KAAK,CAACQ,YAAY,CACnB,CAAC;AAEF,EAAA,OAAO,IAAI;AACb;;ACnHA;;AAEG;SACaoF,kBAAkBA,GAAA;EAChC,MAAM;AAAExG,IAAAA,OAAO,EAAEyG;GAAQ,GAAGC,MAAM,EAAE;AACpC,EAAA,MAAMpF,GAAG,GAAGmF,MAAM,EAAE3E,MAAM,EAA2B;EAErD,OAAO;IACLR,GAAG;AACHqF,IAAAA,oBAAoB,EAAGhG,OAAmD,IACxEgG,oBAAoB,CAAC;AAAE,MAAA,GAAGhG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AAC3CsF,IAAAA,kBAAkB,EAAGjG,OAAiD,IACpEiG,kBAAkB,CAAC;AAAE,MAAA,GAAGjG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AACzCuF,IAAAA,eAAe,EAAGlG,OAA8C,IAC9DkG,eAAe,CAAC;AAAE,MAAA,GAAGlG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AACtCwF,IAAAA,oBAAoB,EAAGnG,OAAmD,IACxEmG,oBAAoB,CAAC;AAAE,MAAA,GAAGnG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AAC3CyF,IAAAA,iBAAiB,EAAGpG,OAAgD,IAClEoG,iBAAiB,CAAC;AAAE,MAAA,GAAGpG,OAAO;AAAEW,MAAAA;KAAK;GACxC;AACH;;ACpBA;;AAEG;SACa0F,oBAAoBA,GAAA;EAClC,MAAM;AAAEhH,IAAAA,OAAO,EAAEyG;GAAQ,GAAGC,QAAM,EAAE;AACpC,EAAA,MAAMpF,GAAG,GAAGmF,MAAM,EAAE3E,MAAM,EAA2B;EAErD,OAAO;IACLR,GAAG;AACHqF,IAAAA,oBAAoB,EAAGhG,OAAmD,IACxEgG,oBAAoB,CAAC;AAAE,MAAA,GAAGhG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AAC3CsF,IAAAA,kBAAkB,EAAGjG,OAAiD,IACpEiG,kBAAkB,CAAC;AAAE,MAAA,GAAGjG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AACzCuF,IAAAA,eAAe,EAAGlG,OAA8C,IAC9DkG,eAAe,CAAC;AAAE,MAAA,GAAGlG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AACtCwF,IAAAA,oBAAoB,EAAGnG,OAAmD,IACxEmG,oBAAoB,CAAC;AAAE,MAAA,GAAGnG,OAAO;AAAEW,MAAAA;KAAK,CAAC;AAC3CyF,IAAAA,iBAAiB,EAAGpG,OAAgD,IAClEoG,iBAAiB,CAAC;AAAE,MAAA,GAAGpG,OAAO;AAAEW,MAAAA;KAAK;GACxC;AACH;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "esri-gl",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A module for making it easier to use Esri services in mapbox-gl or maplibre-gl.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"@types/react-dom": "^19.2.3",
|
|
97
97
|
"@typescript-eslint/eslint-plugin": "^8.53.1",
|
|
98
98
|
"@typescript-eslint/parser": "^8.53.1",
|
|
99
|
-
"@vitejs/plugin-react": "^
|
|
99
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
100
100
|
"eslint": "^9.39.2",
|
|
101
101
|
"husky": "^9.1.7",
|
|
102
102
|
"jest": "^30.2.0",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"ts-jest": "^29.4.6",
|
|
116
116
|
"tslib": "^2.8.1",
|
|
117
117
|
"typescript": "^5.9.3",
|
|
118
|
-
"vite": "^
|
|
118
|
+
"vite": "^8.0.3"
|
|
119
119
|
},
|
|
120
120
|
"repository": {
|
|
121
121
|
"type": "git",
|