@sqlrooms/deck 0.29.0-rc.10 → 0.29.0-rc.11
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 +42 -6
- package/dist/DeckJsonMap.d.ts.map +1 -1
- package/dist/DeckJsonMap.js +2 -6
- package/dist/DeckJsonMap.js.map +1 -1
- package/dist/DeckJsonMapSpec.d.ts +875 -53
- package/dist/DeckJsonMapSpec.d.ts.map +1 -1
- package/dist/DeckJsonMapSpec.js +7 -0
- package/dist/DeckJsonMapSpec.js.map +1 -1
- package/dist/DeckMapDefaultStylesProvider.d.ts +3 -4
- package/dist/DeckMapDefaultStylesProvider.d.ts.map +1 -1
- package/dist/DeckMapDefaultStylesProvider.js +13 -7
- package/dist/DeckMapDefaultStylesProvider.js.map +1 -1
- package/dist/MapSettings.d.ts.map +1 -1
- package/dist/MapSettings.js +25 -11
- package/dist/MapSettings.js.map +1 -1
- package/dist/ai.d.ts +19 -5
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +60 -112
- package/dist/ai.js.map +1 -1
- package/dist/aiNormalize.d.ts +31 -0
- package/dist/aiNormalize.d.ts.map +1 -0
- package/dist/aiNormalize.js +629 -0
- package/dist/aiNormalize.js.map +1 -0
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +72 -8
- package/dist/dashboard.js.map +1 -1
- package/dist/dashboardConfig.d.ts +10 -1
- package/dist/dashboardConfig.d.ts.map +1 -1
- package/dist/dashboardConfig.js +55 -22
- package/dist/dashboardConfig.js.map +1 -1
- package/dist/datasets/PreparedDatasetStore.d.ts.map +1 -1
- package/dist/datasets/PreparedDatasetStore.js +31 -2
- package/dist/datasets/PreparedDatasetStore.js.map +1 -1
- package/dist/datasets/wrapGeometryAsWkb.d.ts +20 -0
- package/dist/datasets/wrapGeometryAsWkb.d.ts.map +1 -0
- package/dist/datasets/wrapGeometryAsWkb.js +65 -0
- package/dist/datasets/wrapGeometryAsWkb.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/json/compileGeoArrowAccessor.d.ts +5 -0
- package/dist/json/compileGeoArrowAccessor.d.ts.map +1 -1
- package/dist/json/compileGeoArrowAccessor.js +17 -3
- package/dist/json/compileGeoArrowAccessor.js.map +1 -1
- package/dist/json/createDeckJsonConfiguration.d.ts.map +1 -1
- package/dist/json/createDeckJsonConfiguration.js +85 -18
- package/dist/json/createDeckJsonConfiguration.js.map +1 -1
- package/dist/json/extractColorScaleLegends.d.ts.map +1 -1
- package/dist/json/extractColorScaleLegends.js +21 -7
- package/dist/json/extractColorScaleLegends.js.map +1 -1
- package/dist/json/layers/DeckH3HexagonLayer.d.ts.map +1 -1
- package/dist/json/layers/DeckH3HexagonLayer.js +9 -14
- package/dist/json/layers/DeckH3HexagonLayer.js.map +1 -1
- package/dist/json/layers/h3IndexFormat.d.ts +6 -0
- package/dist/json/layers/h3IndexFormat.d.ts.map +1 -0
- package/dist/json/layers/h3IndexFormat.js +17 -0
- package/dist/json/layers/h3IndexFormat.js.map +1 -0
- package/dist/json/layers/index.d.ts +1 -0
- package/dist/json/layers/index.d.ts.map +1 -1
- package/dist/json/layers/index.js +1 -0
- package/dist/json/layers/index.js.map +1 -1
- package/dist/json/rewriteGeoArrowAccessors.d.ts.map +1 -1
- package/dist/json/rewriteGeoArrowAccessors.js +9 -0
- package/dist/json/rewriteGeoArrowAccessors.js.map +1 -1
- package/dist/json/scaleFunction.d.ts +30 -0
- package/dist/json/scaleFunction.d.ts.map +1 -0
- package/dist/json/scaleFunction.js +126 -0
- package/dist/json/scaleFunction.js.map +1 -0
- package/dist/mapAiConfig.d.ts +2 -0
- package/dist/mapAiConfig.d.ts.map +1 -1
- package/dist/mapAiConfig.js +2 -1
- package/dist/mapAiConfig.js.map +1 -1
- package/dist/mapAiSharedInstructions.d.ts +3 -0
- package/dist/mapAiSharedInstructions.d.ts.map +1 -0
- package/dist/mapAiSharedInstructions.js +16 -0
- package/dist/mapAiSharedInstructions.js.map +1 -0
- package/dist/mapConfig.d.ts +6 -0
- package/dist/mapConfig.d.ts.map +1 -1
- package/dist/mapConfig.js.map +1 -1
- package/dist/mapConfigUtils.d.ts.map +1 -1
- package/dist/mapConfigUtils.js +2 -0
- package/dist/mapConfigUtils.js.map +1 -1
- package/dist/mapFit.d.ts +16 -0
- package/dist/mapFit.d.ts.map +1 -1
- package/dist/mapFit.js +208 -30
- package/dist/mapFit.js.map +1 -1
- package/dist/mapLayerConfigUtils.d.ts +9 -1
- package/dist/mapLayerConfigUtils.d.ts.map +1 -1
- package/dist/mapLayerConfigUtils.js +62 -12
- package/dist/mapLayerConfigUtils.js.map +1 -1
- package/dist/mapResourceAuthoring.d.ts +2 -0
- package/dist/mapResourceAuthoring.d.ts.map +1 -1
- package/dist/mapResourceAuthoring.js +402 -16
- package/dist/mapResourceAuthoring.js.map +1 -1
- package/dist/mosaic.d.ts +1 -1
- package/dist/mosaic.d.ts.map +1 -1
- package/dist/mosaic.js.map +1 -1
- package/dist/prepare/geoarrow.js.map +1 -1
- package/dist/prepare/wkbDecoder.d.ts +10 -0
- package/dist/prepare/wkbDecoder.d.ts.map +1 -1
- package/dist/prepare/wkbDecoder.js +93 -18
- package/dist/prepare/wkbDecoder.js.map +1 -1
- package/dist/prepare/wkbParser.d.ts +7 -0
- package/dist/prepare/wkbParser.d.ts.map +1 -1
- package/dist/prepare/wkbParser.js +21 -0
- package/dist/prepare/wkbParser.js.map +1 -1
- package/dist/selectStarAsWkbCollision.d.ts +3 -0
- package/dist/selectStarAsWkbCollision.d.ts.map +1 -0
- package/dist/selectStarAsWkbCollision.js +78 -0
- package/dist/selectStarAsWkbCollision.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/useDeckMapFitToBounds.d.ts.map +1 -1
- package/dist/useDeckMapFitToBounds.js +1 -1
- package/dist/useDeckMapFitToBounds.js.map +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckJsonMapSpec.d.ts","sourceRoot":"","sources":["../src/DeckJsonMapSpec.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,oBAAoB;;;;EAAqC,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAK9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAQ7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAE5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAiBlE,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"DeckJsonMapSpec.d.ts","sourceRoot":"","sources":["../src/DeckJsonMapSpec.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,oBAAoB;;;;EAAqC,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAK9B,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAQ7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAE5B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAiBlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0C/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAOxE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
package/dist/DeckJsonMapSpec.js
CHANGED
|
@@ -43,10 +43,17 @@ export const DeckJsonMapLayerSpec = z.looseObject({
|
|
|
43
43
|
radiusUnits: z.string().optional(),
|
|
44
44
|
radiusMinPixels: z.number().optional(),
|
|
45
45
|
radiusMaxPixels: z.number().optional(),
|
|
46
|
+
pointRadiusScale: z.number().optional(),
|
|
47
|
+
pointRadiusUnits: z.string().optional(),
|
|
48
|
+
pointRadiusMinPixels: z.number().optional(),
|
|
49
|
+
pointRadiusMaxPixels: z.number().optional(),
|
|
46
50
|
lineWidthMinPixels: z.number().optional(),
|
|
51
|
+
lineWidthMaxPixels: z.number().optional(),
|
|
47
52
|
lineWidthScale: z.number().optional(),
|
|
48
53
|
lineWidthUnits: z.string().optional(),
|
|
49
54
|
getRadius: JsonAccessor.optional(),
|
|
55
|
+
getPointRadius: JsonAccessor.optional(),
|
|
56
|
+
getLineWidth: JsonAccessor.optional(),
|
|
50
57
|
getFillColor: JsonAccessor.optional(),
|
|
51
58
|
getLineColor: JsonAccessor.optional(),
|
|
52
59
|
getColor: JsonAccessor.optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckJsonMapSpec.js","sourceRoot":"","sources":["../src/DeckJsonMapSpec.ts"],"names":[],"mappings":"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","sourcesContent":["import {ColorScaleConfig, RGBAColor} from '@sqlrooms/color-scales';\nimport {z} from 'zod';\n\nexport const GeometryEncodingHint = z.enum(['geoarrow', 'wkb', 'wkt']);\nexport type GeometryEncodingHint = z.infer<typeof GeometryEncodingHint>;\n\nexport const ColorScaleFunction = z.intersection(\n z.object({\n '@@function': z.literal('colorScale'),\n }),\n ColorScaleConfig,\n);\nexport type ColorScaleFunction = z.infer<typeof ColorScaleFunction>;\n\nexport const LayerBindingConfig = z.object({\n dataset: z.string().min(1).optional(),\n geometryColumn: z.string().min(1).optional(),\n geometryEncodingHint: GeometryEncodingHint.optional(),\n sourceGeometryColumn: z.string().min(1).optional(),\n targetGeometryColumn: z.string().min(1).optional(),\n timestampColumn: z.string().min(1).optional(),\n hexagonColumn: z.string().min(1).optional(),\n});\nexport type LayerBindingConfig = z.infer<typeof LayerBindingConfig>;\n\nexport const LayerBindingProps = z.object({\n _sqlroomsBinding: LayerBindingConfig.optional(),\n});\nexport type LayerBindingProps = z.infer<typeof LayerBindingProps>;\n\nconst JsonAccessor = z.union([\n z.string(),\n z.number(),\n RGBAColor,\n z.array(z.number()),\n ColorScaleFunction,\n z.record(z.string(), z.unknown()),\n]);\n\n// Keep the layer spec loose for now because `DeckJsonMap` accepts deck.gl JSON as an\n// external spec format, and that surface is much broader than SQLRooms-owned\n// `_sqlroomsBinding` extensions. We validate the binding config fully and a handful of\n// common deck props we know we rely on, while allowing the rest through.\n// TODO(deck-json-schema): Replace this with fuller schemas when deck.gl/json\n// exposes reusable validators or we decide to maintain a broader local schema.\nexport const DeckJsonMapLayerSpec = z.looseObject({\n '@@type': z.string().optional(),\n id: z.string().optional(),\n data: z.unknown().optional(),\n visible: z.boolean().optional(),\n pickable: z.boolean().optional(),\n filled: z.boolean().optional(),\n stroked: z.boolean().optional(),\n extruded: z.boolean().optional(),\n radiusScale: z.number().optional(),\n radiusUnits: z.string().optional(),\n radiusMinPixels: z.number().optional(),\n radiusMaxPixels: z.number().optional(),\n lineWidthMinPixels: z.number().optional(),\n lineWidthScale: z.number().optional(),\n lineWidthUnits: z.string().optional(),\n getRadius: JsonAccessor.optional(),\n getFillColor: JsonAccessor.optional(),\n getLineColor: JsonAccessor.optional(),\n getColor: JsonAccessor.optional(),\n getWeight: JsonAccessor.optional(),\n getWidth: JsonAccessor.optional(),\n getHeight: JsonAccessor.optional(),\n getTilt: JsonAccessor.optional(),\n getElevation: JsonAccessor.optional(),\n getSourceColor: JsonAccessor.optional(),\n getTargetColor: JsonAccessor.optional(),\n getPosition: JsonAccessor.optional(),\n getSourcePosition: JsonAccessor.optional(),\n getTargetPosition: JsonAccessor.optional(),\n getPolygon: JsonAccessor.optional(),\n getPath: JsonAccessor.optional(),\n getHexagon: JsonAccessor.optional(),\n getTimestamps: JsonAccessor.optional(),\n _sqlroomsBinding: LayerBindingConfig.optional(),\n});\nexport type DeckJsonMapLayerSpec = z.infer<typeof DeckJsonMapLayerSpec>;\n\n// Keep the top-level spec loose for the same reason as `DeckJsonMapLayerSpec`: deck.gl\n// JSON supports many runtime-level props, and SQLRooms currently only needs a\n// validated subset plus open-ended compatibility with upstream deck specs.\n// TODO(deck-json-schema): Replace this with fuller schemas when we have a more\n// complete upstream or local model of deck.gl/json top-level props.\nexport const DeckJsonMapSpec = z.looseObject({\n initialViewState: z.record(z.string(), z.unknown()).optional(),\n viewState: z.record(z.string(), z.unknown()).optional(),\n controller: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional(),\n layers: z.array(DeckJsonMapLayerSpec).optional(),\n});\nexport type DeckJsonMapSpec = z.infer<typeof DeckJsonMapSpec>;\n"]}
|
|
1
|
+
{"version":3,"file":"DeckJsonMapSpec.js","sourceRoot":"","sources":["../src/DeckJsonMapSpec.ts"],"names":[],"mappings":"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","sourcesContent":["import {ColorScaleConfig, RGBAColor} from '@sqlrooms/color-scales';\nimport {z} from 'zod';\n\nexport const GeometryEncodingHint = z.enum(['geoarrow', 'wkb', 'wkt']);\nexport type GeometryEncodingHint = z.infer<typeof GeometryEncodingHint>;\n\nexport const ColorScaleFunction = z.intersection(\n z.object({\n '@@function': z.literal('colorScale'),\n }),\n ColorScaleConfig,\n);\nexport type ColorScaleFunction = z.infer<typeof ColorScaleFunction>;\n\nexport const LayerBindingConfig = z.object({\n dataset: z.string().min(1).optional(),\n geometryColumn: z.string().min(1).optional(),\n geometryEncodingHint: GeometryEncodingHint.optional(),\n sourceGeometryColumn: z.string().min(1).optional(),\n targetGeometryColumn: z.string().min(1).optional(),\n timestampColumn: z.string().min(1).optional(),\n hexagonColumn: z.string().min(1).optional(),\n});\nexport type LayerBindingConfig = z.infer<typeof LayerBindingConfig>;\n\nexport const LayerBindingProps = z.object({\n _sqlroomsBinding: LayerBindingConfig.optional(),\n});\nexport type LayerBindingProps = z.infer<typeof LayerBindingProps>;\n\nconst JsonAccessor = z.union([\n z.string(),\n z.number(),\n RGBAColor,\n z.array(z.number()),\n ColorScaleFunction,\n z.record(z.string(), z.unknown()),\n]);\n\n// Keep the layer spec loose for now because `DeckJsonMap` accepts deck.gl JSON as an\n// external spec format, and that surface is much broader than SQLRooms-owned\n// `_sqlroomsBinding` extensions. We validate the binding config fully and a handful of\n// common deck props we know we rely on, while allowing the rest through.\n// TODO(deck-json-schema): Replace this with fuller schemas when deck.gl/json\n// exposes reusable validators or we decide to maintain a broader local schema.\nexport const DeckJsonMapLayerSpec = z.looseObject({\n '@@type': z.string().optional(),\n id: z.string().optional(),\n data: z.unknown().optional(),\n visible: z.boolean().optional(),\n pickable: z.boolean().optional(),\n filled: z.boolean().optional(),\n stroked: z.boolean().optional(),\n extruded: z.boolean().optional(),\n radiusScale: z.number().optional(),\n radiusUnits: z.string().optional(),\n radiusMinPixels: z.number().optional(),\n radiusMaxPixels: z.number().optional(),\n pointRadiusScale: z.number().optional(),\n pointRadiusUnits: z.string().optional(),\n pointRadiusMinPixels: z.number().optional(),\n pointRadiusMaxPixels: z.number().optional(),\n lineWidthMinPixels: z.number().optional(),\n lineWidthMaxPixels: z.number().optional(),\n lineWidthScale: z.number().optional(),\n lineWidthUnits: z.string().optional(),\n getRadius: JsonAccessor.optional(),\n getPointRadius: JsonAccessor.optional(),\n getLineWidth: JsonAccessor.optional(),\n getFillColor: JsonAccessor.optional(),\n getLineColor: JsonAccessor.optional(),\n getColor: JsonAccessor.optional(),\n getWeight: JsonAccessor.optional(),\n getWidth: JsonAccessor.optional(),\n getHeight: JsonAccessor.optional(),\n getTilt: JsonAccessor.optional(),\n getElevation: JsonAccessor.optional(),\n getSourceColor: JsonAccessor.optional(),\n getTargetColor: JsonAccessor.optional(),\n getPosition: JsonAccessor.optional(),\n getSourcePosition: JsonAccessor.optional(),\n getTargetPosition: JsonAccessor.optional(),\n getPolygon: JsonAccessor.optional(),\n getPath: JsonAccessor.optional(),\n getHexagon: JsonAccessor.optional(),\n getTimestamps: JsonAccessor.optional(),\n _sqlroomsBinding: LayerBindingConfig.optional(),\n});\nexport type DeckJsonMapLayerSpec = z.infer<typeof DeckJsonMapLayerSpec>;\n\n// Keep the top-level spec loose for the same reason as `DeckJsonMapLayerSpec`: deck.gl\n// JSON supports many runtime-level props, and SQLRooms currently only needs a\n// validated subset plus open-ended compatibility with upstream deck specs.\n// TODO(deck-json-schema): Replace this with fuller schemas when we have a more\n// complete upstream or local model of deck.gl/json top-level props.\nexport const DeckJsonMapSpec = z.looseObject({\n initialViewState: z.record(z.string(), z.unknown()).optional(),\n viewState: z.record(z.string(), z.unknown()).optional(),\n controller: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional(),\n layers: z.array(DeckJsonMapLayerSpec).optional(),\n});\nexport type DeckJsonMapSpec = z.infer<typeof DeckJsonMapSpec>;\n"]}
|
|
@@ -14,10 +14,9 @@ export declare const DeckMapDefaultStylesProvider: FC<PropsWithChildren<{
|
|
|
14
14
|
}>>;
|
|
15
15
|
/** Returns theme-aware host map defaults from the nearest provider, if any. */
|
|
16
16
|
export declare function useDeckMapDefaultStyles(): Partial<Record<ResolvedTheme, DeckMapStyle>> | undefined;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*/
|
|
17
|
+
/** True for `mapbox://` style URLs (MapLibre cannot load them without a token). */
|
|
18
|
+
export declare function isMapboxStyleUrl(style: unknown): boolean;
|
|
19
|
+
/** Resolve map style; skips `mapbox://` so the map can still load. */
|
|
21
20
|
export declare function resolveDeckMapStyle(options: {
|
|
22
21
|
mapStyle?: string;
|
|
23
22
|
mapPropsMapStyle?: MapProps['mapStyle'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckMapDefaultStylesProvider.d.ts","sourceRoot":"","sources":["../src/DeckMapDefaultStylesProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAEf,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAE7D,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;AAMhF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAC3C,iBAAiB,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAC,CAAC,CAKlD,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,6DAEtC;AAED
|
|
1
|
+
{"version":3,"file":"DeckMapDefaultStylesProvider.d.ts","sourceRoot":"","sources":["../src/DeckMapDefaultStylesProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAGL,KAAK,EAAE,EACP,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAEf,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AAE7D,0EAA0E;AAC1E,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;AAMhF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAC3C,iBAAiB,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAC,CAAC,CAKlD,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,uBAAuB,6DAEtC;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExD;AASD,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;IACzC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC/C,GAAG,YAAY,CAOf"}
|
|
@@ -10,14 +10,20 @@ export const DeckMapDefaultStylesProvider = ({ styles, children }) => (_jsx(Deck
|
|
|
10
10
|
export function useDeckMapDefaultStyles() {
|
|
11
11
|
return useContext(DeckMapDefaultStylesContext);
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
/** True for `mapbox://` style URLs (MapLibre cannot load them without a token). */
|
|
14
|
+
export function isMapboxStyleUrl(style) {
|
|
15
|
+
return typeof style === 'string' && /^mapbox:/i.test(style.trim());
|
|
16
|
+
}
|
|
17
|
+
function usableMapStyle(style) {
|
|
18
|
+
if (style == null || isMapboxStyleUrl(style))
|
|
19
|
+
return undefined;
|
|
20
|
+
return style;
|
|
21
|
+
}
|
|
22
|
+
/** Resolve map style; skips `mapbox://` so the map can still load. */
|
|
17
23
|
export function resolveDeckMapStyle(options) {
|
|
18
|
-
return (options.mapStyle ??
|
|
19
|
-
options.mapPropsMapStyle ??
|
|
20
|
-
options.hostDefaultStyles?.[options.resolvedTheme] ??
|
|
24
|
+
return (usableMapStyle(options.mapStyle) ??
|
|
25
|
+
usableMapStyle(options.mapPropsMapStyle) ??
|
|
26
|
+
usableMapStyle(options.hostDefaultStyles?.[options.resolvedTheme]) ??
|
|
21
27
|
options.fallbackStyles[options.resolvedTheme]);
|
|
22
28
|
}
|
|
23
29
|
//# sourceMappingURL=DeckMapDefaultStylesProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeckMapDefaultStylesProvider.js","sourceRoot":"","sources":["../src/DeckMapDefaultStylesProvider.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,aAAa,EACb,UAAU,GAGX,MAAM,OAAO,CAAC;AAQf,MAAM,2BAA2B,GAAG,aAAa,CAE/C,SAAS,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAErC,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAChD,QAAQ,GAC4B,CACxC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"DeckMapDefaultStylesProvider.js","sourceRoot":"","sources":["../src/DeckMapDefaultStylesProvider.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,aAAa,EACb,UAAU,GAGX,MAAM,OAAO,CAAC;AAQf,MAAM,2BAA2B,GAAG,aAAa,CAE/C,SAAS,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAErC,CAAC,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAC1B,KAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAChD,QAAQ,GAC4B,CACxC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACjD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CACrB,KAAgD;IAEhD,IAAI,KAAK,IAAI,IAAI,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/D,OAAO,KAAqB,CAAC;AAC/B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,OAMnC;IACC,OAAO,CACL,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChC,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACxC,cAAc,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAClE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAC9C,CAAC;AACJ,CAAC","sourcesContent":["import type {ResolvedTheme} from '@sqlrooms/ui';\nimport type {MapProps} from 'react-map-gl/maplibre';\nimport {\n createContext,\n useContext,\n type FC,\n type PropsWithChildren,\n} from 'react';\n\n/** A MapLibre-compatible style accepted by the Deck map renderer. */\nexport type DeckMapStyle = NonNullable<MapProps['mapStyle']>;\n\n/** Optional host-provided basemap defaults keyed by resolved UI theme. */\nexport type DeckMapDefaultStyles = Partial<Record<ResolvedTheme, DeckMapStyle>>;\n\nconst DeckMapDefaultStylesContext = createContext<\n DeckMapDefaultStyles | undefined\n>(undefined);\n\n/**\n * Supplies host-owned, theme-aware basemap defaults without persisting them in\n * individual map resources. Explicit map config styles still take precedence.\n */\nexport const DeckMapDefaultStylesProvider: FC<\n PropsWithChildren<{styles: DeckMapDefaultStyles}>\n> = ({styles, children}) => (\n <DeckMapDefaultStylesContext.Provider value={styles}>\n {children}\n </DeckMapDefaultStylesContext.Provider>\n);\n\n/** Returns theme-aware host map defaults from the nearest provider, if any. */\nexport function useDeckMapDefaultStyles() {\n return useContext(DeckMapDefaultStylesContext);\n}\n\n/** True for `mapbox://` style URLs (MapLibre cannot load them without a token). */\nexport function isMapboxStyleUrl(style: unknown): boolean {\n return typeof style === 'string' && /^mapbox:/i.test(style.trim());\n}\n\nfunction usableMapStyle(\n style: string | MapProps['mapStyle'] | undefined,\n): DeckMapStyle | undefined {\n if (style == null || isMapboxStyleUrl(style)) return undefined;\n return style as DeckMapStyle;\n}\n\n/** Resolve map style; skips `mapbox://` so the map can still load. */\nexport function resolveDeckMapStyle(options: {\n mapStyle?: string;\n mapPropsMapStyle?: MapProps['mapStyle'];\n hostDefaultStyles?: DeckMapDefaultStyles;\n resolvedTheme: ResolvedTheme;\n fallbackStyles: Record<ResolvedTheme, string>;\n}): DeckMapStyle {\n return (\n usableMapStyle(options.mapStyle) ??\n usableMapStyle(options.mapPropsMapStyle) ??\n usableMapStyle(options.hostDefaultStyles?.[options.resolvedTheme]) ??\n options.fallbackStyles[options.resolvedTheme]\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapSettings.d.ts","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAiC,MAAM,OAAO,CAAC;AACzD,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAqB1B,OAAO,EAA8B,KAAK,aAAa,EAAC,MAAM,aAAa,CAAC;AAoF5E,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"MapSettings.d.ts","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAiC,MAAM,OAAO,CAAC;AACzD,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAqB1B,OAAO,EAA8B,KAAK,aAAa,EAAC,MAAM,aAAa,CAAC;AAoF5E,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,cAAc,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgBD,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA06B9D,CAAC"}
|
package/dist/MapSettings.js
CHANGED
|
@@ -49,6 +49,7 @@ function getSchemeOptions(type) {
|
|
|
49
49
|
if (type === 'sequential') {
|
|
50
50
|
return continuousSequentialSchemes;
|
|
51
51
|
}
|
|
52
|
+
// Quantile/quantize/threshold: ColorBrewer only (Viridis → sequential).
|
|
52
53
|
return binnedNumericSchemes;
|
|
53
54
|
}
|
|
54
55
|
export const DeckMapSettingsPanel = ({ title, selectedTable, config, tables, onClose, onTableChange, onTitleChange, onConfigChange, readOnly, }) => {
|
|
@@ -120,10 +121,15 @@ export const DeckMapSettingsPanel = ({ title, selectedTable, config, tables, onC
|
|
|
120
121
|
const colorAccessorOptions = getDeckMapColorAccessorOptions(activeLayer?.['@@type']);
|
|
121
122
|
const effectiveColorAccessor = colorAccessorOptions.find((option) => option.value === colorAccessor)
|
|
122
123
|
?.value ?? colorAccessorOptions[0]?.value;
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
? activeLayer
|
|
126
|
-
|
|
124
|
+
const isGeoJsonLayer = activeLayer?.['@@type'] === 'GeoJsonLayer';
|
|
125
|
+
const pointRadiusPixels = isGeoJsonLayer
|
|
126
|
+
? typeof activeLayer?.getPointRadius === 'number'
|
|
127
|
+
? activeLayer.getPointRadius
|
|
128
|
+
: (activeLayer?.pointRadiusMinPixels ?? 2)
|
|
129
|
+
: activeLayer?.radiusUnits === 'pixels' &&
|
|
130
|
+
typeof activeLayer?.getRadius === 'number'
|
|
131
|
+
? activeLayer.getRadius
|
|
132
|
+
: (activeLayer?.radiusMinPixels ?? 2);
|
|
127
133
|
const colorScale = effectiveColorAccessor
|
|
128
134
|
? getDeckMapLayerColorScale(activeLayer, effectiveColorAccessor)
|
|
129
135
|
: undefined;
|
|
@@ -202,13 +208,21 @@ export const DeckMapSettingsPanel = ({ title, selectedTable, config, tables, onC
|
|
|
202
208
|
} }) }) })), showRadiusSetting && (_jsx(Field, { label: `Point radius: ${pointRadiusPixels}px`, children: _jsx("div", { className: "pt-0.5", children: _jsx(Slider, { min: 1, max: 50, step: 1, value: [pointRadiusPixels], onValueChange: (values) => {
|
|
203
209
|
const value = values[0] ?? 2;
|
|
204
210
|
applyConfig(updateDeckMapLayer(mapConfig, activeLayerIndex, (layer) => {
|
|
205
|
-
const nextLayer =
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
value
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
const nextLayer = layer['@@type'] === 'GeoJsonLayer'
|
|
212
|
+
? {
|
|
213
|
+
...layer,
|
|
214
|
+
pointRadiusUnits: 'pixels',
|
|
215
|
+
pointRadiusMinPixels: value,
|
|
216
|
+
pointRadiusMaxPixels: Math.max(value, layer.pointRadiusMaxPixels ?? value),
|
|
217
|
+
getPointRadius: value,
|
|
218
|
+
}
|
|
219
|
+
: {
|
|
220
|
+
...layer,
|
|
221
|
+
radiusMinPixels: value,
|
|
222
|
+
radiusMaxPixels: Math.max(value, layer.radiusMaxPixels ?? value),
|
|
223
|
+
};
|
|
224
|
+
if (layer['@@type'] !== 'GeoJsonLayer' &&
|
|
225
|
+
layer.radiusUnits === 'pixels' &&
|
|
212
226
|
typeof layer.getRadius !== 'string') {
|
|
213
227
|
nextLayer.getRadius = value;
|
|
214
228
|
}
|
package/dist/MapSettings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapSettings.js","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import {FC, useCallback, useMemo, useState} from 'react';\nimport {\n getTableIdentity,\n resolveTableReference,\n type DataTable,\n} from '@sqlrooms/duckdb';\nimport {\n binnedNumericSchemes,\n categoricalSchemes,\n continuousDivergingSchemes,\n continuousSequentialSchemes,\n continuousSequentialInterpolators,\n parseColorString,\n} from '@sqlrooms/color-scales';\nimport type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Slider,\n ScrollArea,\n SettingsPanelHeader,\n Switch,\n} from '@sqlrooms/ui';\nimport {isDeckMapTableDatasetSource, type DeckMapConfig} from './mapConfig';\nimport {\n clearDeckMapLayerColorScale,\n createDeckMapLayerColorScale,\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS,\n DECK_MAP_LAYER_TYPE_OPTIONS,\n getDeckMapColorAccessorOptions,\n getDeckMapLayerDatasetId,\n getDeckMapLayerColorScale,\n getDeckMapLayerRecords,\n setDeckMapLayerColorScale,\n setDeckMapLayerGeometryColumn,\n setDeckMapLayerHexagonColumn,\n setDeckMapLayerArcColumns,\n setDeckMapLayerTimestampColumn,\n setDeckMapLayerType,\n updateDeckMapLayer,\n type DeckMapLayerColorAccessor,\n type DeckMapLayerRecord,\n usesGeometryColumnSetting,\n usesH3ColumnSetting,\n usesArcColumnSetting,\n usesRadiusSetting,\n usesColumnRadiusSetting,\n usesTripsSettings,\n usesExtrusionSettings,\n} from './mapLayerConfigUtils';\nimport {\n DeckMapCodeViewerPanel,\n DeckMapCodeViewToggleButton,\n DeckMapColumnSelector as ColumnSelector,\n DeckMapColumnsProvider as ColumnsProvider,\n DeckMapSettingsField as Field,\n DeckMapTableSelector as DataTableSelector,\n} from './MapSettingsControls';\nimport {regenerateMapConfigForTable} from './mapConfigUtils';\nimport {useDeckMapDatasetSchema} from './useDeckMapDatasetSchema';\n\nconst HEATMAP_COLOR_STEPS = 6;\nconst EMPTY_COLUMNS: DataTable['columns'] = [];\n\nfunction schemeToColorRange(\n scheme: string,\n): Array<[number, number, number, number]> {\n const interpolator =\n continuousSequentialInterpolators[\n scheme as keyof typeof continuousSequentialInterpolators\n ];\n if (!interpolator) {\n return continuousSequentialInterpolators.Viridis\n ? Array.from({length: HEATMAP_COLOR_STEPS}, (_, i) =>\n parseColorString(\n continuousSequentialInterpolators.Viridis(\n i / (HEATMAP_COLOR_STEPS - 1),\n ),\n ),\n )\n : [];\n }\n return Array.from({length: HEATMAP_COLOR_STEPS}, (_, i) =>\n parseColorString(interpolator(i / (HEATMAP_COLOR_STEPS - 1))),\n );\n}\n\nfunction detectHeatmapScheme(colorRange: unknown): string {\n if (!Array.isArray(colorRange) || colorRange.length === 0) return 'Viridis';\n for (const scheme of continuousSequentialSchemes) {\n const sampled = schemeToColorRange(scheme);\n if (sampled.length === colorRange.length) {\n const matches = sampled.every((color, idx) => {\n const actual = colorRange[idx];\n if (!Array.isArray(actual)) return false;\n return (\n Math.abs(color[0] - actual[0]) < 2 &&\n Math.abs(color[1] - actual[1]) < 2 &&\n Math.abs(color[2] - actual[2]) < 2\n );\n });\n if (matches) return scheme;\n }\n }\n return 'Viridis';\n}\n\nexport interface DeckMapSettingsPanelProps {\n title: string;\n selectedTable?: string;\n config: DeckMapConfig;\n tables: DataTable[];\n onClose?: () => void;\n onTableChange: (table: DataTable) => void;\n onTitleChange: (title: string) => void;\n onConfigChange: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n}\n\nfunction getSchemeOptions(type: ColorScaleConfig['type']) {\n if (type === 'categorical') {\n return categoricalSchemes;\n }\n if (type === 'diverging') {\n return continuousDivergingSchemes;\n }\n if (type === 'sequential') {\n return continuousSequentialSchemes;\n }\n return binnedNumericSchemes;\n}\n\nexport const DeckMapSettingsPanel: FC<DeckMapSettingsPanelProps> = ({\n title,\n selectedTable,\n config,\n tables,\n onClose,\n onTableChange,\n onTitleChange,\n onConfigChange,\n readOnly,\n}) => {\n const [layerIndex, setLayerIndex] = useState(0);\n const [colorAccessor, setColorAccessor] =\n useState<DeckMapLayerColorAccessor>('getFillColor');\n const [viewMode, setViewMode] = useState<'settings' | 'code'>('settings');\n\n const selectedDataTable = useMemo(\n () =>\n selectedTable\n ? resolveTableReference(tables, selectedTable).table\n : undefined,\n [selectedTable, tables],\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n if (readOnly) return;\n onTableChange(table);\n },\n [onTableChange, readOnly],\n );\n\n const mapConfig = config;\n const serializedMapConfig = useMemo(\n () => JSON.stringify(config, null, 2),\n [config],\n );\n const showCode = viewMode === 'code';\n const layers = getDeckMapLayerRecords(mapConfig);\n const activeLayerIndex = Math.min(layerIndex, Math.max(layers.length - 1, 0));\n const activeLayer = layers[activeLayerIndex];\n const activeLayerDatasetId = getDeckMapLayerDatasetId(activeLayer);\n const activeLayerDataset = activeLayerDatasetId\n ? mapConfig.datasets?.[activeLayerDatasetId]\n : undefined;\n\n // Resolve the structured source table separately from the compiled dataset\n // output. Coordinate selectors edit the source transform, while render\n // bindings such as geometry/color/elevation target output columns.\n const activeLayerDatasetSource = activeLayerDataset?.source;\n const fallbackTableName = isDeckMapTableDatasetSource(\n activeLayerDatasetSource,\n )\n ? activeLayerDatasetSource.tableName\n : undefined;\n const fallbackTable = useMemo(\n () =>\n fallbackTableName\n ? resolveTableReference(tables, fallbackTableName).table\n : undefined,\n [fallbackTableName, tables],\n );\n const sourceDataTable = selectedDataTable ?? fallbackTable;\n const sourceColumns = sourceDataTable?.columns ?? EMPTY_COLUMNS;\n const resolvedActiveLayerDatasetSource = useMemo(() => {\n if (!activeLayerDatasetSource) {\n return selectedDataTable\n ? {tableName: getTableIdentity(selectedDataTable.table)}\n : undefined;\n }\n if (!isDeckMapTableDatasetSource(activeLayerDatasetSource)) {\n return activeLayerDatasetSource;\n }\n\n return {\n tableName: selectedDataTable\n ? getTableIdentity(selectedDataTable.table)\n : activeLayerDatasetSource.tableName,\n ...(activeLayerDatasetSource.transformSql\n ? {transformSql: activeLayerDatasetSource.transformSql}\n : {}),\n };\n }, [activeLayerDatasetSource, selectedDataTable]);\n const datasetSchema = useDeckMapDatasetSchema({\n source: resolvedActiveLayerDatasetSource,\n sourceColumns,\n });\n const outputColumns = datasetSchema.outputColumns;\n const dataOutputColumns = datasetSchema.dataOutputColumns;\n const datasetSchemaErrorMessage = datasetSchema.error?.message;\n\n const showGeometryColumnSetting = usesGeometryColumnSetting(\n activeLayer?.['@@type'],\n );\n const showH3ColumnSetting = usesH3ColumnSetting(activeLayer?.['@@type']);\n const showArcColumnSetting = usesArcColumnSetting(activeLayer?.['@@type']);\n const showRadiusSetting = usesRadiusSetting(activeLayer?.['@@type']);\n const showColumnRadiusSetting = usesColumnRadiusSetting(\n activeLayer?.['@@type'],\n );\n const showTripsSettings = usesTripsSettings(activeLayer?.['@@type']);\n const showExtrusionSettings = usesExtrusionSettings(activeLayer?.['@@type']);\n const colorAccessorOptions = getDeckMapColorAccessorOptions(\n activeLayer?.['@@type'],\n );\n const effectiveColorAccessor =\n colorAccessorOptions.find((option) => option.value === colorAccessor)\n ?.value ?? colorAccessorOptions[0]?.value;\n const pointRadiusPixels =\n activeLayer?.radiusUnits === 'pixels' &&\n typeof activeLayer?.getRadius === 'number'\n ? activeLayer.getRadius\n : ((activeLayer?.radiusMinPixels as number | undefined) ?? 2);\n const colorScale = effectiveColorAccessor\n ? getDeckMapLayerColorScale(activeLayer, effectiveColorAccessor)\n : undefined;\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n const isHeatmapLayer = activeLayer?.['@@type'] === 'GeoArrowHeatmapLayer';\n const firstColumnName = dataOutputColumns[0]?.name;\n\n const applyConfig = useCallback(\n (nextConfig: DeckMapConfig) => {\n if (readOnly) return;\n onConfigChange(nextConfig);\n },\n [onConfigChange, readOnly],\n );\n\n const updateColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const field = patch.field ?? colorScale?.field ?? firstColumnName;\n if (!field || !effectiveColorAccessor) return;\n\n const type = patch.type ?? colorScale?.type ?? 'sequential';\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n setDeckMapLayerColorScale(\n mapConfig,\n activeLayerIndex,\n effectiveColorAccessor,\n createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n }),\n ),\n );\n };\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SettingsPanelHeader\n title=\"Map settings\"\n className=\"shrink-0 p-2\"\n actions={\n <DeckMapCodeViewToggleButton\n label={showCode ? 'Show settings' : 'View code'}\n selected={showCode}\n onClick={() =>\n setViewMode((currentViewMode) =>\n currentViewMode === 'code' ? 'settings' : 'code',\n )\n }\n />\n }\n onClose={onClose}\n closeLabel=\"Close map settings\"\n />\n\n {showCode ? (\n <DeckMapCodeViewerPanel\n value={serializedMapConfig}\n copyTooltipLabel=\"Copy map config\"\n />\n ) : (\n <ScrollArea className=\"min-h-0 flex-1 [&_[data-radix-scroll-area-viewport]>div]:!block\">\n <div className=\"flex flex-col gap-2 p-2 pt-0\">\n <Field label=\"Title\">\n <input\n value={title}\n onChange={(e) => onTitleChange(e.target.value)}\n placeholder=\"Map title\"\n disabled={readOnly}\n className=\"border-input placeholder:text-muted-foreground focus-visible:ring-ring h-8 w-full rounded-md border bg-transparent px-3 py-2 text-xs font-medium shadow-sm outline-hidden transition-colors focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </Field>\n\n <Field label=\"Dataset\" required>\n <DataTableSelector\n onChange={handleTableChange}\n tables={tables}\n value={selectedDataTable}\n disabled={readOnly}\n />\n </Field>\n\n {layers.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {layers.length > 1 && (\n <Field label=\"Layer\">\n <Select\n value={String(activeLayerIndex)}\n onValueChange={(value) => setLayerIndex(Number(value))}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {layers.map((layer, index) => (\n <SelectItem key={index} value={String(index)}>\n {String(layer.id ?? `Layer ${index + 1}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Visible</span>\n <Switch\n checked={activeLayer?.visible !== false}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n visible: checked,\n }),\n ),\n )\n }\n />\n </div>\n\n <Field label=\"Layer type\">\n <Select\n value={\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined\n }\n onValueChange={(value) =>\n applyConfig(\n setDeckMapLayerType(mapConfig, activeLayerIndex, value),\n )\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select layer type\" />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_LAYER_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n\n {(datasetSchema.isLoading || datasetSchemaErrorMessage) && (\n <div className=\"text-muted-foreground rounded-md border px-2 py-1.5 text-xs\">\n {datasetSchema.isLoading\n ? 'Inspecting dataset schema...'\n : `Dataset schema unavailable: ${datasetSchemaErrorMessage}`}\n </div>\n )}\n\n {showTripsSettings && (\n <>\n {outputColumns.length > 0 && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Timestamp column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.timestampColumn as string | undefined\n }\n onChange={(timestampColumn) =>\n applyConfig(\n setDeckMapLayerTimestampColumn(\n mapConfig,\n activeLayerIndex,\n timestampColumn,\n ),\n )\n }\n placeholder=\"Select timestamp column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n <Field\n label={`Line width: ${(activeLayer?.widthMinPixels as number | undefined) ?? 3}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[\n (activeLayer?.widthMinPixels as number | undefined) ??\n 3,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 3;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n widthMinPixels: value,\n }),\n ),\n );\n }}\n />\n </Field>\n <Field\n label={`Trail length: ${Math.round(((activeLayer?._trailLengthFactor as number | undefined) ?? 0.4) * 100)}%`}\n >\n <Slider\n min={5}\n max={100}\n step={5}\n value={[\n Math.round(\n ((activeLayer?._trailLengthFactor as\n | number\n | undefined) ?? 0.4) * 100,\n ),\n ]}\n onValueChange={(values) => {\n const value = (values[0] ?? 40) / 100;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n _trailLengthFactor: value,\n }),\n ),\n );\n }}\n />\n </Field>\n </>\n )}\n\n {isHeatmapLayer ? (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <span className=\"text-xs font-medium\">\n Color scheme (density)\n </span>\n <Field label=\"Scheme\">\n <Select\n value={detectHeatmapScheme(activeLayer?.colorRange)}\n onValueChange={(value) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n colorRange: schemeToColorRange(value),\n }),\n ),\n )\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {continuousSequentialSchemes.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n {scheme}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n onCheckedChange={(checked) => {\n if (!effectiveColorAccessor) return;\n if (checked) {\n updateColorScale({});\n return;\n }\n applyConfig(\n clearDeckMapLayerColorScale(\n mapConfig,\n activeLayerIndex,\n effectiveColorAccessor,\n ),\n );\n }}\n disabled={!firstColumnName || !effectiveColorAccessor}\n />\n </div>\n\n {effectiveColorAccessor && (\n <Field label=\"Color property\">\n <Select\n value={effectiveColorAccessor}\n onValueChange={(value) =>\n setColorAccessor(value as DeckMapLayerColorAccessor)\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {colorAccessorOptions.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n {colorScale && dataOutputColumns.length > 0 && (\n <ColumnsProvider columns={dataOutputColumns}>\n <Field label=\"Color field\" required>\n {colorScaleType === 'categorical' ? (\n <ColumnSelector.Categorical\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n ) : (\n <ColumnSelector.Quantitative\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n )}\n </Field>\n </ColumnsProvider>\n )}\n\n {colorScale && (\n <>\n <Field label=\"Scale type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n updateColorScale({\n type: value as ColorScaleConfig['type'],\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map(\n (option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ),\n )}\n </SelectContent>\n </Select>\n </Field>\n\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n updateColorScale({\n scheme: value as ColorScaleScheme,\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n {scheme}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </>\n )}\n </div>\n )}\n </div>\n )}\n\n {isHeatmapLayer && (\n <Field\n label={`Radius: ${(activeLayer?.radiusPixels as number | undefined) ?? 30}px`}\n >\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={100}\n step={1}\n value={[\n (activeLayer?.radiusPixels as number | undefined) ?? 30,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 30;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radiusPixels: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {showRadiusSetting && (\n <Field label={`Point radius: ${pointRadiusPixels}px`}>\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={50}\n step={1}\n value={[pointRadiusPixels]}\n onValueChange={(values) => {\n const value = values[0] ?? 2;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n radiusMinPixels: value,\n radiusMaxPixels: Math.max(\n value,\n (layer.radiusMaxPixels as number | undefined) ??\n value,\n ),\n };\n\n if (\n layer.radiusUnits === 'pixels' &&\n typeof layer.getRadius !== 'string'\n ) {\n nextLayer.getRadius = value;\n }\n\n return nextLayer;\n },\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {showColumnRadiusSetting && (\n <Field\n label={`Column radius: ${(activeLayer?.radius as number | undefined) ?? 50}m`}\n >\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={10000}\n step={1}\n value={[(activeLayer?.radius as number | undefined) ?? 50]}\n onValueChange={(values) => {\n const value = values[0] ?? 50;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radius: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {outputColumns.length > 0 && showGeometryColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Geometry column\" required>\n <ColumnSelector\n value={activeLayerDataset?.geometryColumn}\n onChange={(geometryColumn) =>\n applyConfig(\n setDeckMapLayerGeometryColumn(\n mapConfig,\n activeLayerIndex,\n geometryColumn,\n ),\n )\n }\n placeholder=\"Select geometry column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showH3ColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"H3 column\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.hexagonColumn as string | undefined\n }\n onChange={(hexagonColumn) =>\n applyConfig(\n setDeckMapLayerHexagonColumn(\n mapConfig,\n activeLayerIndex,\n hexagonColumn,\n ),\n )\n }\n placeholder=\"Select H3 index column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showArcColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Source geometry\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.sourceGeometryColumn as string | undefined\n }\n onChange={(sourceGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(mapConfig, activeLayerIndex, {\n sourceGeometryColumn,\n }),\n )\n }\n placeholder=\"Select source geometry...\"\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Target geometry\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.targetGeometryColumn as string | undefined\n }\n onChange={(targetGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(mapConfig, activeLayerIndex, {\n targetGeometryColumn,\n }),\n )\n }\n placeholder=\"Select target geometry...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {showArcColumnSetting && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Flat lines</span>\n <Switch\n checked={activeLayer?.getHeight === 0}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getHeight: checked ? 0 : undefined,\n }),\n ),\n )\n }\n />\n </div>\n )}\n\n {showArcColumnSetting && (\n <Field\n label={`Line width: ${(activeLayer?.widthMinPixels as number | undefined) ?? 1}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[\n (activeLayer?.widthMinPixels as number | undefined) ?? 1,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n widthMinPixels: value,\n }),\n ),\n );\n }}\n />\n </Field>\n )}\n\n {showExtrusionSettings && (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Extrusion</span>\n <Switch\n checked={Boolean(activeLayer?.extruded)}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n extruded: checked,\n getElevation: checked\n ? (layer.getElevation ?? 1)\n : layer.getElevation,\n }),\n ),\n )\n }\n />\n </div>\n\n {Boolean(activeLayer?.extruded) &&\n dataOutputColumns.length > 0 && (\n <ColumnsProvider columns={dataOutputColumns}>\n <Field label=\"Elevation column\">\n <ColumnSelector.Numeric\n value={(() => {\n const elev = activeLayer?.getElevation;\n if (\n elev &&\n typeof elev === 'object' &&\n '@@function' in (elev as object)\n ) {\n return (elev as Record<string, unknown>).field as\n | string\n | undefined;\n }\n if (\n typeof elev === 'string' &&\n elev.startsWith('@@=')\n ) {\n return elev.slice(3);\n }\n return undefined;\n })()}\n onChange={(elevationColumn) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getElevation: elevationColumn\n ? {\n '@@function': 'scale',\n field: elevationColumn,\n type: 'linear',\n domain: 'auto',\n range: [0, 200],\n }\n : undefined,\n elevationScale: layer.elevationScale ?? 1,\n }),\n ),\n )\n }\n placeholder=\"Select elevation column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {Boolean(activeLayer?.extruded) && (\n <Field\n label={`Elevation scale: ${(activeLayer?.elevationScale as number | undefined) ?? 1}x`}\n >\n <div className=\"pt-1.5\">\n <Slider\n min={0.01}\n max={100}\n step={0.01}\n value={[\n (activeLayer?.elevationScale as number | undefined) ??\n 1,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n elevationScale: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n </div>\n )}\n\n {sourceDataTable &&\n !showGeometryColumnSetting &&\n !showH3ColumnSetting &&\n !showArcColumnSetting && (\n <ColumnsProvider columns={sourceColumns}>\n <Field label=\"Latitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.latitudeColumn}\n onChange={(latitudeColumn) => {\n const longitudeColumn =\n mapConfig.fitToData?.longitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Longitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.longitudeColumn}\n onChange={(longitudeColumn) => {\n const latitudeColumn =\n mapConfig.fitToData?.latitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"MapSettings.js","sourceRoot":"","sources":["../src/MapSettings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAK,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,EACX,MAAM,EACN,UAAU,EACV,mBAAmB,EACnB,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,2BAA2B,EAAqB,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,iCAAiC,EACjC,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,kBAAkB,EAGlB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,IAAI,cAAc,EACvC,sBAAsB,IAAI,eAAe,EACzC,oBAAoB,IAAI,KAAK,EAC7B,oBAAoB,IAAI,iBAAiB,GAC1C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAElE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,aAAa,GAAyB,EAAE,CAAC;AAE/C,SAAS,kBAAkB,CACzB,MAAc;IAEd,MAAM,YAAY,GAChB,iCAAiC,CAC/B,MAAwD,CACzD,CAAC;IACJ,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,iCAAiC,CAAC,OAAO;YAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,mBAAmB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjD,gBAAgB,CACd,iCAAiC,CAAC,OAAO,CACvC,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAC9B,CACF,CACF;YACH,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,mBAAmB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACxD,gBAAgB,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAmB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,KAAK,MAAM,MAAM,IAAI,2BAA2B,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzC,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACnC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,OAAO;gBAAE,OAAO,MAAM,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAcD,SAAS,gBAAgB,CAAC,IAA8B;IACtD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,2BAA2B,CAAC;IACrC,CAAC;IACD,wEAAwE;IACxE,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,KAAK,EACL,aAAa,EACb,MAAM,EACN,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,cAAc,EACd,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GACrC,QAAQ,CAA4B,cAAc,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,UAAU,CAAC,CAAC;IAE1E,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CACH,aAAa;QACX,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,KAAK;QACpD,CAAC,CAAC,SAAS,EACf,CAAC,aAAa,EAAE,MAAM,CAAC,CACxB,CAAC;IAEF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,EAAE,EAAE;QACnB,IAAI,QAAQ;YAAE,OAAO;QACrB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,aAAa,EAAE,QAAQ,CAAC,CAC1B,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,CAAC;IACzB,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EACrC,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,KAAK,MAAM,CAAC;IACrC,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7C,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,kBAAkB,GAAG,oBAAoB;QAC7C,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,oBAAoB,CAAC;QAC5C,CAAC,CAAC,SAAS,CAAC;IAEd,2EAA2E;IAC3E,uEAAuE;IACvE,mEAAmE;IACnE,MAAM,wBAAwB,GAAG,kBAAkB,EAAE,MAAM,CAAC;IAC5D,MAAM,iBAAiB,GAAG,2BAA2B,CACnD,wBAAwB,CACzB;QACC,CAAC,CAAC,wBAAwB,CAAC,SAAS;QACpC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CACH,iBAAiB;QACf,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,KAAK;QACxD,CAAC,CAAC,SAAS,EACf,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAC5B,CAAC;IACF,MAAM,eAAe,GAAG,iBAAiB,IAAI,aAAa,CAAC;IAC3D,MAAM,aAAa,GAAG,eAAe,EAAE,OAAO,IAAI,aAAa,CAAC;IAChE,MAAM,gCAAgC,GAAG,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAO,iBAAiB;gBACtB,CAAC,CAAC,EAAC,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAC;gBACxD,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC3D,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,OAAO;YACL,SAAS,EAAE,iBAAiB;gBAC1B,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,wBAAwB,CAAC,SAAS;YACtC,GAAG,CAAC,wBAAwB,CAAC,YAAY;gBACvC,CAAC,CAAC,EAAC,YAAY,EAAE,wBAAwB,CAAC,YAAY,EAAC;gBACvD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,uBAAuB,CAAC;QAC5C,MAAM,EAAE,gCAAgC;QACxC,aAAa;KACd,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC;IAClD,MAAM,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IAC1D,MAAM,yBAAyB,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;IAE/D,MAAM,yBAAyB,GAAG,yBAAyB,CACzD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,uBAAuB,GAAG,uBAAuB,CACrD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,MAAM,oBAAoB,GAAG,8BAA8B,CACzD,WAAW,EAAE,CAAC,QAAQ,CAAC,CACxB,CAAC;IACF,MAAM,sBAAsB,GAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,aAAa,CAAC;QACnE,EAAE,KAAK,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IAC9C,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,cAAc,CAAC;IAClE,MAAM,iBAAiB,GAAG,cAAc;QACtC,CAAC,CAAC,OAAO,WAAW,EAAE,cAAc,KAAK,QAAQ;YAC/C,CAAC,CAAC,WAAW,CAAC,cAAc;YAC5B,CAAC,CAAC,CAAE,WAAW,EAAE,oBAA2C,IAAI,CAAC,CAAC;QACpE,CAAC,CAAC,WAAW,EAAE,WAAW,KAAK,QAAQ;YACnC,OAAO,WAAW,EAAE,SAAS,KAAK,QAAQ;YAC5C,CAAC,CAAC,WAAW,CAAC,SAAS;YACvB,CAAC,CAAC,CAAE,WAAW,EAAE,eAAsC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,sBAAsB;QACvC,CAAC,CAAC,yBAAyB,CAAC,WAAW,EAAE,sBAAsB,CAAC;QAChE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,cAAc,GAAG,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC;IACxD,MAAM,aAAa,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,sBAAsB,CAAC;IAC1E,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAEnD,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,UAAyB,EAAE,EAAE;QAC5B,IAAI,QAAQ;YAAE,OAAO;QACrB,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,cAAc,EAAE,QAAQ,CAAC,CAC3B,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,KAIzB,EAAE,EAAE;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,EAAE,KAAK,IAAI,eAAe,CAAC;QAClE,IAAI,CAAC,KAAK,IAAI,CAAC,sBAAsB;YAAE,OAAO;QAE9C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,IAAI,IAAI,YAAY,CAAC;QAC5D,MAAM,MAAM,GACV,KAAK,CAAC,MAAM;YACZ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,IAAI;gBAC5C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE1B,WAAW,CACT,yBAAyB,CACvB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,CAAC;YAC3B,KAAK;YACL,IAAI;YACJ,MAAM;YACN,KAAK,EAAE,KAAK;SACb,CAAC,CACH,CACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,mBAAmB,IAClB,KAAK,EAAC,cAAc,EACpB,SAAS,EAAC,cAAc,EACxB,OAAO,EACL,KAAC,2BAA2B,IAC1B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAC/C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CACZ,WAAW,CAAC,CAAC,eAAe,EAAE,EAAE,CAC9B,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CACjD,GAEH,EAEJ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAC,oBAAoB,GAC/B,EAED,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,sBAAsB,IACrB,KAAK,EAAE,mBAAmB,EAC1B,gBAAgB,EAAC,iBAAiB,GAClC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,SAAS,EAAC,iEAAiE,YACrF,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAClB,gBACE,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9C,WAAW,EAAC,WAAW,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,kQAAkQ,GAC5Q,GACI,EAER,KAAC,KAAK,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,kBAC7B,KAAC,iBAAiB,IAChB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,QAAQ,GAClB,GACI,EAEP,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,eAAK,SAAS,EAAC,qBAAqB,aACjC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,KAAC,KAAK,IAAC,KAAK,EAAC,OAAO,YAClB,MAAC,MAAM,IACL,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,aAEtD,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,UAAU,IAAa,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,YACzC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC,IAD1B,KAAK,CAET,CACd,CAAC,GACY,IACT,GACH,CACT,EAED,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,wBAAe,EACpD,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,EAAE,OAAO,KAAK,KAAK,EACvC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gDACV,GAAG,KAAK;gDACR,OAAO,EAAE,OAAO;6CACjB,CAAC,CACH,CACF,GAEH,IACE,EAEN,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,YACvB,MAAC,MAAM,IACL,KAAK,EACH,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ;4CACzC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;4CACvB,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,WAAW,CACT,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,CACxD,aAGH,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,IAAC,WAAW,EAAC,mBAAmB,GAAG,GACjC,EAChB,KAAC,aAAa,cACX,2BAA2B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC3C,KAAC,UAAU,IAAoB,KAAK,EAAE,MAAM,CAAC,KAAK,YAC/C,MAAM,CAAC,KAAK,IADE,MAAM,CAAC,KAAK,CAEhB,CACd,CAAC,GACY,IACT,GACH,EAEP,CAAC,aAAa,CAAC,SAAS,IAAI,yBAAyB,CAAC,IAAI,CACzD,cAAK,SAAS,EAAC,6DAA6D,YACzE,aAAa,CAAC,SAAS;wCACtB,CAAC,CAAC,8BAA8B;wCAChC,CAAC,CAAC,+BAA+B,yBAAyB,EAAE,GAC1D,CACP,EAEA,iBAAiB,IAAI,CACpB,8BACG,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,EAAC,QAAQ,kBACtC,KAAC,cAAc,IACb,KAAK,EAED,WAAW,EAAE,gBAId,EAAE,eAAqC,EAE1C,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE,CAC5B,WAAW,CACT,8BAA8B,CAC5B,SAAS,EACT,gBAAgB,EAChB,eAAe,CAChB,CACF,EAEH,WAAW,EAAC,4BAA4B,EACxC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EACD,KAAC,KAAK,IACJ,KAAK,EAAE,eAAgB,WAAW,EAAE,cAAqC,IAAI,CAAC,IAAI,YAElF,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;oDACJ,WAAW,EAAE,cAAqC;wDACjD,CAAC;iDACJ,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;oDACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oDAC7B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wDACV,GAAG,KAAK;wDACR,cAAc,EAAE,KAAK;qDACtB,CAAC,CACH,CACF,CAAC;gDACJ,CAAC,GACD,GACI,EACR,KAAC,KAAK,IACJ,KAAK,EAAE,iBAAiB,IAAI,CAAC,KAAK,CAAC,CAAE,WAAW,EAAE,kBAAyC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,YAE7G,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;oDACL,IAAI,CAAC,KAAK,CACR,CAAE,WAAW,EAAE,kBAED,IAAI,GAAG,CAAC,GAAG,GAAG,CAC7B;iDACF,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;oDACxB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;oDACtC,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wDACV,GAAG,KAAK;wDACR,kBAAkB,EAAE,KAAK;qDAC1B,CAAC,CACH,CACF,CAAC;gDACJ,CAAC,GACD,GACI,IACP,CACJ,EAEA,cAAc,CAAC,CAAC,CAAC,CAChB,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAM,SAAS,EAAC,qBAAqB,uCAE9B,EACP,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,YACnB,MAAC,MAAM,IACL,KAAK,EAAE,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,EACnD,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oDACV,GAAG,KAAK;oDACR,UAAU,EAAE,kBAAkB,CAAC,KAAK,CAAC;iDACtC,CAAC,CACH,CACF,aAGH,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,2BAA2B,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC3C,KAAC,UAAU,IAAc,KAAK,EAAE,MAAM,YACnC,MAAM,IADQ,MAAM,CAEV,CACd,CAAC,GACY,IACT,GACH,IACJ,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,4BAAmB,EACxD,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAC5B,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE;wDAC3B,IAAI,CAAC,sBAAsB;4DAAE,OAAO;wDACpC,IAAI,OAAO,EAAE,CAAC;4DACZ,gBAAgB,CAAC,EAAE,CAAC,CAAC;4DACrB,OAAO;wDACT,CAAC;wDACD,WAAW,CACT,2BAA2B,CACzB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,CACvB,CACF,CAAC;oDACJ,CAAC,EACD,QAAQ,EAAE,CAAC,eAAe,IAAI,CAAC,sBAAsB,GACrD,IACE,EAEL,sBAAsB,IAAI,CACzB,KAAC,KAAK,IAAC,KAAK,EAAC,gBAAgB,YAC3B,MAAC,MAAM,IACL,KAAK,EAAE,sBAAsB,EAC7B,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,gBAAgB,CAAC,KAAkC,CAAC,aAGtD,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,oBAAoB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACpC,KAAC,UAAU,IAET,KAAK,EAAE,MAAM,CAAC,KAAK,YAElB,MAAM,CAAC,KAAK,IAHR,MAAM,CAAC,KAAK,CAIN,CACd,CAAC,GACY,IACT,GACH,CACT,EAEA,UAAU,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC7C,KAAC,eAAe,IAAC,OAAO,EAAE,iBAAiB,YACzC,KAAC,KAAK,IAAC,KAAK,EAAC,aAAa,EAAC,QAAQ,kBAChC,cAAc,KAAK,aAAa,CAAC,CAAC,CAAC,CAClC,KAAC,cAAc,CAAC,WAAW,IACzB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAC,KAAK,EAAC,CAAC,EAC9C,QAAQ,EAAE,QAAQ,GAClB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,CAAC,YAAY,IAC1B,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAC,KAAK,EAAC,CAAC,EAC9C,QAAQ,EAAE,QAAQ,GAClB,CACH,GACK,GACQ,CACnB,EAEA,UAAU,IAAI,CACb,8BACE,KAAC,KAAK,IAAC,KAAK,EAAC,YAAY,YACvB,MAAC,MAAM,IACL,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,gBAAgB,CAAC;4DACf,IAAI,EAAE,KAAiC;yDACxC,CAAC,aAGJ,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,iCAAiC,CAAC,GAAG,CACpC,CAAC,MAAM,EAAE,EAAE,CAAC,CACV,KAAC,UAAU,IAET,KAAK,EAAE,MAAM,CAAC,KAAK,YAElB,MAAM,CAAC,KAAK,IAHR,MAAM,CAAC,KAAK,CAIN,CACd,CACF,GACa,IACT,GACH,EAER,KAAC,KAAK,IAAC,KAAK,EAAC,QAAQ,YACnB,MAAC,MAAM,IACL,KAAK,EAAE,UAAU,CAAC,MAAM,EACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,gBAAgB,CAAC;4DACf,MAAM,EAAE,KAAyB;yDAClC,CAAC,aAGJ,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,YAC/B,KAAC,WAAW,KAAG,GACD,EAChB,KAAC,aAAa,cACX,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC7B,KAAC,UAAU,IAAc,KAAK,EAAE,MAAM,YACnC,MAAM,IADQ,MAAM,CAEV,CACd,CAAC,GACY,IACT,GACH,IACP,CACJ,IACG,CACP,IACG,CACP,EAEA,cAAc,IAAI,CACjB,KAAC,KAAK,IACJ,KAAK,EAAE,WAAY,WAAW,EAAE,YAAmC,IAAI,EAAE,IAAI,YAE7E,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;wCACJ,WAAW,EAAE,YAAmC,IAAI,EAAE;qCACxD,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;wCACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wCAC9B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4CACV,GAAG,KAAK;4CACR,YAAY,EAAE,KAAK;yCACpB,CAAC,CACH,CACF,CAAC;oCACJ,CAAC,GACD,GACE,GACA,CACT,EAEA,iBAAiB,IAAI,CACpB,KAAC,KAAK,IAAC,KAAK,EAAE,iBAAiB,iBAAiB,IAAI,YAClD,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAC1B,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;wCACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wCAC7B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;4CACR,MAAM,SAAS,GACb,KAAK,CAAC,QAAQ,CAAC,KAAK,cAAc;gDAChC,CAAC,CAAC;oDACE,GAAG,KAAK;oDACR,gBAAgB,EAAE,QAAQ;oDAC1B,oBAAoB,EAAE,KAAK;oDAC3B,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAC5B,KAAK,EACJ,KAAK,CAAC,oBAEO,IAAI,KAAK,CACxB;oDACD,cAAc,EAAE,KAAK;iDACtB;gDACH,CAAC,CAAC;oDACE,GAAG,KAAK;oDACR,eAAe,EAAE,KAAK;oDACtB,eAAe,EAAE,IAAI,CAAC,GAAG,CACvB,KAAK,EACJ,KAAK,CAAC,eAEO,IAAI,KAAK,CACxB;iDACF,CAAC;4CAER,IACE,KAAK,CAAC,QAAQ,CAAC,KAAK,cAAc;gDAClC,KAAK,CAAC,WAAW,KAAK,QAAQ;gDAC9B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EACnC,CAAC;gDACD,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC;4CAC9B,CAAC;4CAED,OAAO,SAAS,CAAC;wCACnB,CAAC,CACF,CACF,CAAC;oCACJ,CAAC,GACD,GACE,GACA,CACT,EAEA,uBAAuB,IAAI,CAC1B,KAAC,KAAK,IACJ,KAAK,EAAE,kBAAmB,WAAW,EAAE,MAA6B,IAAI,EAAE,GAAG,YAE7E,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAE,WAAW,EAAE,MAA6B,IAAI,EAAE,CAAC,EAC1D,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;wCACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;wCAC9B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;4CACV,GAAG,KAAK;4CACR,MAAM,EAAE,KAAK;yCACd,CAAC,CACH,CACF,CAAC;oCACJ,CAAC,GACD,GACE,GACA,CACT,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,yBAAyB,IAAI,CACxD,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EAAE,kBAAkB,EAAE,cAAc,EACzC,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE,CAC3B,WAAW,CACT,6BAA6B,CAC3B,SAAS,EACT,gBAAgB,EAChB,cAAc,CACf,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,CAClD,KAAC,eAAe,IAAC,OAAO,EAAE,aAAa,YACrC,KAAC,KAAK,IAAC,KAAK,EAAC,WAAW,EAAC,QAAQ,kBAC/B,KAAC,cAAc,IACb,KAAK,EACF,WAAW,EAAE,gBAA4C;wCACxD,EAAE,aAAmC,EAEzC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,CAC1B,WAAW,CACT,4BAA4B,CAC1B,SAAS,EACT,gBAAgB,EAChB,aAAa,CACd,CACF,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEA,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,IAAI,CACnD,MAAC,eAAe,IAAC,OAAO,EAAE,aAAa,aACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EACF,WAAW,EAAE,gBAA4C;4CACxD,EAAE,oBAA0C,EAEhD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,EAAE,CACjC,WAAW,CACT,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,EAAE;4CACrD,oBAAoB;yCACrB,CAAC,CACH,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,IACb,KAAK,EACF,WAAW,EAAE,gBAA4C;4CACxD,EAAE,oBAA0C,EAEhD,QAAQ,EAAE,CAAC,oBAAoB,EAAE,EAAE,CACjC,WAAW,CACT,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,EAAE;4CACrD,oBAAoB;yCACrB,CAAC,CACH,EAEH,WAAW,EAAC,2BAA2B,EACvC,QAAQ,EAAE,QAAQ,GAClB,GACI,IACQ,CACnB,EAEA,oBAAoB,IAAI,CACvB,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,qBAAqB,2BAAkB,EACvD,KAAC,MAAM,IACL,OAAO,EAAE,WAAW,EAAE,SAAS,KAAK,CAAC,EACrC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wCACV,GAAG,KAAK;wCACR,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;qCACnC,CAAC,CACH,CACF,GAEH,IACE,CACP,EAEA,oBAAoB,IAAI,CACvB,KAAC,KAAK,IACJ,KAAK,EAAE,eAAgB,WAAW,EAAE,cAAqC,IAAI,CAAC,IAAI,YAElF,KAAC,MAAM,IACL,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,CAAC,EACP,KAAK,EAAE;oCACJ,WAAW,EAAE,cAAqC,IAAI,CAAC;iCACzD,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;oCACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oCAC7B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wCACV,GAAG,KAAK;wCACR,cAAc,EAAE,KAAK;qCACtB,CAAC,CACH,CACF,CAAC;gCACJ,CAAC,GACD,GACI,CACT,EAEA,qBAAqB,IAAI,CACxB,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,yCAAyC,aACtD,eAAM,SAAS,EAAC,qBAAqB,0BAAiB,EACtD,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,EACvC,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gDACV,GAAG,KAAK;gDACR,QAAQ,EAAE,OAAO;gDACjB,YAAY,EAAE,OAAO;oDACnB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;oDAC3B,CAAC,CAAC,KAAK,CAAC,YAAY;6CACvB,CAAC,CACH,CACF,GAEH,IACE,EAEL,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;oCAC7B,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,KAAC,eAAe,IAAC,OAAO,EAAE,iBAAiB,YACzC,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,YAC7B,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,CAAC,GAAG,EAAE;gDACX,MAAM,IAAI,GAAG,WAAW,EAAE,YAAY,CAAC;gDACvC,IACE,IAAI;oDACJ,OAAO,IAAI,KAAK,QAAQ;oDACxB,YAAY,IAAK,IAAe,EAChC,CAAC;oDACD,OAAQ,IAAgC,CAAC,KAE5B,CAAC;gDAChB,CAAC;gDACD,IACE,OAAO,IAAI,KAAK,QAAQ;oDACxB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EACtB,CAAC;oDACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gDACvB,CAAC;gDACD,OAAO,SAAS,CAAC;4CACnB,CAAC,CAAC,EAAE,EACJ,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE,CAC5B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gDACV,GAAG,KAAK;gDACR,YAAY,EAAE,eAAe;oDAC3B,CAAC,CAAC;wDACE,YAAY,EAAE,OAAO;wDACrB,KAAK,EAAE,eAAe;wDACtB,IAAI,EAAE,QAAQ;wDACd,MAAM,EAAE,MAAM;wDACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;qDAChB;oDACH,CAAC,CAAC,SAAS;gDACb,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC;6CAC1C,CAAC,CACH,CACF,EAEH,WAAW,EAAC,4BAA4B,EACxC,QAAQ,EAAE,QAAQ,GAClB,GACI,GACQ,CACnB,EAEF,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CACjC,KAAC,KAAK,IACJ,KAAK,EAAE,oBAAqB,WAAW,EAAE,cAAqC,IAAI,CAAC,GAAG,YAEtF,cAAK,SAAS,EAAC,QAAQ,YACrB,KAAC,MAAM,IACL,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,KAAK,EAAE;gDACJ,WAAW,EAAE,cAAqC;oDACjD,CAAC;6CACJ,EACD,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE;gDACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gDAC7B,WAAW,CACT,kBAAkB,CAChB,SAAS,EACT,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oDACV,GAAG,KAAK;oDACR,cAAc,EAAE,KAAK;iDACtB,CAAC,CACH,CACF,CAAC;4CACJ,CAAC,GACD,GACE,GACA,CACT,IACG,CACP,EAEA,eAAe;4BACd,CAAC,yBAAyB;4BAC1B,CAAC,mBAAmB;4BACpB,CAAC,oBAAoB,IAAI,CACvB,MAAC,eAAe,IAAC,OAAO,EAAE,aAAa,aACrC,KAAC,KAAK,IAAC,KAAK,EAAC,iBAAiB,EAAC,QAAQ,kBACrC,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,EAC1C,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE;4CAC3B,MAAM,eAAe,GACnB,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC;4CACvC,WAAW,CACT,2BAA2B,CACzB,EAAC,MAAM,EAAE,SAAS,EAAC,EACnB,eAAe,EACf,eAAe,EACf,cAAc,CACE,CACnB,CAAC;wCACJ,CAAC,EACD,QAAQ,EAAE,QAAQ,GAClB,GACI,EACR,KAAC,KAAK,IAAC,KAAK,EAAC,kBAAkB,EAAC,QAAQ,kBACtC,KAAC,cAAc,CAAC,OAAO,IACrB,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,eAAe,EAC3C,QAAQ,EAAE,CAAC,eAAe,EAAE,EAAE;4CAC5B,MAAM,cAAc,GAClB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;4CACtC,WAAW,CACT,2BAA2B,CACzB,EAAC,MAAM,EAAE,SAAS,EAAC,EACnB,eAAe,EACf,eAAe,EACf,cAAc,CACE,CACnB,CAAC;wCACJ,CAAC,EACD,QAAQ,EAAE,QAAQ,GAClB,GACI,IACQ,CACnB,IACC,GACK,CACd,IACG,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {FC, useCallback, useMemo, useState} from 'react';\nimport {\n getTableIdentity,\n resolveTableReference,\n type DataTable,\n} from '@sqlrooms/duckdb';\nimport {\n binnedNumericSchemes,\n categoricalSchemes,\n continuousDivergingSchemes,\n continuousSequentialSchemes,\n continuousSequentialInterpolators,\n parseColorString,\n} from '@sqlrooms/color-scales';\nimport type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Slider,\n ScrollArea,\n SettingsPanelHeader,\n Switch,\n} from '@sqlrooms/ui';\nimport {isDeckMapTableDatasetSource, type DeckMapConfig} from './mapConfig';\nimport {\n clearDeckMapLayerColorScale,\n createDeckMapLayerColorScale,\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS,\n DECK_MAP_LAYER_TYPE_OPTIONS,\n getDeckMapColorAccessorOptions,\n getDeckMapLayerDatasetId,\n getDeckMapLayerColorScale,\n getDeckMapLayerRecords,\n setDeckMapLayerColorScale,\n setDeckMapLayerGeometryColumn,\n setDeckMapLayerHexagonColumn,\n setDeckMapLayerArcColumns,\n setDeckMapLayerTimestampColumn,\n setDeckMapLayerType,\n updateDeckMapLayer,\n type DeckMapLayerColorAccessor,\n type DeckMapLayerRecord,\n usesGeometryColumnSetting,\n usesH3ColumnSetting,\n usesArcColumnSetting,\n usesRadiusSetting,\n usesColumnRadiusSetting,\n usesTripsSettings,\n usesExtrusionSettings,\n} from './mapLayerConfigUtils';\nimport {\n DeckMapCodeViewerPanel,\n DeckMapCodeViewToggleButton,\n DeckMapColumnSelector as ColumnSelector,\n DeckMapColumnsProvider as ColumnsProvider,\n DeckMapSettingsField as Field,\n DeckMapTableSelector as DataTableSelector,\n} from './MapSettingsControls';\nimport {regenerateMapConfigForTable} from './mapConfigUtils';\nimport {useDeckMapDatasetSchema} from './useDeckMapDatasetSchema';\n\nconst HEATMAP_COLOR_STEPS = 6;\nconst EMPTY_COLUMNS: DataTable['columns'] = [];\n\nfunction schemeToColorRange(\n scheme: string,\n): Array<[number, number, number, number]> {\n const interpolator =\n continuousSequentialInterpolators[\n scheme as keyof typeof continuousSequentialInterpolators\n ];\n if (!interpolator) {\n return continuousSequentialInterpolators.Viridis\n ? Array.from({length: HEATMAP_COLOR_STEPS}, (_, i) =>\n parseColorString(\n continuousSequentialInterpolators.Viridis(\n i / (HEATMAP_COLOR_STEPS - 1),\n ),\n ),\n )\n : [];\n }\n return Array.from({length: HEATMAP_COLOR_STEPS}, (_, i) =>\n parseColorString(interpolator(i / (HEATMAP_COLOR_STEPS - 1))),\n );\n}\n\nfunction detectHeatmapScheme(colorRange: unknown): string {\n if (!Array.isArray(colorRange) || colorRange.length === 0) return 'Viridis';\n for (const scheme of continuousSequentialSchemes) {\n const sampled = schemeToColorRange(scheme);\n if (sampled.length === colorRange.length) {\n const matches = sampled.every((color, idx) => {\n const actual = colorRange[idx];\n if (!Array.isArray(actual)) return false;\n return (\n Math.abs(color[0] - actual[0]) < 2 &&\n Math.abs(color[1] - actual[1]) < 2 &&\n Math.abs(color[2] - actual[2]) < 2\n );\n });\n if (matches) return scheme;\n }\n }\n return 'Viridis';\n}\n\nexport interface DeckMapSettingsPanelProps {\n title: string;\n selectedTable?: string;\n config: DeckMapConfig;\n tables: DataTable[];\n onClose?: () => void;\n onTableChange: (table: DataTable) => void;\n onTitleChange: (title: string) => void;\n onConfigChange: (config: DeckMapConfig) => void;\n readOnly?: boolean;\n}\n\nfunction getSchemeOptions(type: ColorScaleConfig['type']) {\n if (type === 'categorical') {\n return categoricalSchemes;\n }\n if (type === 'diverging') {\n return continuousDivergingSchemes;\n }\n if (type === 'sequential') {\n return continuousSequentialSchemes;\n }\n // Quantile/quantize/threshold: ColorBrewer only (Viridis → sequential).\n return binnedNumericSchemes;\n}\n\nexport const DeckMapSettingsPanel: FC<DeckMapSettingsPanelProps> = ({\n title,\n selectedTable,\n config,\n tables,\n onClose,\n onTableChange,\n onTitleChange,\n onConfigChange,\n readOnly,\n}) => {\n const [layerIndex, setLayerIndex] = useState(0);\n const [colorAccessor, setColorAccessor] =\n useState<DeckMapLayerColorAccessor>('getFillColor');\n const [viewMode, setViewMode] = useState<'settings' | 'code'>('settings');\n\n const selectedDataTable = useMemo(\n () =>\n selectedTable\n ? resolveTableReference(tables, selectedTable).table\n : undefined,\n [selectedTable, tables],\n );\n\n const handleTableChange = useCallback(\n (table: DataTable) => {\n if (readOnly) return;\n onTableChange(table);\n },\n [onTableChange, readOnly],\n );\n\n const mapConfig = config;\n const serializedMapConfig = useMemo(\n () => JSON.stringify(config, null, 2),\n [config],\n );\n const showCode = viewMode === 'code';\n const layers = getDeckMapLayerRecords(mapConfig);\n const activeLayerIndex = Math.min(layerIndex, Math.max(layers.length - 1, 0));\n const activeLayer = layers[activeLayerIndex];\n const activeLayerDatasetId = getDeckMapLayerDatasetId(activeLayer);\n const activeLayerDataset = activeLayerDatasetId\n ? mapConfig.datasets?.[activeLayerDatasetId]\n : undefined;\n\n // Resolve the structured source table separately from the compiled dataset\n // output. Coordinate selectors edit the source transform, while render\n // bindings such as geometry/color/elevation target output columns.\n const activeLayerDatasetSource = activeLayerDataset?.source;\n const fallbackTableName = isDeckMapTableDatasetSource(\n activeLayerDatasetSource,\n )\n ? activeLayerDatasetSource.tableName\n : undefined;\n const fallbackTable = useMemo(\n () =>\n fallbackTableName\n ? resolveTableReference(tables, fallbackTableName).table\n : undefined,\n [fallbackTableName, tables],\n );\n const sourceDataTable = selectedDataTable ?? fallbackTable;\n const sourceColumns = sourceDataTable?.columns ?? EMPTY_COLUMNS;\n const resolvedActiveLayerDatasetSource = useMemo(() => {\n if (!activeLayerDatasetSource) {\n return selectedDataTable\n ? {tableName: getTableIdentity(selectedDataTable.table)}\n : undefined;\n }\n if (!isDeckMapTableDatasetSource(activeLayerDatasetSource)) {\n return activeLayerDatasetSource;\n }\n\n return {\n tableName: selectedDataTable\n ? getTableIdentity(selectedDataTable.table)\n : activeLayerDatasetSource.tableName,\n ...(activeLayerDatasetSource.transformSql\n ? {transformSql: activeLayerDatasetSource.transformSql}\n : {}),\n };\n }, [activeLayerDatasetSource, selectedDataTable]);\n const datasetSchema = useDeckMapDatasetSchema({\n source: resolvedActiveLayerDatasetSource,\n sourceColumns,\n });\n const outputColumns = datasetSchema.outputColumns;\n const dataOutputColumns = datasetSchema.dataOutputColumns;\n const datasetSchemaErrorMessage = datasetSchema.error?.message;\n\n const showGeometryColumnSetting = usesGeometryColumnSetting(\n activeLayer?.['@@type'],\n );\n const showH3ColumnSetting = usesH3ColumnSetting(activeLayer?.['@@type']);\n const showArcColumnSetting = usesArcColumnSetting(activeLayer?.['@@type']);\n const showRadiusSetting = usesRadiusSetting(activeLayer?.['@@type']);\n const showColumnRadiusSetting = usesColumnRadiusSetting(\n activeLayer?.['@@type'],\n );\n const showTripsSettings = usesTripsSettings(activeLayer?.['@@type']);\n const showExtrusionSettings = usesExtrusionSettings(activeLayer?.['@@type']);\n const colorAccessorOptions = getDeckMapColorAccessorOptions(\n activeLayer?.['@@type'],\n );\n const effectiveColorAccessor =\n colorAccessorOptions.find((option) => option.value === colorAccessor)\n ?.value ?? colorAccessorOptions[0]?.value;\n const isGeoJsonLayer = activeLayer?.['@@type'] === 'GeoJsonLayer';\n const pointRadiusPixels = isGeoJsonLayer\n ? typeof activeLayer?.getPointRadius === 'number'\n ? activeLayer.getPointRadius\n : ((activeLayer?.pointRadiusMinPixels as number | undefined) ?? 2)\n : activeLayer?.radiusUnits === 'pixels' &&\n typeof activeLayer?.getRadius === 'number'\n ? activeLayer.getRadius\n : ((activeLayer?.radiusMinPixels as number | undefined) ?? 2);\n const colorScale = effectiveColorAccessor\n ? getDeckMapLayerColorScale(activeLayer, effectiveColorAccessor)\n : undefined;\n const colorScaleType = colorScale?.type ?? 'sequential';\n const schemeOptions = getSchemeOptions(colorScaleType);\n const isHeatmapLayer = activeLayer?.['@@type'] === 'GeoArrowHeatmapLayer';\n const firstColumnName = dataOutputColumns[0]?.name;\n\n const applyConfig = useCallback(\n (nextConfig: DeckMapConfig) => {\n if (readOnly) return;\n onConfigChange(nextConfig);\n },\n [onConfigChange, readOnly],\n );\n\n const updateColorScale = (patch: {\n field?: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n }) => {\n const field = patch.field ?? colorScale?.field ?? firstColumnName;\n if (!field || !effectiveColorAccessor) return;\n\n const type = patch.type ?? colorScale?.type ?? 'sequential';\n const scheme =\n patch.scheme ??\n (patch.type && patch.type !== colorScale?.type\n ? undefined\n : colorScale?.scheme);\n\n applyConfig(\n setDeckMapLayerColorScale(\n mapConfig,\n activeLayerIndex,\n effectiveColorAccessor,\n createDeckMapLayerColorScale({\n field,\n type,\n scheme,\n title: field,\n }),\n ),\n );\n };\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SettingsPanelHeader\n title=\"Map settings\"\n className=\"shrink-0 p-2\"\n actions={\n <DeckMapCodeViewToggleButton\n label={showCode ? 'Show settings' : 'View code'}\n selected={showCode}\n onClick={() =>\n setViewMode((currentViewMode) =>\n currentViewMode === 'code' ? 'settings' : 'code',\n )\n }\n />\n }\n onClose={onClose}\n closeLabel=\"Close map settings\"\n />\n\n {showCode ? (\n <DeckMapCodeViewerPanel\n value={serializedMapConfig}\n copyTooltipLabel=\"Copy map config\"\n />\n ) : (\n <ScrollArea className=\"min-h-0 flex-1 [&_[data-radix-scroll-area-viewport]>div]:!block\">\n <div className=\"flex flex-col gap-2 p-2 pt-0\">\n <Field label=\"Title\">\n <input\n value={title}\n onChange={(e) => onTitleChange(e.target.value)}\n placeholder=\"Map title\"\n disabled={readOnly}\n className=\"border-input placeholder:text-muted-foreground focus-visible:ring-ring h-8 w-full rounded-md border bg-transparent px-3 py-2 text-xs font-medium shadow-sm outline-hidden transition-colors focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50\"\n />\n </Field>\n\n <Field label=\"Dataset\" required>\n <DataTableSelector\n onChange={handleTableChange}\n tables={tables}\n value={selectedDataTable}\n disabled={readOnly}\n />\n </Field>\n\n {layers.length > 0 && (\n <div className=\"flex flex-col gap-3\">\n {layers.length > 1 && (\n <Field label=\"Layer\">\n <Select\n value={String(activeLayerIndex)}\n onValueChange={(value) => setLayerIndex(Number(value))}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {layers.map((layer, index) => (\n <SelectItem key={index} value={String(index)}>\n {String(layer.id ?? `Layer ${index + 1}`)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Visible</span>\n <Switch\n checked={activeLayer?.visible !== false}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n visible: checked,\n }),\n ),\n )\n }\n />\n </div>\n\n <Field label=\"Layer type\">\n <Select\n value={\n typeof activeLayer?.['@@type'] === 'string'\n ? activeLayer['@@type']\n : undefined\n }\n onValueChange={(value) =>\n applyConfig(\n setDeckMapLayerType(mapConfig, activeLayerIndex, value),\n )\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Select layer type\" />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_LAYER_TYPE_OPTIONS.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n\n {(datasetSchema.isLoading || datasetSchemaErrorMessage) && (\n <div className=\"text-muted-foreground rounded-md border px-2 py-1.5 text-xs\">\n {datasetSchema.isLoading\n ? 'Inspecting dataset schema...'\n : `Dataset schema unavailable: ${datasetSchemaErrorMessage}`}\n </div>\n )}\n\n {showTripsSettings && (\n <>\n {outputColumns.length > 0 && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Timestamp column\" required>\n <ColumnSelector\n value={\n (\n activeLayer?._sqlroomsBinding as Record<\n string,\n unknown\n >\n )?.timestampColumn as string | undefined\n }\n onChange={(timestampColumn) =>\n applyConfig(\n setDeckMapLayerTimestampColumn(\n mapConfig,\n activeLayerIndex,\n timestampColumn,\n ),\n )\n }\n placeholder=\"Select timestamp column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n <Field\n label={`Line width: ${(activeLayer?.widthMinPixels as number | undefined) ?? 3}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[\n (activeLayer?.widthMinPixels as number | undefined) ??\n 3,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 3;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n widthMinPixels: value,\n }),\n ),\n );\n }}\n />\n </Field>\n <Field\n label={`Trail length: ${Math.round(((activeLayer?._trailLengthFactor as number | undefined) ?? 0.4) * 100)}%`}\n >\n <Slider\n min={5}\n max={100}\n step={5}\n value={[\n Math.round(\n ((activeLayer?._trailLengthFactor as\n | number\n | undefined) ?? 0.4) * 100,\n ),\n ]}\n onValueChange={(values) => {\n const value = (values[0] ?? 40) / 100;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n _trailLengthFactor: value,\n }),\n ),\n );\n }}\n />\n </Field>\n </>\n )}\n\n {isHeatmapLayer ? (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <span className=\"text-xs font-medium\">\n Color scheme (density)\n </span>\n <Field label=\"Scheme\">\n <Select\n value={detectHeatmapScheme(activeLayer?.colorRange)}\n onValueChange={(value) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n colorRange: schemeToColorRange(value),\n }),\n ),\n )\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {continuousSequentialSchemes.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n {scheme}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </div>\n ) : (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Color scale</span>\n <Switch\n checked={Boolean(colorScale)}\n onCheckedChange={(checked) => {\n if (!effectiveColorAccessor) return;\n if (checked) {\n updateColorScale({});\n return;\n }\n applyConfig(\n clearDeckMapLayerColorScale(\n mapConfig,\n activeLayerIndex,\n effectiveColorAccessor,\n ),\n );\n }}\n disabled={!firstColumnName || !effectiveColorAccessor}\n />\n </div>\n\n {effectiveColorAccessor && (\n <Field label=\"Color property\">\n <Select\n value={effectiveColorAccessor}\n onValueChange={(value) =>\n setColorAccessor(value as DeckMapLayerColorAccessor)\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {colorAccessorOptions.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n )}\n\n {colorScale && dataOutputColumns.length > 0 && (\n <ColumnsProvider columns={dataOutputColumns}>\n <Field label=\"Color field\" required>\n {colorScaleType === 'categorical' ? (\n <ColumnSelector.Categorical\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n ) : (\n <ColumnSelector.Quantitative\n value={colorScale.field}\n onChange={(field) => updateColorScale({field})}\n disabled={readOnly}\n />\n )}\n </Field>\n </ColumnsProvider>\n )}\n\n {colorScale && (\n <>\n <Field label=\"Scale type\">\n <Select\n value={colorScaleType}\n onValueChange={(value) =>\n updateColorScale({\n type: value as ColorScaleConfig['type'],\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.map(\n (option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n >\n {option.label}\n </SelectItem>\n ),\n )}\n </SelectContent>\n </Select>\n </Field>\n\n <Field label=\"Scheme\">\n <Select\n value={colorScale.scheme}\n onValueChange={(value) =>\n updateColorScale({\n scheme: value as ColorScaleScheme,\n })\n }\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {schemeOptions.map((scheme) => (\n <SelectItem key={scheme} value={scheme}>\n {scheme}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </Field>\n </>\n )}\n </div>\n )}\n </div>\n )}\n\n {isHeatmapLayer && (\n <Field\n label={`Radius: ${(activeLayer?.radiusPixels as number | undefined) ?? 30}px`}\n >\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={100}\n step={1}\n value={[\n (activeLayer?.radiusPixels as number | undefined) ?? 30,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 30;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radiusPixels: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {showRadiusSetting && (\n <Field label={`Point radius: ${pointRadiusPixels}px`}>\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={50}\n step={1}\n value={[pointRadiusPixels]}\n onValueChange={(values) => {\n const value = values[0] ?? 2;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => {\n const nextLayer: DeckMapLayerRecord =\n layer['@@type'] === 'GeoJsonLayer'\n ? {\n ...layer,\n pointRadiusUnits: 'pixels',\n pointRadiusMinPixels: value,\n pointRadiusMaxPixels: Math.max(\n value,\n (layer.pointRadiusMaxPixels as\n | number\n | undefined) ?? value,\n ),\n getPointRadius: value,\n }\n : {\n ...layer,\n radiusMinPixels: value,\n radiusMaxPixels: Math.max(\n value,\n (layer.radiusMaxPixels as\n | number\n | undefined) ?? value,\n ),\n };\n\n if (\n layer['@@type'] !== 'GeoJsonLayer' &&\n layer.radiusUnits === 'pixels' &&\n typeof layer.getRadius !== 'string'\n ) {\n nextLayer.getRadius = value;\n }\n\n return nextLayer;\n },\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {showColumnRadiusSetting && (\n <Field\n label={`Column radius: ${(activeLayer?.radius as number | undefined) ?? 50}m`}\n >\n <div className=\"pt-0.5\">\n <Slider\n min={1}\n max={10000}\n step={1}\n value={[(activeLayer?.radius as number | undefined) ?? 50]}\n onValueChange={(values) => {\n const value = values[0] ?? 50;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n radius: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n\n {outputColumns.length > 0 && showGeometryColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Geometry column\" required>\n <ColumnSelector\n value={activeLayerDataset?.geometryColumn}\n onChange={(geometryColumn) =>\n applyConfig(\n setDeckMapLayerGeometryColumn(\n mapConfig,\n activeLayerIndex,\n geometryColumn,\n ),\n )\n }\n placeholder=\"Select geometry column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showH3ColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"H3 column\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.hexagonColumn as string | undefined\n }\n onChange={(hexagonColumn) =>\n applyConfig(\n setDeckMapLayerHexagonColumn(\n mapConfig,\n activeLayerIndex,\n hexagonColumn,\n ),\n )\n }\n placeholder=\"Select H3 index column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {outputColumns.length > 0 && showArcColumnSetting && (\n <ColumnsProvider columns={outputColumns}>\n <Field label=\"Source geometry\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.sourceGeometryColumn as string | undefined\n }\n onChange={(sourceGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(mapConfig, activeLayerIndex, {\n sourceGeometryColumn,\n }),\n )\n }\n placeholder=\"Select source geometry...\"\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Target geometry\" required>\n <ColumnSelector\n value={\n (activeLayer?._sqlroomsBinding as Record<string, unknown>)\n ?.targetGeometryColumn as string | undefined\n }\n onChange={(targetGeometryColumn) =>\n applyConfig(\n setDeckMapLayerArcColumns(mapConfig, activeLayerIndex, {\n targetGeometryColumn,\n }),\n )\n }\n placeholder=\"Select target geometry...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {showArcColumnSetting && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-medium\">Flat lines</span>\n <Switch\n checked={activeLayer?.getHeight === 0}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getHeight: checked ? 0 : undefined,\n }),\n ),\n )\n }\n />\n </div>\n )}\n\n {showArcColumnSetting && (\n <Field\n label={`Line width: ${(activeLayer?.widthMinPixels as number | undefined) ?? 1}px`}\n >\n <Slider\n min={1}\n max={20}\n step={1}\n value={[\n (activeLayer?.widthMinPixels as number | undefined) ?? 1,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n widthMinPixels: value,\n }),\n ),\n );\n }}\n />\n </Field>\n )}\n\n {showExtrusionSettings && (\n <div className=\"flex flex-col gap-2 rounded-md border p-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium\">Extrusion</span>\n <Switch\n checked={Boolean(activeLayer?.extruded)}\n onCheckedChange={(checked) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n extruded: checked,\n getElevation: checked\n ? (layer.getElevation ?? 1)\n : layer.getElevation,\n }),\n ),\n )\n }\n />\n </div>\n\n {Boolean(activeLayer?.extruded) &&\n dataOutputColumns.length > 0 && (\n <ColumnsProvider columns={dataOutputColumns}>\n <Field label=\"Elevation column\">\n <ColumnSelector.Numeric\n value={(() => {\n const elev = activeLayer?.getElevation;\n if (\n elev &&\n typeof elev === 'object' &&\n '@@function' in (elev as object)\n ) {\n return (elev as Record<string, unknown>).field as\n | string\n | undefined;\n }\n if (\n typeof elev === 'string' &&\n elev.startsWith('@@=')\n ) {\n return elev.slice(3);\n }\n return undefined;\n })()}\n onChange={(elevationColumn) =>\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n getElevation: elevationColumn\n ? {\n '@@function': 'scale',\n field: elevationColumn,\n type: 'linear',\n domain: 'auto',\n range: [0, 200],\n }\n : undefined,\n elevationScale: layer.elevationScale ?? 1,\n }),\n ),\n )\n }\n placeholder=\"Select elevation column...\"\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n\n {Boolean(activeLayer?.extruded) && (\n <Field\n label={`Elevation scale: ${(activeLayer?.elevationScale as number | undefined) ?? 1}x`}\n >\n <div className=\"pt-1.5\">\n <Slider\n min={0.01}\n max={100}\n step={0.01}\n value={[\n (activeLayer?.elevationScale as number | undefined) ??\n 1,\n ]}\n onValueChange={(values) => {\n const value = values[0] ?? 1;\n applyConfig(\n updateDeckMapLayer(\n mapConfig,\n activeLayerIndex,\n (layer) => ({\n ...layer,\n elevationScale: value,\n }),\n ),\n );\n }}\n />\n </div>\n </Field>\n )}\n </div>\n )}\n\n {sourceDataTable &&\n !showGeometryColumnSetting &&\n !showH3ColumnSetting &&\n !showArcColumnSetting && (\n <ColumnsProvider columns={sourceColumns}>\n <Field label=\"Latitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.latitudeColumn}\n onChange={(latitudeColumn) => {\n const longitudeColumn =\n mapConfig.fitToData?.longitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n <Field label=\"Longitude column\" required>\n <ColumnSelector.Numeric\n value={mapConfig.fitToData?.longitudeColumn}\n onChange={(longitudeColumn) => {\n const latitudeColumn =\n mapConfig.fitToData?.latitudeColumn;\n applyConfig(\n regenerateMapConfigForTable(\n {config: mapConfig},\n sourceDataTable,\n longitudeColumn,\n latitudeColumn,\n ) as DeckMapConfig,\n );\n }}\n disabled={readOnly}\n />\n </Field>\n </ColumnsProvider>\n )}\n </div>\n </ScrollArea>\n )}\n </div>\n );\n};\n"]}
|