@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
|
@@ -47,11 +47,13 @@ const TRIPS_LAYER_TYPES = new Set([
|
|
|
47
47
|
const RADIUS_LAYER_TYPES = new Set([
|
|
48
48
|
'geoarrowscatterplotlayer',
|
|
49
49
|
'scatterplotlayer',
|
|
50
|
+
'geojsonlayer',
|
|
50
51
|
]);
|
|
51
52
|
const COLUMN_RADIUS_LAYER_TYPES = new Set([
|
|
52
53
|
'geoarrowcolumnlayer',
|
|
53
54
|
'columnlayer',
|
|
54
55
|
]);
|
|
56
|
+
// GeoJSON: elevation/scale compile is geoarrow-only — no extrusion UI here.
|
|
55
57
|
const EXTRUDABLE_LAYER_TYPES = new Set([
|
|
56
58
|
'geoarrowh3hexagonlayer',
|
|
57
59
|
'h3hexagonlayer',
|
|
@@ -115,6 +117,9 @@ export function getDeckMapColorAccessorOptions(layerType) {
|
|
|
115
117
|
if (layerType === 'GeoArrowHeatmapLayer') {
|
|
116
118
|
return [];
|
|
117
119
|
}
|
|
120
|
+
if (layerType === 'GeoArrowColumnLayer') {
|
|
121
|
+
return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter((option) => option.value === 'getFillColor');
|
|
122
|
+
}
|
|
118
123
|
return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter((option) => option.value === 'getFillColor' || option.value === 'getLineColor');
|
|
119
124
|
}
|
|
120
125
|
export function updateDeckMapLayer(config, layerIndex, updater) {
|
|
@@ -144,12 +149,56 @@ export function setDeckMapLayerType(config, layerIndex, layerType) {
|
|
|
144
149
|
if (lt === 'geoarrowcolumnlayer' ||
|
|
145
150
|
lt === 'columnlayer' ||
|
|
146
151
|
lt === 'deckcolumnlayer') {
|
|
147
|
-
nextLayer.radius
|
|
148
|
-
|
|
152
|
+
const radius = typeof nextLayer.radius === 'number' &&
|
|
153
|
+
Number.isFinite(nextLayer.radius) &&
|
|
154
|
+
nextLayer.radius > 0
|
|
155
|
+
? nextLayer.radius
|
|
156
|
+
: 50;
|
|
157
|
+
const withRadius = applyDeckMapColumnRadiusMeters(nextLayer, radius);
|
|
158
|
+
if (typeof withRadius.elevationScale !== 'number') {
|
|
159
|
+
withRadius.elevationScale = 1;
|
|
160
|
+
}
|
|
161
|
+
return withRadius;
|
|
149
162
|
}
|
|
150
163
|
return nextLayer;
|
|
151
164
|
});
|
|
152
165
|
}
|
|
166
|
+
// Point/heatmap radius leftovers (`getRadius`, pixel units) break ColumnLayer meters UI.
|
|
167
|
+
const COLUMN_LAYER_RADIUS_CONFLICT_KEYS = [
|
|
168
|
+
'getRadius',
|
|
169
|
+
'radiusMinPixels',
|
|
170
|
+
'radiusMaxPixels',
|
|
171
|
+
'radiusPixels',
|
|
172
|
+
];
|
|
173
|
+
/** Force meters and strip point/heatmap radius leftovers (does not set `radius`). */
|
|
174
|
+
export function stripDeckMapColumnLayerRadiusConflicts(layer) {
|
|
175
|
+
const next = {
|
|
176
|
+
...layer,
|
|
177
|
+
radiusUnits: 'meters',
|
|
178
|
+
};
|
|
179
|
+
for (const key of COLUMN_LAYER_RADIUS_CONFLICT_KEYS) {
|
|
180
|
+
delete next[key];
|
|
181
|
+
}
|
|
182
|
+
return next;
|
|
183
|
+
}
|
|
184
|
+
/** True when ColumnLayer still carries point/heatmap radius props or pixel units. */
|
|
185
|
+
export function deckMapColumnLayerHasRadiusConflicts(layer) {
|
|
186
|
+
if (layer.radiusUnits === 'pixels')
|
|
187
|
+
return true;
|
|
188
|
+
return COLUMN_LAYER_RADIUS_CONFLICT_KEYS.some((key) => layer[key] !== undefined);
|
|
189
|
+
}
|
|
190
|
+
/** Apply a column radius in meters and strip conflicting point/heatmap radius props. */
|
|
191
|
+
export function applyDeckMapColumnRadiusMeters(layer, radiusMeters) {
|
|
192
|
+
return {
|
|
193
|
+
...stripDeckMapColumnLayerRadiusConflicts(layer),
|
|
194
|
+
radius: radiusMeters,
|
|
195
|
+
radiusUnits: 'meters',
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** Set GeoArrowColumnLayer disk radius in meters. */
|
|
199
|
+
export function setDeckMapLayerColumnRadius(config, layerIndex, radiusMeters) {
|
|
200
|
+
return updateDeckMapLayer(config, layerIndex, (layer) => applyDeckMapColumnRadiusMeters(layer, radiusMeters));
|
|
201
|
+
}
|
|
153
202
|
export function setDeckMapLayerGeometryColumn(config, layerIndex, geometryColumn) {
|
|
154
203
|
const layer = getDeckMapLayerRecords(config)[layerIndex];
|
|
155
204
|
const datasetId = getDeckMapLayerDatasetId(layer);
|
|
@@ -225,17 +274,18 @@ export function setDeckMapLayerColorScale(config, layerIndex, accessor, colorSca
|
|
|
225
274
|
const DEFAULT_LAYER_FILL_COLOR = [
|
|
226
275
|
56, 189, 248, 180,
|
|
227
276
|
];
|
|
277
|
+
const DEFAULT_LAYER_STROKE_COLOR = [
|
|
278
|
+
0, 0, 0, 255,
|
|
279
|
+
];
|
|
228
280
|
export function clearDeckMapLayerColorScale(config, layerIndex, accessor) {
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
return nextLayer;
|
|
238
|
-
});
|
|
281
|
+
const defaultColor = accessor === 'getLineColor'
|
|
282
|
+
? DEFAULT_LAYER_STROKE_COLOR
|
|
283
|
+
: DEFAULT_LAYER_FILL_COLOR;
|
|
284
|
+
return updateDeckMapLayer(config, layerIndex, (layer) => ({
|
|
285
|
+
...layer,
|
|
286
|
+
// Missing fill → deck.gl opaque black; keep an explicit flat color.
|
|
287
|
+
[accessor]: [...defaultColor],
|
|
288
|
+
}));
|
|
239
289
|
}
|
|
240
290
|
export function createDeckMapLayerColorScale(options) {
|
|
241
291
|
const type = options.type ?? 'sequential';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapLayerConfigUtils.js","sourceRoot":"","sources":["../src/mapLayerConfigUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport type {DeckMapConfig} from './mapConfig';\nimport type {DeckAutoLayerType} from './types';\nimport {isColorScaleFunction} from './json/layerConfig';\n\nexport type DeckMapLayerRecord = Record<string, unknown>;\n\nexport type DeckMapLayerColorScaleFunction = ColorScaleConfig & {\n '@@function': 'colorScale';\n};\n\nexport type DeckMapLayerColorAccessor =\n | 'getFillColor'\n | 'getLineColor'\n | 'getColor'\n | 'getSourceColor'\n | 'getTargetColor';\n\nexport const DECK_MAP_LAYER_TYPE_OPTIONS: ReadonlyArray<{\n value: DeckAutoLayerType | 'GeoArrowSolidPolygonLayer';\n label: string;\n}> = [\n {value: 'GeoArrowScatterplotLayer', label: 'Point'},\n {value: 'GeoArrowHeatmapLayer', label: 'Heatmap'},\n {value: 'GeoArrowColumnLayer', label: 'Column'},\n {value: 'GeoArrowPathLayer', label: 'Path'},\n {value: 'GeoArrowPolygonLayer', label: 'Polygon'},\n {value: 'GeoArrowSolidPolygonLayer', label: 'Solid polygon'},\n {value: 'GeoArrowArcLayer', label: 'Arc'},\n {value: 'GeoArrowTripsLayer', label: 'Trips'},\n {value: 'GeoArrowH3HexagonLayer', label: 'H3 hexagon'},\n {value: 'GeoJsonLayer', label: 'GeoJSON'},\n];\n\nexport const DECK_MAP_COLOR_ACCESSOR_OPTIONS: ReadonlyArray<{\n value: DeckMapLayerColorAccessor;\n label: string;\n}> = [\n {value: 'getFillColor', label: 'Fill color'},\n {value: 'getLineColor', label: 'Line color'},\n {value: 'getColor', label: 'Color'},\n {value: 'getSourceColor', label: 'Source color'},\n {value: 'getTargetColor', label: 'Target color'},\n];\n\nexport const DECK_MAP_COLOR_SCALE_TYPE_OPTIONS: ReadonlyArray<{\n value: ColorScaleConfig['type'];\n label: string;\n defaultScheme: ColorScaleScheme;\n}> = [\n {value: 'sequential', label: 'Sequential', defaultScheme: 'Viridis'},\n {value: 'diverging', label: 'Diverging', defaultScheme: 'RdBu'},\n {value: 'quantize', label: 'Quantize', defaultScheme: 'YlOrRd'},\n {value: 'quantile', label: 'Quantile', defaultScheme: 'YlOrRd'},\n {value: 'categorical', label: 'Categorical', defaultScheme: 'Tableau10'},\n];\n\nconst GEOMETRY_COLUMN_LAYER_TYPES = new Set([\n 'geoarrowpolygonlayer',\n 'geoarrowsolidpolygonlayer',\n 'geoarrowpathlayer',\n 'geoarrowtripslayer',\n 'geojsonlayer',\n 'polygonlayer',\n 'solidpolygonlayer',\n 'geojson',\n 'polygon',\n 'solid polygon',\n]);\n\nconst H3_LAYER_TYPES = new Set(['geoarrowh3hexagonlayer', 'h3hexagonlayer']);\n\nconst ARC_LAYER_TYPES = new Set(['geoarrowarclayer', 'arclayer']);\n\nconst TRIPS_LAYER_TYPES = new Set([\n 'geoarrowtripslayer',\n 'decktripslayer',\n 'tripslayer',\n]);\n\nconst RADIUS_LAYER_TYPES = new Set([\n 'geoarrowscatterplotlayer',\n 'scatterplotlayer',\n]);\n\nconst COLUMN_RADIUS_LAYER_TYPES = new Set([\n 'geoarrowcolumnlayer',\n 'columnlayer',\n]);\n\nconst EXTRUDABLE_LAYER_TYPES = new Set([\n 'geoarrowh3hexagonlayer',\n 'h3hexagonlayer',\n 'geoarrowcolumnlayer',\n 'columnlayer',\n 'geoarrowpolygonlayer',\n 'polygonlayer',\n 'geoarrowsolidpolygonlayer',\n 'solidpolygonlayer',\n]);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction getObjectSpec(\n config: DeckMapConfig,\n): Record<string, unknown> | undefined {\n return isRecord(config.spec) ? config.spec : undefined;\n}\n\nexport function getDeckMapLayerRecords(\n config: DeckMapConfig,\n): DeckMapLayerRecord[] {\n const layers = getObjectSpec(config)?.layers;\n return Array.isArray(layers) ? layers.filter(isRecord) : [];\n}\n\nexport function getDeckMapLayerDatasetId(\n layer: DeckMapLayerRecord | undefined,\n): string | undefined {\n const binding = layer?._sqlroomsBinding;\n if (!isRecord(binding)) return undefined;\n return typeof binding.dataset === 'string' ? binding.dataset : undefined;\n}\n\nexport function usesGeometryColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n GEOMETRY_COLUMN_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesH3ColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' && H3_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesArcColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n ARC_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesRadiusSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n RADIUS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesColumnRadiusSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n COLUMN_RADIUS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesTripsSettings(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n TRIPS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesExtrusionSettings(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n EXTRUDABLE_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function getDeckMapColorAccessorOptions(\n layerType: unknown,\n): typeof DECK_MAP_COLOR_ACCESSOR_OPTIONS {\n if (layerType === 'GeoArrowPathLayer' || layerType === 'GeoArrowTripsLayer') {\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) => option.value === 'getColor',\n );\n }\n\n if (layerType === 'GeoArrowArcLayer') {\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) =>\n option.value === 'getSourceColor' || option.value === 'getTargetColor',\n );\n }\n\n if (layerType === 'GeoArrowHeatmapLayer') {\n return [];\n }\n\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) =>\n option.value === 'getFillColor' || option.value === 'getLineColor',\n );\n}\n\nexport function updateDeckMapLayer(\n config: DeckMapConfig,\n layerIndex: number,\n updater: (layer: DeckMapLayerRecord) => DeckMapLayerRecord,\n): DeckMapConfig {\n const spec = getObjectSpec(config);\n if (!spec || !Array.isArray(spec.layers)) {\n return config;\n }\n\n const layer = spec.layers[layerIndex];\n if (!isRecord(layer)) {\n return config;\n }\n\n return {\n ...config,\n spec: {\n ...spec,\n layers: spec.layers.map((candidate, index) =>\n index === layerIndex ? updater({...layer}) : candidate,\n ),\n },\n };\n}\n\nexport function setDeckMapLayerType(\n config: DeckMapConfig,\n layerIndex: number,\n layerType: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n '@@type': layerType,\n };\n const lt = layerType.toLowerCase();\n if (\n lt === 'geoarrowcolumnlayer' ||\n lt === 'columnlayer' ||\n lt === 'deckcolumnlayer'\n ) {\n nextLayer.radius ??= 3;\n nextLayer.elevationScale ??= 1;\n }\n return nextLayer;\n });\n}\n\nexport function setDeckMapLayerGeometryColumn(\n config: DeckMapConfig,\n layerIndex: number,\n geometryColumn: string,\n): DeckMapConfig {\n const layer = getDeckMapLayerRecords(config)[layerIndex];\n const datasetId = getDeckMapLayerDatasetId(layer);\n if (!datasetId || !config.datasets?.[datasetId]) {\n return config;\n }\n\n const updatedConfig = {\n ...config,\n datasets: {\n ...config.datasets,\n [datasetId]: {\n ...config.datasets[datasetId],\n geometryColumn,\n },\n },\n fitToData:\n config.fitToData &&\n config.fitToData.dataset === datasetId &&\n 'geometryColumn' in config.fitToData\n ? {\n ...config.fitToData,\n geometryColumn,\n }\n : config.fitToData,\n };\n\n return updateDeckMapLayer(updatedConfig, layerIndex, (l) => ({\n ...l,\n _sqlroomsBinding: {\n ...(l._sqlroomsBinding as Record<string, unknown>),\n geometryColumn,\n },\n }));\n}\n\nexport function setDeckMapLayerHexagonColumn(\n config: DeckMapConfig,\n layerIndex: number,\n hexagonColumn: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n getHexagon: `@@=${hexagonColumn}`,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n hexagonColumn,\n },\n }));\n}\n\nexport function setDeckMapLayerArcColumns(\n config: DeckMapConfig,\n layerIndex: number,\n columns: {\n sourceGeometryColumn?: string;\n targetGeometryColumn?: string;\n sourceLatitudeColumn?: string;\n sourceLongitudeColumn?: string;\n targetLatitudeColumn?: string;\n targetLongitudeColumn?: string;\n },\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n ...columns,\n },\n }));\n}\n\nexport function setDeckMapLayerTimestampColumn(\n config: DeckMapConfig,\n layerIndex: number,\n timestampColumn: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n timestampColumn,\n },\n }));\n}\n\nexport function getDeckMapLayerColorScale(\n layer: DeckMapLayerRecord | undefined,\n accessor: DeckMapLayerColorAccessor,\n): DeckMapLayerColorScaleFunction | undefined {\n const value = layer?.[accessor];\n return isColorScaleFunction(value)\n ? (value as DeckMapLayerColorScaleFunction)\n : undefined;\n}\n\nexport function setDeckMapLayerColorScale(\n config: DeckMapConfig,\n layerIndex: number,\n accessor: DeckMapLayerColorAccessor,\n colorScale: DeckMapLayerColorScaleFunction,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n [accessor]: colorScale,\n }));\n}\n\nconst DEFAULT_LAYER_FILL_COLOR: [number, number, number, number] = [\n 56, 189, 248, 180,\n];\n\nexport function clearDeckMapLayerColorScale(\n config: DeckMapConfig,\n layerIndex: number,\n accessor: DeckMapLayerColorAccessor,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => {\n const nextLayer = {...layer};\n if (accessor === 'getFillColor') {\n nextLayer[accessor] = [...DEFAULT_LAYER_FILL_COLOR];\n } else {\n delete nextLayer[accessor];\n }\n return nextLayer;\n });\n}\n\nexport function createDeckMapLayerColorScale(options: {\n field: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n title?: string;\n}): DeckMapLayerColorScaleFunction {\n const type = options.type ?? 'sequential';\n const scheme =\n options.scheme ??\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.find((option) => option.value === type)\n ?.defaultScheme ??\n 'Viridis';\n const base = {\n '@@function': 'colorScale' as const,\n field: options.field,\n legend: {title: options.title ?? options.field},\n };\n\n if (type === 'categorical') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'categorical'}\n >['scheme'],\n };\n }\n\n if (type === 'diverging') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'diverging'}\n >['scheme'],\n domain: 'auto',\n };\n }\n\n if (type === 'quantize') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<ColorScaleConfig, {type: 'quantize'}>['scheme'],\n domain: 'auto',\n };\n }\n\n if (type === 'quantile') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<ColorScaleConfig, {type: 'quantile'}>['scheme'],\n };\n }\n\n if (type === 'threshold') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'threshold'}\n >['scheme'],\n thresholds: [],\n };\n }\n\n return {\n ...base,\n type: 'sequential',\n scheme: scheme as Extract<ColorScaleConfig, {type: 'sequential'}>['scheme'],\n domain: 'auto',\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mapLayerConfigUtils.js","sourceRoot":"","sources":["../src/mapLayerConfigUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {ColorScaleConfig, ColorScaleScheme} from '@sqlrooms/color-scales';\nimport type {DeckMapConfig} from './mapConfig';\nimport type {DeckAutoLayerType} from './types';\nimport {isColorScaleFunction} from './json/layerConfig';\n\nexport type DeckMapLayerRecord = Record<string, unknown>;\n\nexport type DeckMapLayerColorScaleFunction = ColorScaleConfig & {\n '@@function': 'colorScale';\n};\n\nexport type DeckMapLayerColorAccessor =\n | 'getFillColor'\n | 'getLineColor'\n | 'getColor'\n | 'getSourceColor'\n | 'getTargetColor';\n\nexport const DECK_MAP_LAYER_TYPE_OPTIONS: ReadonlyArray<{\n value: DeckAutoLayerType;\n label: string;\n}> = [\n {value: 'GeoArrowScatterplotLayer', label: 'Point'},\n {value: 'GeoArrowHeatmapLayer', label: 'Heatmap'},\n {value: 'GeoArrowColumnLayer', label: 'Column'},\n {value: 'GeoArrowPathLayer', label: 'Path'},\n {value: 'GeoArrowPolygonLayer', label: 'Polygon'},\n {value: 'GeoArrowSolidPolygonLayer', label: 'Solid polygon'},\n {value: 'GeoArrowArcLayer', label: 'Arc'},\n {value: 'GeoArrowTripsLayer', label: 'Trips'},\n {value: 'GeoArrowH3HexagonLayer', label: 'H3 hexagon'},\n {value: 'GeoJsonLayer', label: 'GeoJSON'},\n];\n\nexport const DECK_MAP_COLOR_ACCESSOR_OPTIONS: ReadonlyArray<{\n value: DeckMapLayerColorAccessor;\n label: string;\n}> = [\n {value: 'getFillColor', label: 'Fill color'},\n {value: 'getLineColor', label: 'Line color'},\n {value: 'getColor', label: 'Color'},\n {value: 'getSourceColor', label: 'Source color'},\n {value: 'getTargetColor', label: 'Target color'},\n];\n\nexport const DECK_MAP_COLOR_SCALE_TYPE_OPTIONS: ReadonlyArray<{\n value: ColorScaleConfig['type'];\n label: string;\n defaultScheme: ColorScaleScheme;\n}> = [\n {value: 'sequential', label: 'Sequential', defaultScheme: 'Viridis'},\n {value: 'diverging', label: 'Diverging', defaultScheme: 'RdBu'},\n {value: 'quantize', label: 'Quantize', defaultScheme: 'YlOrRd'},\n {value: 'quantile', label: 'Quantile', defaultScheme: 'YlOrRd'},\n {value: 'categorical', label: 'Categorical', defaultScheme: 'Tableau10'},\n];\n\nconst GEOMETRY_COLUMN_LAYER_TYPES = new Set([\n 'geoarrowpolygonlayer',\n 'geoarrowsolidpolygonlayer',\n 'geoarrowpathlayer',\n 'geoarrowtripslayer',\n 'geojsonlayer',\n 'polygonlayer',\n 'solidpolygonlayer',\n 'geojson',\n 'polygon',\n 'solid polygon',\n]);\n\nconst H3_LAYER_TYPES = new Set(['geoarrowh3hexagonlayer', 'h3hexagonlayer']);\n\nconst ARC_LAYER_TYPES = new Set(['geoarrowarclayer', 'arclayer']);\n\nconst TRIPS_LAYER_TYPES = new Set([\n 'geoarrowtripslayer',\n 'decktripslayer',\n 'tripslayer',\n]);\n\nconst RADIUS_LAYER_TYPES = new Set([\n 'geoarrowscatterplotlayer',\n 'scatterplotlayer',\n 'geojsonlayer',\n]);\n\nconst COLUMN_RADIUS_LAYER_TYPES = new Set([\n 'geoarrowcolumnlayer',\n 'columnlayer',\n]);\n\n// GeoJSON: elevation/scale compile is geoarrow-only — no extrusion UI here.\nconst EXTRUDABLE_LAYER_TYPES = new Set([\n 'geoarrowh3hexagonlayer',\n 'h3hexagonlayer',\n 'geoarrowcolumnlayer',\n 'columnlayer',\n 'geoarrowpolygonlayer',\n 'polygonlayer',\n 'geoarrowsolidpolygonlayer',\n 'solidpolygonlayer',\n]);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction getObjectSpec(\n config: DeckMapConfig,\n): Record<string, unknown> | undefined {\n return isRecord(config.spec) ? config.spec : undefined;\n}\n\nexport function getDeckMapLayerRecords(\n config: DeckMapConfig,\n): DeckMapLayerRecord[] {\n const layers = getObjectSpec(config)?.layers;\n return Array.isArray(layers) ? layers.filter(isRecord) : [];\n}\n\nexport function getDeckMapLayerDatasetId(\n layer: DeckMapLayerRecord | undefined,\n): string | undefined {\n const binding = layer?._sqlroomsBinding;\n if (!isRecord(binding)) return undefined;\n return typeof binding.dataset === 'string' ? binding.dataset : undefined;\n}\n\nexport function usesGeometryColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n GEOMETRY_COLUMN_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesH3ColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' && H3_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesArcColumnSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n ARC_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesRadiusSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n RADIUS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesColumnRadiusSetting(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n COLUMN_RADIUS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesTripsSettings(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n TRIPS_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function usesExtrusionSettings(layerType: unknown) {\n return (\n typeof layerType === 'string' &&\n EXTRUDABLE_LAYER_TYPES.has(layerType.toLowerCase())\n );\n}\n\nexport function getDeckMapColorAccessorOptions(\n layerType: unknown,\n): typeof DECK_MAP_COLOR_ACCESSOR_OPTIONS {\n if (layerType === 'GeoArrowPathLayer' || layerType === 'GeoArrowTripsLayer') {\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) => option.value === 'getColor',\n );\n }\n\n if (layerType === 'GeoArrowArcLayer') {\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) =>\n option.value === 'getSourceColor' || option.value === 'getTargetColor',\n );\n }\n\n if (layerType === 'GeoArrowHeatmapLayer') {\n return [];\n }\n\n if (layerType === 'GeoArrowColumnLayer') {\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) => option.value === 'getFillColor',\n );\n }\n\n return DECK_MAP_COLOR_ACCESSOR_OPTIONS.filter(\n (option) =>\n option.value === 'getFillColor' || option.value === 'getLineColor',\n );\n}\n\nexport function updateDeckMapLayer(\n config: DeckMapConfig,\n layerIndex: number,\n updater: (layer: DeckMapLayerRecord) => DeckMapLayerRecord,\n): DeckMapConfig {\n const spec = getObjectSpec(config);\n if (!spec || !Array.isArray(spec.layers)) {\n return config;\n }\n\n const layer = spec.layers[layerIndex];\n if (!isRecord(layer)) {\n return config;\n }\n\n return {\n ...config,\n spec: {\n ...spec,\n layers: spec.layers.map((candidate, index) =>\n index === layerIndex ? updater({...layer}) : candidate,\n ),\n },\n };\n}\n\nexport function setDeckMapLayerType(\n config: DeckMapConfig,\n layerIndex: number,\n layerType: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => {\n const nextLayer: DeckMapLayerRecord = {\n ...layer,\n '@@type': layerType,\n };\n const lt = layerType.toLowerCase();\n if (\n lt === 'geoarrowcolumnlayer' ||\n lt === 'columnlayer' ||\n lt === 'deckcolumnlayer'\n ) {\n const radius =\n typeof nextLayer.radius === 'number' &&\n Number.isFinite(nextLayer.radius) &&\n nextLayer.radius > 0\n ? nextLayer.radius\n : 50;\n const withRadius = applyDeckMapColumnRadiusMeters(nextLayer, radius);\n if (typeof withRadius.elevationScale !== 'number') {\n withRadius.elevationScale = 1;\n }\n return withRadius;\n }\n return nextLayer;\n });\n}\n\n// Point/heatmap radius leftovers (`getRadius`, pixel units) break ColumnLayer meters UI.\nconst COLUMN_LAYER_RADIUS_CONFLICT_KEYS = [\n 'getRadius',\n 'radiusMinPixels',\n 'radiusMaxPixels',\n 'radiusPixels',\n] as const;\n\n/** Force meters and strip point/heatmap radius leftovers (does not set `radius`). */\nexport function stripDeckMapColumnLayerRadiusConflicts(\n layer: DeckMapLayerRecord,\n): DeckMapLayerRecord {\n const next: DeckMapLayerRecord = {\n ...layer,\n radiusUnits: 'meters',\n };\n for (const key of COLUMN_LAYER_RADIUS_CONFLICT_KEYS) {\n delete next[key];\n }\n return next;\n}\n\n/** True when ColumnLayer still carries point/heatmap radius props or pixel units. */\nexport function deckMapColumnLayerHasRadiusConflicts(\n layer: DeckMapLayerRecord,\n): boolean {\n if (layer.radiusUnits === 'pixels') return true;\n return COLUMN_LAYER_RADIUS_CONFLICT_KEYS.some(\n (key) => layer[key] !== undefined,\n );\n}\n\n/** Apply a column radius in meters and strip conflicting point/heatmap radius props. */\nexport function applyDeckMapColumnRadiusMeters(\n layer: DeckMapLayerRecord,\n radiusMeters: number,\n): DeckMapLayerRecord {\n return {\n ...stripDeckMapColumnLayerRadiusConflicts(layer),\n radius: radiusMeters,\n radiusUnits: 'meters',\n };\n}\n\n/** Set GeoArrowColumnLayer disk radius in meters. */\nexport function setDeckMapLayerColumnRadius(\n config: DeckMapConfig,\n layerIndex: number,\n radiusMeters: number,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) =>\n applyDeckMapColumnRadiusMeters(layer, radiusMeters),\n );\n}\n\nexport function setDeckMapLayerGeometryColumn(\n config: DeckMapConfig,\n layerIndex: number,\n geometryColumn: string,\n): DeckMapConfig {\n const layer = getDeckMapLayerRecords(config)[layerIndex];\n const datasetId = getDeckMapLayerDatasetId(layer);\n if (!datasetId || !config.datasets?.[datasetId]) {\n return config;\n }\n\n const updatedConfig = {\n ...config,\n datasets: {\n ...config.datasets,\n [datasetId]: {\n ...config.datasets[datasetId],\n geometryColumn,\n },\n },\n fitToData:\n config.fitToData &&\n config.fitToData.dataset === datasetId &&\n 'geometryColumn' in config.fitToData\n ? {\n ...config.fitToData,\n geometryColumn,\n }\n : config.fitToData,\n };\n\n return updateDeckMapLayer(updatedConfig, layerIndex, (l) => ({\n ...l,\n _sqlroomsBinding: {\n ...(l._sqlroomsBinding as Record<string, unknown>),\n geometryColumn,\n },\n }));\n}\n\nexport function setDeckMapLayerHexagonColumn(\n config: DeckMapConfig,\n layerIndex: number,\n hexagonColumn: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n getHexagon: `@@=${hexagonColumn}`,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n hexagonColumn,\n },\n }));\n}\n\nexport function setDeckMapLayerArcColumns(\n config: DeckMapConfig,\n layerIndex: number,\n columns: {\n sourceGeometryColumn?: string;\n targetGeometryColumn?: string;\n sourceLatitudeColumn?: string;\n sourceLongitudeColumn?: string;\n targetLatitudeColumn?: string;\n targetLongitudeColumn?: string;\n },\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n ...columns,\n },\n }));\n}\n\nexport function setDeckMapLayerTimestampColumn(\n config: DeckMapConfig,\n layerIndex: number,\n timestampColumn: string,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n _sqlroomsBinding: {\n ...(isRecord(layer._sqlroomsBinding) ? layer._sqlroomsBinding : {}),\n timestampColumn,\n },\n }));\n}\n\nexport function getDeckMapLayerColorScale(\n layer: DeckMapLayerRecord | undefined,\n accessor: DeckMapLayerColorAccessor,\n): DeckMapLayerColorScaleFunction | undefined {\n const value = layer?.[accessor];\n return isColorScaleFunction(value)\n ? (value as DeckMapLayerColorScaleFunction)\n : undefined;\n}\n\nexport function setDeckMapLayerColorScale(\n config: DeckMapConfig,\n layerIndex: number,\n accessor: DeckMapLayerColorAccessor,\n colorScale: DeckMapLayerColorScaleFunction,\n): DeckMapConfig {\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n [accessor]: colorScale,\n }));\n}\n\nconst DEFAULT_LAYER_FILL_COLOR: [number, number, number, number] = [\n 56, 189, 248, 180,\n];\n\nconst DEFAULT_LAYER_STROKE_COLOR: [number, number, number, number] = [\n 0, 0, 0, 255,\n];\n\nexport function clearDeckMapLayerColorScale(\n config: DeckMapConfig,\n layerIndex: number,\n accessor: DeckMapLayerColorAccessor,\n): DeckMapConfig {\n const defaultColor =\n accessor === 'getLineColor'\n ? DEFAULT_LAYER_STROKE_COLOR\n : DEFAULT_LAYER_FILL_COLOR;\n return updateDeckMapLayer(config, layerIndex, (layer) => ({\n ...layer,\n // Missing fill → deck.gl opaque black; keep an explicit flat color.\n [accessor]: [...defaultColor],\n }));\n}\n\nexport function createDeckMapLayerColorScale(options: {\n field: string;\n type?: ColorScaleConfig['type'];\n scheme?: ColorScaleScheme;\n title?: string;\n}): DeckMapLayerColorScaleFunction {\n const type = options.type ?? 'sequential';\n const scheme =\n options.scheme ??\n DECK_MAP_COLOR_SCALE_TYPE_OPTIONS.find((option) => option.value === type)\n ?.defaultScheme ??\n 'Viridis';\n const base = {\n '@@function': 'colorScale' as const,\n field: options.field,\n legend: {title: options.title ?? options.field},\n };\n\n if (type === 'categorical') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'categorical'}\n >['scheme'],\n };\n }\n\n if (type === 'diverging') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'diverging'}\n >['scheme'],\n domain: 'auto',\n };\n }\n\n if (type === 'quantize') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<ColorScaleConfig, {type: 'quantize'}>['scheme'],\n domain: 'auto',\n };\n }\n\n if (type === 'quantile') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<ColorScaleConfig, {type: 'quantile'}>['scheme'],\n };\n }\n\n if (type === 'threshold') {\n return {\n ...base,\n type,\n scheme: scheme as Extract<\n ColorScaleConfig,\n {type: 'threshold'}\n >['scheme'],\n thresholds: [],\n };\n }\n\n return {\n ...base,\n type: 'sequential',\n scheme: scheme as Extract<ColorScaleConfig, {type: 'sequential'}>['scheme'],\n domain: 'auto',\n };\n}\n"]}
|
|
@@ -19,6 +19,8 @@ export declare class DeckMapResourceConfigError extends Error {
|
|
|
19
19
|
readonly issues: DeckMapResourceConfigIssue[];
|
|
20
20
|
constructor(issues: DeckMapResourceConfigIssue[]);
|
|
21
21
|
}
|
|
22
|
+
/** Issue when colorScale `type` and `scheme` disagree or are incomplete. */
|
|
23
|
+
export declare function getColorScaleTypeSchemeIssue(type: unknown, scheme: unknown): string | undefined;
|
|
22
24
|
/**
|
|
23
25
|
* Merges a sparse map-tool patch with durable state. Empty dataset registries
|
|
24
26
|
* and layer arrays mean "preserve" only when an existing resource is present.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapResourceAuthoring.d.ts","sourceRoot":"","sources":["../src/mapResourceAuthoring.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mapResourceAuthoring.d.ts","sourceRoot":"","sources":["../src/mapResourceAuthoring.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAC,aAAa,EAAuB,MAAM,aAAa,CAAC;AAQrE,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAAG;IACnD,yEAAyE;IACzE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,0EAA0E;AAC1E,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,MAAM,EAAE,0BAA0B,EAAE,CAAC;gBAElC,MAAM,EAAE,0BAA0B,EAAE;CASjD;AAOD,4EAA4E;AAC5E,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,OAAO,GACd,MAAM,GAAG,SAAS,CAyDpB;AA8LD;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,cAAc,EAAE,aAAa,GAAG,SAAS,EACzC,cAAc,EAAE,aAAa,EAC7B,OAAO,GAAE,iCAAsC,GAC9C,aAAa,CAoBf;AA2DD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,sCAA2C,GACnD,0BAA0B,EAAE,CAya9B;AAED,gFAAgF;AAChF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAGvE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,MAAM,CAoBzD"}
|