@sqlrooms/deck 0.29.0-rc.2 → 0.29.0-rc.4
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/LICENSE.md +9 -0
- package/README.md +69 -0
- package/dist/DeckJsonMap.d.ts +4 -0
- package/dist/DeckJsonMap.d.ts.map +1 -0
- package/dist/{DeckMap.js → DeckJsonMap.js} +57 -44
- package/dist/DeckJsonMap.js.map +1 -0
- package/dist/DeckJsonMapSpec.d.ts +7617 -0
- package/dist/DeckJsonMapSpec.d.ts.map +1 -0
- package/dist/DeckJsonMapSpec.js +81 -0
- package/dist/DeckJsonMapSpec.js.map +1 -0
- package/dist/DeckMapConfigPopoverEditor.d.ts +8 -0
- package/dist/DeckMapConfigPopoverEditor.d.ts.map +1 -0
- package/dist/DeckMapConfigPopoverEditor.js +43 -0
- package/dist/DeckMapConfigPopoverEditor.js.map +1 -0
- package/dist/createDeckJsonSpecFromDatasets.d.ts +11 -0
- package/dist/createDeckJsonSpecFromDatasets.d.ts.map +1 -0
- package/dist/createDeckJsonSpecFromDatasets.js +85 -0
- package/dist/createDeckJsonSpecFromDatasets.js.map +1 -0
- package/dist/dashboard.d.ts +4 -0
- package/dist/dashboard.d.ts.map +1 -0
- package/dist/dashboard.js +465 -0
- package/dist/dashboard.js.map +1 -0
- package/dist/dashboardConfig.d.ts +51 -0
- package/dist/dashboardConfig.d.ts.map +1 -0
- package/dist/dashboardConfig.js +54 -0
- package/dist/dashboardConfig.js.map +1 -0
- package/dist/datasets/PreparedDatasetStore.d.ts +120 -0
- package/dist/datasets/PreparedDatasetStore.d.ts.map +1 -0
- package/dist/datasets/PreparedDatasetStore.js +262 -0
- package/dist/datasets/PreparedDatasetStore.js.map +1 -0
- package/dist/datasets/helpers.d.ts +57 -0
- package/dist/datasets/helpers.d.ts.map +1 -0
- package/dist/datasets/helpers.js +146 -0
- package/dist/datasets/helpers.js.map +1 -0
- package/dist/datasets/normalizeDatasets.d.ts +8 -2
- package/dist/datasets/normalizeDatasets.d.ts.map +1 -1
- package/dist/datasets/normalizeDatasets.js +33 -48
- package/dist/datasets/normalizeDatasets.js.map +1 -1
- package/dist/datasets/tableAdapter.d.ts +11 -0
- package/dist/datasets/tableAdapter.d.ts.map +1 -0
- package/dist/datasets/tableAdapter.js +11 -0
- package/dist/datasets/tableAdapter.js.map +1 -0
- package/dist/datasets/types.d.ts +40 -0
- package/dist/datasets/types.d.ts.map +1 -0
- package/dist/datasets/types.js +2 -0
- package/dist/datasets/types.js.map +1 -0
- package/dist/datasets/usePreparedDatasetStates.d.ts +16 -0
- package/dist/datasets/usePreparedDatasetStates.d.ts.map +1 -0
- package/dist/datasets/usePreparedDatasetStates.js +59 -0
- package/dist/datasets/usePreparedDatasetStates.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/json/colorScaleFunction.d.ts +14 -0
- package/dist/json/colorScaleFunction.d.ts.map +1 -0
- package/dist/json/colorScaleFunction.js +34 -0
- package/dist/json/colorScaleFunction.js.map +1 -0
- package/dist/json/compileColorScale.d.ts +4 -27
- package/dist/json/compileColorScale.d.ts.map +1 -1
- package/dist/json/compileColorScale.js +16 -450
- package/dist/json/compileColorScale.js.map +1 -1
- package/dist/json/compileGeoArrowAccessor.d.ts +7 -0
- package/dist/json/compileGeoArrowAccessor.d.ts.map +1 -1
- package/dist/json/compileGeoArrowAccessor.js +68 -2
- package/dist/json/compileGeoArrowAccessor.js.map +1 -1
- package/dist/json/createDeckJsonConfiguration.d.ts.map +1 -1
- package/dist/json/createDeckJsonConfiguration.js +86 -33
- package/dist/json/createDeckJsonConfiguration.js.map +1 -1
- package/dist/json/defaultClasses.d.ts +12 -6
- package/dist/json/defaultClasses.d.ts.map +1 -1
- package/dist/json/defaultClasses.js +7 -1
- package/dist/json/defaultClasses.js.map +1 -1
- package/dist/json/extractColorScaleLegends.d.ts +1 -1
- package/dist/json/extractColorScaleLegends.d.ts.map +1 -1
- package/dist/json/extractColorScaleLegends.js +8 -6
- package/dist/json/extractColorScaleLegends.js.map +1 -1
- package/dist/json/layerCompatibility.d.ts +9 -3
- package/dist/json/layerCompatibility.d.ts.map +1 -1
- package/dist/json/layerCompatibility.js +135 -11
- package/dist/json/layerCompatibility.js.map +1 -1
- package/dist/json/layerConfig.d.ts +7 -3
- package/dist/json/layerConfig.d.ts.map +1 -1
- package/dist/json/layerConfig.js +19 -8
- package/dist/json/layerConfig.js.map +1 -1
- package/dist/prepare/detectGeometryColumn.d.ts.map +1 -1
- package/dist/prepare/detectGeometryColumn.js +1 -1
- package/dist/prepare/detectGeometryColumn.js.map +1 -1
- package/dist/prepare/geoarrow.d.ts.map +1 -1
- package/dist/prepare/geoarrow.js.map +1 -1
- package/dist/prepare/geometryDecoder.d.ts +1 -2
- package/dist/prepare/geometryDecoder.d.ts.map +1 -1
- package/dist/prepare/geometryDecoder.js.map +1 -1
- package/dist/prepare/prepareDeckDataset.d.ts +46 -0
- package/dist/prepare/prepareDeckDataset.d.ts.map +1 -1
- package/dist/prepare/prepareDeckDataset.js +46 -0
- package/dist/prepare/prepareDeckDataset.js.map +1 -1
- package/dist/prepare/toGeoJsonBinary.d.ts.map +1 -1
- package/dist/prepare/toGeoJsonBinary.js +3 -2
- package/dist/prepare/toGeoJsonBinary.js.map +1 -1
- package/dist/prepare/wkbDecoder.d.ts.map +1 -1
- package/dist/prepare/wkbDecoder.js +36 -9
- package/dist/prepare/wkbDecoder.js.map +1 -1
- package/dist/types.d.ts +31 -92
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/dist/useDeckLayersReadyRedraw.d.ts +13 -0
- package/dist/useDeckLayersReadyRedraw.d.ts.map +1 -0
- package/dist/useDeckLayersReadyRedraw.js +35 -0
- package/dist/useDeckLayersReadyRedraw.js.map +1 -0
- package/package.json +35 -29
- package/dist/ColorScaleLegend.d.ts +0 -8
- package/dist/ColorScaleLegend.d.ts.map +0 -1
- package/dist/ColorScaleLegend.js +0 -11
- package/dist/ColorScaleLegend.js.map +0 -1
- package/dist/DeckMap.d.ts +0 -4
- package/dist/DeckMap.d.ts.map +0 -1
- package/dist/DeckMap.js.map +0 -1
- package/dist/datasets/usePreparedDeckDatasets.d.ts +0 -3
- package/dist/datasets/usePreparedDeckDatasets.d.ts.map +0 -1
- package/dist/datasets/usePreparedDeckDatasets.js +0 -61
- package/dist/datasets/usePreparedDeckDatasets.js.map +0 -1
|
@@ -0,0 +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;AAgBlE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmC/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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { ColorScaleConfig, RGBAColor } from '@sqlrooms/color-scales';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
export const GeometryEncodingHint = z.enum(['geoarrow', 'wkb', 'wkt']);
|
|
4
|
+
export const ColorScaleFunction = z.intersection(z.object({
|
|
5
|
+
'@@function': z.literal('colorScale'),
|
|
6
|
+
}), ColorScaleConfig);
|
|
7
|
+
export const LayerBindingConfig = z.object({
|
|
8
|
+
dataset: z.string().min(1).optional(),
|
|
9
|
+
geometryColumn: z.string().min(1).optional(),
|
|
10
|
+
geometryEncodingHint: GeometryEncodingHint.optional(),
|
|
11
|
+
sourceGeometryColumn: z.string().min(1).optional(),
|
|
12
|
+
targetGeometryColumn: z.string().min(1).optional(),
|
|
13
|
+
timestampColumn: z.string().min(1).optional(),
|
|
14
|
+
hexagonColumn: z.string().min(1).optional(),
|
|
15
|
+
});
|
|
16
|
+
export const LayerBindingProps = z.object({
|
|
17
|
+
_sqlroomsBinding: LayerBindingConfig.optional(),
|
|
18
|
+
});
|
|
19
|
+
const JsonAccessor = z.union([
|
|
20
|
+
z.string(),
|
|
21
|
+
z.number(),
|
|
22
|
+
RGBAColor,
|
|
23
|
+
z.array(z.number()),
|
|
24
|
+
ColorScaleFunction,
|
|
25
|
+
]);
|
|
26
|
+
// Keep the layer spec loose for now because `DeckJsonMap` accepts deck.gl JSON as an
|
|
27
|
+
// external spec format, and that surface is much broader than SQLRooms-owned
|
|
28
|
+
// `_sqlroomsBinding` extensions. We validate the binding config fully and a handful of
|
|
29
|
+
// common deck props we know we rely on, while allowing the rest through.
|
|
30
|
+
// TODO(deck-json-schema): Replace this with fuller schemas when deck.gl/json
|
|
31
|
+
// exposes reusable validators or we decide to maintain a broader local schema.
|
|
32
|
+
export const DeckJsonMapLayerSpec = z.looseObject({
|
|
33
|
+
'@@type': z.string().optional(),
|
|
34
|
+
id: z.string().optional(),
|
|
35
|
+
data: z.unknown().optional(),
|
|
36
|
+
visible: z.boolean().optional(),
|
|
37
|
+
pickable: z.boolean().optional(),
|
|
38
|
+
filled: z.boolean().optional(),
|
|
39
|
+
stroked: z.boolean().optional(),
|
|
40
|
+
extruded: z.boolean().optional(),
|
|
41
|
+
radiusScale: z.number().optional(),
|
|
42
|
+
radiusUnits: z.string().optional(),
|
|
43
|
+
radiusMinPixels: z.number().optional(),
|
|
44
|
+
radiusMaxPixels: z.number().optional(),
|
|
45
|
+
lineWidthMinPixels: z.number().optional(),
|
|
46
|
+
lineWidthScale: z.number().optional(),
|
|
47
|
+
lineWidthUnits: z.string().optional(),
|
|
48
|
+
getRadius: JsonAccessor.optional(),
|
|
49
|
+
getFillColor: JsonAccessor.optional(),
|
|
50
|
+
getLineColor: JsonAccessor.optional(),
|
|
51
|
+
getColor: JsonAccessor.optional(),
|
|
52
|
+
getWeight: JsonAccessor.optional(),
|
|
53
|
+
getWidth: JsonAccessor.optional(),
|
|
54
|
+
getHeight: JsonAccessor.optional(),
|
|
55
|
+
getTilt: JsonAccessor.optional(),
|
|
56
|
+
getElevation: JsonAccessor.optional(),
|
|
57
|
+
getSourceColor: JsonAccessor.optional(),
|
|
58
|
+
getTargetColor: JsonAccessor.optional(),
|
|
59
|
+
getPosition: JsonAccessor.optional(),
|
|
60
|
+
getSourcePosition: JsonAccessor.optional(),
|
|
61
|
+
getTargetPosition: JsonAccessor.optional(),
|
|
62
|
+
getPolygon: JsonAccessor.optional(),
|
|
63
|
+
getPath: JsonAccessor.optional(),
|
|
64
|
+
getHexagon: JsonAccessor.optional(),
|
|
65
|
+
getTimestamps: JsonAccessor.optional(),
|
|
66
|
+
_sqlroomsBinding: LayerBindingConfig.optional(),
|
|
67
|
+
});
|
|
68
|
+
// Keep the top-level spec loose for the same reason as `DeckJsonMapLayerSpec`: deck.gl
|
|
69
|
+
// JSON supports many runtime-level props, and SQLRooms currently only needs a
|
|
70
|
+
// validated subset plus open-ended compatibility with upstream deck specs.
|
|
71
|
+
// TODO(deck-json-schema): Replace this with fuller schemas when we have a more
|
|
72
|
+
// complete upstream or local model of deck.gl/json top-level props.
|
|
73
|
+
export const DeckJsonMapSpec = z.looseObject({
|
|
74
|
+
initialViewState: z.record(z.string(), z.unknown()).optional(),
|
|
75
|
+
viewState: z.record(z.string(), z.unknown()).optional(),
|
|
76
|
+
controller: z
|
|
77
|
+
.union([z.boolean(), z.record(z.string(), z.unknown())])
|
|
78
|
+
.optional(),
|
|
79
|
+
layers: z.array(DeckJsonMapLayerSpec).optional(),
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=DeckJsonMapSpec.js.map
|
|
@@ -0,0 +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]);\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"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type DeckMapConfigPopoverEditorProps = {
|
|
3
|
+
value: Record<string, unknown>;
|
|
4
|
+
onApply: (value: Record<string, unknown>) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const DeckMapConfigPopoverEditor: React.FC<DeckMapConfigPopoverEditorProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=DeckMapConfigPopoverEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeckMapConfigPopoverEditor.d.ts","sourceRoot":"","sources":["../src/DeckMapConfigPopoverEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAC/C,+BAA+B,CAoFhC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MosaicCodeMirrorEditor } from '@sqlrooms/mosaic';
|
|
3
|
+
import { Button, Popover, PopoverContent, PopoverTrigger } from '@sqlrooms/ui';
|
|
4
|
+
import { PencilIcon } from 'lucide-react';
|
|
5
|
+
import { useCallback, useState } from 'react';
|
|
6
|
+
export const DeckMapConfigPopoverEditor = ({ value, onApply }) => {
|
|
7
|
+
const [open, setOpen] = useState(false);
|
|
8
|
+
const [draft, setDraft] = useState(() => JSON.stringify(value, null, 2));
|
|
9
|
+
const handleOpenChange = useCallback((nextOpen) => {
|
|
10
|
+
setOpen(nextOpen);
|
|
11
|
+
if (nextOpen) {
|
|
12
|
+
setDraft(JSON.stringify(value, null, 2));
|
|
13
|
+
}
|
|
14
|
+
}, [value]);
|
|
15
|
+
const handleApply = useCallback(() => {
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(draft);
|
|
18
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
19
|
+
onApply(parsed);
|
|
20
|
+
setOpen(false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Invalid JSON — keep the editor open.
|
|
25
|
+
}
|
|
26
|
+
}, [draft, onApply]);
|
|
27
|
+
const serializedValue = JSON.stringify(value, null, 2);
|
|
28
|
+
const isDirty = draft !== serializedValue;
|
|
29
|
+
let isValidJsonObject = false;
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(draft);
|
|
32
|
+
isValidJsonObject =
|
|
33
|
+
Boolean(parsed) && typeof parsed === 'object' && !Array.isArray(parsed);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// ignore
|
|
37
|
+
}
|
|
38
|
+
return (_jsxs(Popover, { open: open, onOpenChange: handleOpenChange, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", size: "icon", className: "h-6 w-6", title: "Edit map config", children: _jsx(PencilIcon, { className: "h-3.5 w-3.5" }) }) }), _jsx(PopoverContent, { side: "bottom", align: "end", className: "w-[500px] p-0", onInteractOutside: (event) => {
|
|
39
|
+
if (isDirty)
|
|
40
|
+
event.preventDefault();
|
|
41
|
+
}, children: _jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: "h-72 overflow-hidden", children: _jsx(MosaicCodeMirrorEditor, { value: draft, onChange: (nextValue) => setDraft(nextValue ?? ''), className: "h-full" }) }), _jsxs("div", { className: "flex items-center justify-end gap-2 border-t p-2", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: () => setOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", disabled: !isDirty || !isValidJsonObject, onClick: handleApply, children: "Apply" })] })] }) })] }));
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=DeckMapConfigPopoverEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeckMapConfigPopoverEditor.js","sourceRoot":"","sources":["../src/DeckMapConfigPopoverEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import {MosaicCodeMirrorEditor} from '@sqlrooms/mosaic';\nimport {Button, Popover, PopoverContent, PopoverTrigger} from '@sqlrooms/ui';\nimport {PencilIcon} from 'lucide-react';\nimport React, {useCallback, useState} from 'react';\n\ntype DeckMapConfigPopoverEditorProps = {\n value: Record<string, unknown>;\n onApply: (value: Record<string, unknown>) => void;\n};\n\nexport const DeckMapConfigPopoverEditor: React.FC<\n DeckMapConfigPopoverEditorProps\n> = ({value, onApply}) => {\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState(() => JSON.stringify(value, null, 2));\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n setOpen(nextOpen);\n if (nextOpen) {\n setDraft(JSON.stringify(value, null, 2));\n }\n },\n [value],\n );\n\n const handleApply = useCallback(() => {\n try {\n const parsed = JSON.parse(draft);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n onApply(parsed as Record<string, unknown>);\n setOpen(false);\n }\n } catch {\n // Invalid JSON — keep the editor open.\n }\n }, [draft, onApply]);\n\n const serializedValue = JSON.stringify(value, null, 2);\n const isDirty = draft !== serializedValue;\n let isValidJsonObject = false;\n try {\n const parsed = JSON.parse(draft);\n isValidJsonObject =\n Boolean(parsed) && typeof parsed === 'object' && !Array.isArray(parsed);\n } catch {\n // ignore\n }\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n title=\"Edit map config\"\n >\n <PencilIcon className=\"h-3.5 w-3.5\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n side=\"bottom\"\n align=\"end\"\n className=\"w-[500px] p-0\"\n onInteractOutside={(event) => {\n if (isDirty) event.preventDefault();\n }}\n >\n <div className=\"flex flex-col\">\n <div className=\"h-72 overflow-hidden\">\n <MosaicCodeMirrorEditor\n value={draft}\n onChange={(nextValue: string | undefined) =>\n setDraft(nextValue ?? '')\n }\n className=\"h-full\"\n />\n </div>\n <div className=\"flex items-center justify-end gap-2 border-t p-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={() => setOpen(false)}>\n Cancel\n </Button>\n <Button\n size=\"sm\"\n disabled={!isDirty || !isValidJsonObject}\n onClick={handleApply}\n >\n Apply\n </Button>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CreateDeckJsonSpecFromDatasetsOptions, DeckJsonMapSpec } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Generate a conservative starter Deck JSON spec from SQLRooms datasets.
|
|
4
|
+
*
|
|
5
|
+
* The helper favors predictable defaults:
|
|
6
|
+
* native point/line/polygon datasets become the matching GeoArrow layer, while
|
|
7
|
+
* mixed or unsupported inputs fall back to `GeoJsonLayer`. Callers can provide
|
|
8
|
+
* semantic hints for special layers such as trips, arcs, H3, or heatmaps.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createDeckJsonSpecFromDatasets(options: CreateDeckJsonSpecFromDatasetsOptions): DeckJsonMapSpec;
|
|
11
|
+
//# sourceMappingURL=createDeckJsonSpecFromDatasets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDeckJsonSpecFromDatasets.d.ts","sourceRoot":"","sources":["../src/createDeckJsonSpecFromDatasets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qCAAqC,EACrC,eAAe,EAEhB,MAAM,SAAS,CAAC;AAuFjB;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,qCAAqC,GAC7C,eAAe,CAcjB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { toArrowTable } from './datasets/tableAdapter';
|
|
2
|
+
import { prepareDeckDataset } from './prepare/prepareDeckDataset';
|
|
3
|
+
function buildLayerConfig(options) {
|
|
4
|
+
const { datasetId, input, hint } = options;
|
|
5
|
+
return {
|
|
6
|
+
dataset: datasetId,
|
|
7
|
+
geometryColumn: input.geometryColumn,
|
|
8
|
+
geometryEncodingHint: input.geometryEncodingHint,
|
|
9
|
+
sourceGeometryColumn: hint?.sourceGeometryColumn,
|
|
10
|
+
targetGeometryColumn: hint?.targetGeometryColumn,
|
|
11
|
+
timestampColumn: hint?.timestampColumn,
|
|
12
|
+
hexagonColumn: hint?.hexagonColumn,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function resolveExplicitLayerType(hint) {
|
|
16
|
+
if (hint?.type) {
|
|
17
|
+
return hint.type;
|
|
18
|
+
}
|
|
19
|
+
if (hint?.prefer === 'heatmap') {
|
|
20
|
+
return 'GeoArrowHeatmapLayer';
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
function isArrowTableDatasetInput(input) {
|
|
25
|
+
return Boolean(input && typeof input === 'object' && 'arrowTable' in input);
|
|
26
|
+
}
|
|
27
|
+
function chooseDefaultLayerType(datasetId, input, hint) {
|
|
28
|
+
const explicitType = resolveExplicitLayerType(hint);
|
|
29
|
+
if (explicitType) {
|
|
30
|
+
return explicitType;
|
|
31
|
+
}
|
|
32
|
+
if (!isArrowTableDatasetInput(input) || !input.arrowTable) {
|
|
33
|
+
return 'GeoJsonLayer';
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const prepared = prepareDeckDataset({
|
|
37
|
+
datasetId,
|
|
38
|
+
table: toArrowTable(input.arrowTable),
|
|
39
|
+
geometryColumn: input.geometryColumn,
|
|
40
|
+
geometryEncodingHint: input.geometryEncodingHint,
|
|
41
|
+
});
|
|
42
|
+
const resolved = prepared.resolveGeometry();
|
|
43
|
+
switch (resolved.encoding) {
|
|
44
|
+
case 'geoarrow.point':
|
|
45
|
+
case 'geoarrow.multipoint':
|
|
46
|
+
return hint?.prefer === 'heatmap'
|
|
47
|
+
? 'GeoArrowHeatmapLayer'
|
|
48
|
+
: 'GeoArrowScatterplotLayer';
|
|
49
|
+
case 'geoarrow.linestring':
|
|
50
|
+
case 'geoarrow.multilinestring':
|
|
51
|
+
return 'GeoArrowPathLayer';
|
|
52
|
+
case 'geoarrow.polygon':
|
|
53
|
+
case 'geoarrow.multipolygon':
|
|
54
|
+
return 'GeoArrowPolygonLayer';
|
|
55
|
+
default:
|
|
56
|
+
return 'GeoJsonLayer';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return 'GeoJsonLayer';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Generate a conservative starter Deck JSON spec from SQLRooms datasets.
|
|
65
|
+
*
|
|
66
|
+
* The helper favors predictable defaults:
|
|
67
|
+
* native point/line/polygon datasets become the matching GeoArrow layer, while
|
|
68
|
+
* mixed or unsupported inputs fall back to `GeoJsonLayer`. Callers can provide
|
|
69
|
+
* semantic hints for special layers such as trips, arcs, H3, or heatmaps.
|
|
70
|
+
*/
|
|
71
|
+
export function createDeckJsonSpecFromDatasets(options) {
|
|
72
|
+
const { datasets, hints } = options;
|
|
73
|
+
return {
|
|
74
|
+
layers: Object.entries(datasets).map(([datasetId, input]) => ({
|
|
75
|
+
'@@type': chooseDefaultLayerType(datasetId, input, hints?.[datasetId]),
|
|
76
|
+
id: datasetId,
|
|
77
|
+
_sqlroomsBinding: buildLayerConfig({
|
|
78
|
+
datasetId,
|
|
79
|
+
input,
|
|
80
|
+
hint: hints?.[datasetId],
|
|
81
|
+
}),
|
|
82
|
+
})),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=createDeckJsonSpecFromDatasets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDeckJsonSpecFromDatasets.js","sourceRoot":"","sources":["../src/createDeckJsonSpecFromDatasets.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAEhE,SAAS,gBAAgB,CAAC,OAIzB;IACC,MAAM,EAAC,SAAS,EAAE,KAAK,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC;IAEzC,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,oBAAoB,EAAE,IAAI,EAAE,oBAAoB;QAChD,oBAAoB,EAAE,IAAI,EAAE,oBAAoB;QAChD,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,aAAa,EAAE,IAAI,EAAE,aAAa;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAA8B;IAC9D,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,sBAA+B,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc;IAEd,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAC7B,SAAiB,EACjB,KAGC,EACD,IAA8B;IAE9B,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1D,OAAO,cAAuB,CAAC;IACjC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YAClC,SAAS;YACT,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;YACrC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;SACjD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE5C,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1B,KAAK,gBAAgB,CAAC;YACtB,KAAK,qBAAqB;gBACxB,OAAO,IAAI,EAAE,MAAM,KAAK,SAAS;oBAC/B,CAAC,CAAE,sBAAgC;oBACnC,CAAC,CAAE,0BAAoC,CAAC;YAC5C,KAAK,qBAAqB,CAAC;YAC3B,KAAK,0BAA0B;gBAC7B,OAAO,mBAA4B,CAAC;YACtC,KAAK,kBAAkB,CAAC;YACxB,KAAK,uBAAuB;gBAC1B,OAAO,sBAA+B,CAAC;YACzC;gBACE,OAAO,cAAuB,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAuB,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA8C;IAE9C,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,OAAO,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,QAAQ,EAAE,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;YACtE,EAAE,EAAE,SAAS;YACb,gBAAgB,EAAE,gBAAgB,CAAC;gBACjC,SAAS;gBACT,KAAK;gBACL,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC;aACzB,CAAC;SACH,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC","sourcesContent":["import type {\n DeckArrowTableDatasetInput,\n CreateDeckJsonSpecFromDatasetsOptions,\n DeckJsonMapSpec,\n DeckJsonSpecDatasetHint,\n} from './types';\nimport type {GeometryEncodingHint} from './prepare/types';\nimport {toArrowTable} from './datasets/tableAdapter';\nimport {prepareDeckDataset} from './prepare/prepareDeckDataset';\n\nfunction buildLayerConfig(options: {\n datasetId: string;\n input: {geometryColumn?: string; geometryEncodingHint?: GeometryEncodingHint};\n hint?: DeckJsonSpecDatasetHint;\n}) {\n const {datasetId, input, hint} = options;\n\n return {\n dataset: datasetId,\n geometryColumn: input.geometryColumn,\n geometryEncodingHint: input.geometryEncodingHint,\n sourceGeometryColumn: hint?.sourceGeometryColumn,\n targetGeometryColumn: hint?.targetGeometryColumn,\n timestampColumn: hint?.timestampColumn,\n hexagonColumn: hint?.hexagonColumn,\n };\n}\n\nfunction resolveExplicitLayerType(hint?: DeckJsonSpecDatasetHint) {\n if (hint?.type) {\n return hint.type;\n }\n\n if (hint?.prefer === 'heatmap') {\n return 'GeoArrowHeatmapLayer' as const;\n }\n\n return undefined;\n}\n\nfunction isArrowTableDatasetInput(\n input: unknown,\n): input is DeckArrowTableDatasetInput {\n return Boolean(input && typeof input === 'object' && 'arrowTable' in input);\n}\n\nfunction chooseDefaultLayerType(\n datasetId: string,\n input: {\n geometryColumn?: string;\n geometryEncodingHint?: GeometryEncodingHint;\n },\n hint?: DeckJsonSpecDatasetHint,\n) {\n const explicitType = resolveExplicitLayerType(hint);\n if (explicitType) {\n return explicitType;\n }\n\n if (!isArrowTableDatasetInput(input) || !input.arrowTable) {\n return 'GeoJsonLayer' as const;\n }\n\n try {\n const prepared = prepareDeckDataset({\n datasetId,\n table: toArrowTable(input.arrowTable),\n geometryColumn: input.geometryColumn,\n geometryEncodingHint: input.geometryEncodingHint,\n });\n const resolved = prepared.resolveGeometry();\n\n switch (resolved.encoding) {\n case 'geoarrow.point':\n case 'geoarrow.multipoint':\n return hint?.prefer === 'heatmap'\n ? ('GeoArrowHeatmapLayer' as const)\n : ('GeoArrowScatterplotLayer' as const);\n case 'geoarrow.linestring':\n case 'geoarrow.multilinestring':\n return 'GeoArrowPathLayer' as const;\n case 'geoarrow.polygon':\n case 'geoarrow.multipolygon':\n return 'GeoArrowPolygonLayer' as const;\n default:\n return 'GeoJsonLayer' as const;\n }\n } catch {\n return 'GeoJsonLayer' as const;\n }\n}\n\n/**\n * Generate a conservative starter Deck JSON spec from SQLRooms datasets.\n *\n * The helper favors predictable defaults:\n * native point/line/polygon datasets become the matching GeoArrow layer, while\n * mixed or unsupported inputs fall back to `GeoJsonLayer`. Callers can provide\n * semantic hints for special layers such as trips, arcs, H3, or heatmaps.\n */\nexport function createDeckJsonSpecFromDatasets(\n options: CreateDeckJsonSpecFromDatasetsOptions,\n): DeckJsonMapSpec {\n const {datasets, hints} = options;\n\n return {\n layers: Object.entries(datasets).map(([datasetId, input]) => ({\n '@@type': chooseDefaultLayerType(datasetId, input, hints?.[datasetId]),\n id: datasetId,\n _sqlroomsBinding: buildLayerConfig({\n datasetId,\n input,\n hint: hints?.[datasetId],\n }),\n })),\n };\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type MosaicDashboardPanelRenderer } from '@sqlrooms/mosaic';
|
|
2
|
+
export declare const deckMapDashboardPanelRenderer: MosaicDashboardPanelRenderer;
|
|
3
|
+
export declare const deckMapDashboardAddPanelAction: import('@sqlrooms/mosaic').MosaicDashboardAddPanelAction;
|
|
4
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../src/dashboard.tsx"],"names":[],"mappings":"AAWA,OAAO,EAIL,KAAK,4BAA4B,EAKlC,MAAM,kBAAkB,CAAC;AAuoB1B,eAAO,MAAM,6BAA6B,EAAE,4BAI3C,CAAC;AAqFF,eAAO,MAAM,8BAA8B,EAAE,OAAO,kBAAkB,EAAE,6BASrE,CAAC"}
|