@sqlrooms/deck 0.29.0-rc.11 → 0.29.0-rc.13
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 +193 -35
- package/dist/BlockMapSettings.d.ts.map +1 -1
- package/dist/BlockMapSettings.js +4 -16
- package/dist/BlockMapSettings.js.map +1 -1
- package/dist/DashboardMapSettings.d.ts.map +1 -1
- package/dist/DashboardMapSettings.js +7 -10
- package/dist/DashboardMapSettings.js.map +1 -1
- package/dist/DeckJsonMap.d.ts.map +1 -1
- package/dist/DeckJsonMap.js +75 -23
- package/dist/DeckJsonMap.js.map +1 -1
- package/dist/DeckJsonMapSpec.d.ts +41 -0
- package/dist/DeckJsonMapSpec.d.ts.map +1 -1
- package/dist/DeckJsonMapSpec.js +2 -0
- package/dist/DeckJsonMapSpec.js.map +1 -1
- package/dist/DeckMapBasemapSelect.d.ts +9 -0
- package/dist/DeckMapBasemapSelect.d.ts.map +1 -0
- package/dist/DeckMapBasemapSelect.js +20 -0
- package/dist/DeckMapBasemapSelect.js.map +1 -0
- package/dist/DeckMapDefaultStylesProvider.d.ts +13 -19
- package/dist/DeckMapDefaultStylesProvider.d.ts.map +1 -1
- package/dist/DeckMapDefaultStylesProvider.js +11 -18
- package/dist/DeckMapDefaultStylesProvider.js.map +1 -1
- package/dist/DeckMapSurface.d.ts +1 -1
- package/dist/DeckMapSurface.js +1 -1
- package/dist/DeckMapSurface.js.map +1 -1
- package/dist/DeckMapsSlice.d.ts +5 -0
- package/dist/DeckMapsSlice.d.ts.map +1 -1
- package/dist/DeckMapsSlice.js +6 -3
- package/dist/DeckMapsSlice.js.map +1 -1
- package/dist/MapSettings.d.ts +14 -0
- package/dist/MapSettings.d.ts.map +1 -1
- package/dist/MapSettings.js +548 -192
- package/dist/MapSettings.js.map +1 -1
- package/dist/MapSettingsControls.d.ts +8 -1
- package/dist/MapSettingsControls.d.ts.map +1 -1
- package/dist/MapSettingsControls.js +24 -2
- package/dist/MapSettingsControls.js.map +1 -1
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +20 -12
- package/dist/ai.js.map +1 -1
- package/dist/aiNormalize.d.ts.map +1 -1
- package/dist/aiNormalize.js +2 -1
- package/dist/aiNormalize.js.map +1 -1
- package/dist/basemap.d.ts +23 -0
- package/dist/basemap.d.ts.map +1 -0
- package/dist/basemap.js +23 -0
- package/dist/basemap.js.map +1 -0
- package/dist/block.d.ts +1 -1
- package/dist/block.d.ts.map +1 -1
- package/dist/block.js +13 -9
- package/dist/block.js.map +1 -1
- package/dist/createOrUpdateDeckMapResource.d.ts +6 -2
- package/dist/createOrUpdateDeckMapResource.d.ts.map +1 -1
- package/dist/createOrUpdateDeckMapResource.js +57 -4
- package/dist/createOrUpdateDeckMapResource.js.map +1 -1
- package/dist/datasets/PreparedDatasetStore.d.ts +3 -4
- package/dist/datasets/PreparedDatasetStore.d.ts.map +1 -1
- package/dist/datasets/PreparedDatasetStore.js +4 -8
- package/dist/datasets/PreparedDatasetStore.js.map +1 -1
- package/dist/datasets/helpers.d.ts +39 -2
- package/dist/datasets/helpers.d.ts.map +1 -1
- package/dist/datasets/helpers.js +86 -3
- package/dist/datasets/helpers.js.map +1 -1
- package/dist/datasets/usePreparedDatasetStates.d.ts.map +1 -1
- package/dist/datasets/usePreparedDatasetStates.js +12 -8
- package/dist/datasets/usePreparedDatasetStates.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/json/colorScaleFunction.d.ts +12 -4
- package/dist/json/colorScaleFunction.d.ts.map +1 -1
- package/dist/json/colorScaleFunction.js.map +1 -1
- package/dist/json/compileColorScale.d.ts +3 -2
- package/dist/json/compileColorScale.d.ts.map +1 -1
- package/dist/json/compileColorScale.js +16 -1
- package/dist/json/compileColorScale.js.map +1 -1
- package/dist/json/createDeckJsonConfiguration.d.ts.map +1 -1
- package/dist/json/createDeckJsonConfiguration.js +235 -175
- package/dist/json/createDeckJsonConfiguration.js.map +1 -1
- package/dist/json/defaultClasses.d.ts.map +1 -1
- package/dist/json/defaultClasses.js +3 -3
- package/dist/json/defaultClasses.js.map +1 -1
- package/dist/json/extractColorScaleLegends.d.ts.map +1 -1
- package/dist/json/extractColorScaleLegends.js +41 -26
- package/dist/json/extractColorScaleLegends.js.map +1 -1
- package/dist/json/heatmapDefaults.d.ts +17 -7
- package/dist/json/heatmapDefaults.d.ts.map +1 -1
- package/dist/json/heatmapDefaults.js +54 -12
- package/dist/json/heatmapDefaults.js.map +1 -1
- package/dist/json/layers/DeckHeatmapLayer.d.ts +32 -0
- package/dist/json/layers/DeckHeatmapLayer.d.ts.map +1 -0
- package/dist/json/layers/DeckHeatmapLayer.js +69 -0
- package/dist/json/layers/DeckHeatmapLayer.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 +13 -5
- package/dist/json/rewriteGeoArrowAccessors.js.map +1 -1
- package/dist/json/scaleFunction.d.ts +5 -8
- package/dist/json/scaleFunction.d.ts.map +1 -1
- package/dist/json/scaleFunction.js +30 -5
- package/dist/json/scaleFunction.js.map +1 -1
- package/dist/mapAiConfig.d.ts +6 -0
- package/dist/mapAiConfig.d.ts.map +1 -1
- package/dist/mapAiConfig.js +7 -0
- package/dist/mapAiConfig.js.map +1 -1
- package/dist/mapAiSharedInstructions.d.ts +1 -1
- package/dist/mapAiSharedInstructions.d.ts.map +1 -1
- package/dist/mapAiSharedInstructions.js +4 -3
- package/dist/mapAiSharedInstructions.js.map +1 -1
- package/dist/mapConfig.d.ts +6 -1
- package/dist/mapConfig.d.ts.map +1 -1
- package/dist/mapConfig.js +28 -3
- package/dist/mapConfig.js.map +1 -1
- package/dist/mapConfigUtils.d.ts +22 -0
- package/dist/mapConfigUtils.d.ts.map +1 -1
- package/dist/mapConfigUtils.js +152 -5
- package/dist/mapConfigUtils.js.map +1 -1
- package/dist/mapLayerConfigUtils.d.ts +55 -0
- package/dist/mapLayerConfigUtils.d.ts.map +1 -1
- package/dist/mapLayerConfigUtils.js +222 -11
- package/dist/mapLayerConfigUtils.js.map +1 -1
- package/dist/mapResourceAuthoring.d.ts +1 -1
- package/dist/mapResourceAuthoring.d.ts.map +1 -1
- package/dist/mapResourceAuthoring.js +14 -7
- package/dist/mapResourceAuthoring.js.map +1 -1
- package/dist/mapStyles.d.ts +16 -0
- package/dist/mapStyles.d.ts.map +1 -0
- package/dist/mapStyles.js +32 -0
- package/dist/mapStyles.js.map +1 -0
- package/dist/prepare/prepareDeckDataset.d.ts.map +1 -1
- package/dist/prepare/prepareDeckDataset.js +1 -0
- package/dist/prepare/prepareDeckDataset.js.map +1 -1
- package/dist/prepare/types.d.ts +3 -0
- package/dist/prepare/types.d.ts.map +1 -1
- package/dist/prepare/types.js.map +1 -1
- package/dist/prepare/wkbDecoder.d.ts.map +1 -1
- package/dist/prepare/wkbDecoder.js +62 -16
- package/dist/prepare/wkbDecoder.js.map +1 -1
- package/dist/prepare/wkbParser.d.ts +2 -0
- package/dist/prepare/wkbParser.d.ts.map +1 -1
- package/dist/prepare/wkbParser.js +1 -0
- package/dist/prepare/wkbParser.js.map +1 -1
- package/dist/protomapsStyles.d.ts +18 -0
- package/dist/protomapsStyles.d.ts.map +1 -0
- package/dist/protomapsStyles.js +38 -0
- package/dist/protomapsStyles.js.map +1 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +11 -9
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,oBAAoB,GAErB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAE3B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,GACrC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,oBAAoB,EAAyB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,oCAAoC,EACpC,2BAA2B,EAC3B,yCAAyC,EACzC,8BAA8B,EAC9B,mCAAmC,EACnC,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAC,8BAA8B,EAAC,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,oBAAoB,GAErB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAE3B,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,EAClC,oCAAoC,GACrC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,oBAAoB,EAAyB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,oCAAoC,EACpC,2BAA2B,EAC3B,yCAAyC,EACzC,8BAA8B,EAC9B,mCAAmC,EACnC,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GAI/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,gCAAgC,EAChC,8BAA8B,EAC9B,+BAA+B,GAIhC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,6BAA6B,GAI9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,cAAc,EACd,wBAAwB,GAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,qCAAqC,EACrC,8BAA8B,GAE/B,MAAM,6BAA6B,CAAC;AAerC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,uBAAuB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,oBAAoB,GAErB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,GAIpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,IAAI,wBAAwB,EAChD,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAUhE,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kCAAkC,EAClC,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nexport {ColorScaleLegend} from '@sqlrooms/color-scales';\nexport {createDeckJsonSpecFromDatasets} from './createDeckJsonSpecFromDatasets';\nexport {DeckMapBlockSettings} from './BlockMapSettings';\nexport {\n DeckMapSettingsPanel,\n type DeckMapSettingsPanelProps,\n} from './MapSettings';\nexport {\n DeckMapBlockRenderer,\n ensureDeckMapResourceState,\n type DeckMapBlockRendererProps,\n} from './block';\nexport {\n asDeckJsonMapConfig,\n createEmptyDeckMapConfig,\n createDeckMapDashboardPanelConfig,\n DEFAULT_DECK_MAP_MAX_DATA_POINTS,\n DECK_MAP_DASHBOARD_PANEL_TYPE,\n isDeckMapDashboardSqlDatasetSource,\n isDeckMapDashboardTableDatasetSource,\n} from './mapConfig';\nexport {getDeckMapDataPolicy, type DeckMapDataPolicy} from './mapDataPolicy';\nexport {\n applyDeckMapPointBinding,\n createDeckMapDashboardConfigForTable,\n createDeckMapConfigForTable,\n createDeckMapDashboardPanelConfigForTable,\n createDeckMapPointTransformSql,\n findDeckMapLongitudeLatitudeColumns,\n findGeometryColumn,\n findLongitudeLatitudeColumns,\n normalizeDeckMapFillColor,\n normalizeDeckMapPointConfig,\n quoteDeckMapSqlIdentifier,\n quoteDeckMapSqlTableReference,\n regenerateMapConfigForTable,\n} from './mapConfigUtils';\nexport type {\n DeckMapConfigColumn,\n DeckMapFillColor,\n DeckMapPointBinding,\n DeckMapTableReference,\n} from './mapConfigUtils';\nexport {\n getFirstDatasetSourceTableName,\n hasSqlOnlyDatasetSource,\n} from './datasetSourceUtils';\nexport type {DeckMapDatasetSourceConfig} from './datasetSourceUtils';\nexport {\n DeckMapResourceConfigParameter,\n DeckMapResourceToolParameters,\n} from './mapAiConfig';\nexport {\n normalizeAiDeckMapConfig,\n prepareAiDeckMapConfig,\n validateAndFixColorScaleFields,\n type NormalizeAiDeckMapConfigOptions,\n type PrepareAiDeckMapConfigOptions,\n type ResolveColorScaleTable,\n} from './aiNormalize';\nexport {\n DeckMapResourceConfigError,\n assertDeckMapResourceConfig,\n getDeckMapResourceAiInstructions,\n getDeckMapResourceConfigIssues,\n mergeDeckMapResourceConfigPatch,\n type DeckMapResourceConfigMergeOptions,\n type DeckMapResourceConfigIssue,\n type DeckMapResourceConfigValidationOptions,\n} from './mapResourceAuthoring';\nexport {\n createOrUpdateDeckMapResource,\n type CreateOrUpdateDeckMapResourceHost,\n type CreateOrUpdateDeckMapResourceParams,\n type CreateOrUpdateDeckMapResourceResult,\n} from './createOrUpdateDeckMapResource';\nexport {\n DeckMapResourceSchema,\n DeckMapsSliceConfig,\n createDeckMapsSlice,\n useStoreWithDeckMaps,\n} from './DeckMapsSlice';\nexport type {\n DeckMapResource,\n DeckMapRuntimeIssue,\n DeckMapRuntimeIssueReporter,\n DeckMapsSliceState,\n} from './DeckMapsSlice';\nexport {\n DeckMapSurface,\n directDeckMapDataAdapter,\n type DeckMapDataAdapter,\n type DeckMapSurfaceProps,\n} from './DeckMapSurface';\nexport {\n DECK_MAP_BLOCK_DEFAULT_HEIGHT,\n DECK_MAP_BLOCK_DEFAULT_TITLE,\n DECK_MAP_BLOCK_TYPE,\n createDeckMapBlockDocumentCommandType,\n createDeckMapBlockDocumentType,\n type DeckMapBlockDocumentRegistrationOptions,\n} from './blockDocumentRegistration';\nexport type {\n DeckMapConfigMode,\n DeckMapDashboardFitToDataConfig,\n CreateDeckMapDashboardPanelConfigOptions,\n DeckMapDashboardDatasetConfig,\n DeckMapDataPolicyOverride,\n DeckMapDashboardInteractionConfig,\n DeckMapDashboardPanelConfig,\n DeckMapConfig,\n DeckMapDatasetConfig,\n DeckMapDatasetSource,\n DeckMapFitToDataConfig,\n DeckMapInteractionConfig,\n} from './mapConfig';\nexport {DeckJsonMap} from './DeckJsonMap';\nexport {DECK_MAP_BASEMAP_STYLES, getDefaultDeckMapStyle} from './mapStyles';\nexport {\n createProtomapsBasemapProvider,\n createProtomapsDefaultStyles,\n createProtomapsStyle,\n type ProtomapsFlavor,\n} from './protomapsStyles';\nexport {\n DeckMapDefaultStylesProvider,\n useDeckMapDefaultStyles,\n} from './DeckMapDefaultStylesProvider';\nexport {\n resolveDeckMapStyle,\n type DeckMapBasemapProvider,\n type DeckMapDefaultStyles,\n type DeckMapStyle,\n} from './basemap';\nexport {\n ColorScaleFunction,\n GeometryEncodingHint as DeckGeometryEncodingHint,\n DeckJsonMapLayerSpec,\n DeckJsonMapSpec,\n LayerBindingConfig,\n LayerBindingProps,\n} from './DeckJsonMapSpec';\nexport {createDeckJsonConfiguration} from './json/createDeckJsonConfiguration';\nexport {prepareDeckDataset} from './prepare/prepareDeckDataset';\n\nexport type {ColorLegendConfig, ColorScaleConfig} from '@sqlrooms/color-scales';\nexport type {\n GeometryEncodingHint,\n PreparedDeckDataset,\n PreparedGeoArrowLayerData,\n ResolvedGeometryColumn,\n ResolvedGeometryEncoding,\n} from './prepare/types';\nexport {\n isArrowTableDatasetInput,\n isSqlDatasetInput,\n isTableDatasetInput,\n} from './types';\nexport {\n DECK_TABLE_DATASET_SOURCE_RELATION,\n createDeckTableDatasetSql,\n} from './datasets/tableDatasetSql';\nexport type {\n CreateDeckJsonSpecFromDatasetsOptions,\n DeckArrowTableDatasetInput,\n DeckAutoLayerType,\n DeckDatasetInput,\n DeckJsonMapHandle,\n DeckJsonMapProps,\n DeckJsonSpecDatasetHint,\n DeckSqlDatasetInput,\n DeckTableDatasetInput,\n DeckTable,\n PreparedDeckDatasetState,\n} from './types';\n"]}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import type { ColorScaleConfig } from '@sqlrooms/color-scales';
|
|
2
2
|
declare const SQLROOMS_COLOR_SCALE_MARKER: unique symbol;
|
|
3
|
+
/**
|
|
4
|
+
* `@sqlrooms/color-scales` config plus optional Deck per-accessor opacity.
|
|
5
|
+
* `opacity` is a SQLRooms `colorScale` JSON extension, not a color-scales field.
|
|
6
|
+
*/
|
|
7
|
+
export type DeckColorScaleConfig = ColorScaleConfig & {
|
|
8
|
+
/** Per-accessor opacity 0–1; multiplied into compiled RGBA alpha. */
|
|
9
|
+
opacity?: number;
|
|
10
|
+
};
|
|
3
11
|
export type ColorScaleMarker = {
|
|
4
|
-
colorScale:
|
|
12
|
+
colorScale: DeckColorScaleConfig;
|
|
5
13
|
[SQLROOMS_COLOR_SCALE_MARKER]: true;
|
|
6
14
|
};
|
|
7
|
-
export declare function createColorScaleMarker(value:
|
|
15
|
+
export declare function createColorScaleMarker(value: DeckColorScaleConfig): ColorScaleMarker;
|
|
8
16
|
export declare function isColorScaleMarker(value: unknown): value is ColorScaleMarker;
|
|
9
17
|
/** Names of layer accessor props that can carry a color scale. */
|
|
10
18
|
export type ColorScalePropName = 'getFillColor' | 'getLineColor' | 'getColor' | 'getSourceColor' | 'getTargetColor';
|
|
@@ -16,12 +24,12 @@ export declare const COLOR_SCALE_PROP_NAMES: readonly ColorScalePropName[];
|
|
|
16
24
|
*/
|
|
17
25
|
export declare function getColorScale(props: Record<string, unknown>): {
|
|
18
26
|
propName: ColorScalePropName;
|
|
19
|
-
colorScale:
|
|
27
|
+
colorScale: DeckColorScaleConfig;
|
|
20
28
|
} | undefined;
|
|
21
29
|
/** Returns every color scale entry found across all known accessor props on the layer. */
|
|
22
30
|
export declare function getAllColorScales(props: Record<string, unknown>): Array<{
|
|
23
31
|
propName: ColorScalePropName;
|
|
24
|
-
colorScale:
|
|
32
|
+
colorScale: DeckColorScaleConfig;
|
|
25
33
|
}>;
|
|
26
34
|
export {};
|
|
27
35
|
//# sourceMappingURL=colorScaleFunction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorScaleFunction.d.ts","sourceRoot":"","sources":["../../src/json/colorScaleFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAG7D,QAAA,MAAM,2BAA2B,eAEhC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"colorScaleFunction.d.ts","sourceRoot":"","sources":["../../src/json/colorScaleFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAG7D,QAAA,MAAM,2BAA2B,eAEhC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IACpD,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,oBAAoB,CAAC;IACjC,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC;CACrC,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAC1B,gBAAgB,CAKlB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAU5E;AAED,kEAAkE;AAClE,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,cAAc,GACd,UAAU,GACV,gBAAgB,GAChB,gBAAgB,CAAC;AAErB,2CAA2C;AAC3C,eAAO,MAAM,sBAAsB,EAAE,SAAS,kBAAkB,EAM/D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxD;IACE,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,oBAAoB,CAAC;CAClC,GACD,SAAS,CAGZ;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC;IACvE,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC,CAgBD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorScaleFunction.js","sourceRoot":"","sources":["../../src/json/colorScaleFunction.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAEnD,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAC5C,qCAAqC,CACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"colorScaleFunction.js","sourceRoot":"","sources":["../../src/json/colorScaleFunction.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAEnD,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAC5C,qCAAqC,CACtC,CAAC;AAgBF,MAAM,UAAU,sBAAsB,CACpC,KAA2B;IAE3B,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,CAAC,2BAA2B,CAAC,EAAE,IAAI;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,OAAO,CACZ,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACxB,KAAmD,CAClD,2BAA2B,CAC5B;QACD,OAAQ,KAAgC,CAAC,UAAU,KAAK,QAAQ;QAC/D,KAAgC,CAAC,UAAU,IAAI,IAAI,CACrD,CAAC;AACJ,CAAC;AAUD,2CAA2C;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAkC;IACnE,cAAc;IACd,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,gBAAgB;CACjB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAA8B;IAM1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB,CAAC,KAA8B;IAI9D,MAAM,OAAO,GAGR,EAAE,CAAC;IAER,KAAK,MAAM,QAAQ,IAAI,sBAAsB,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAC,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import type {ColorScaleConfig} from '@sqlrooms/color-scales';\nimport {isColorScaleFunction} from './layerConfig';\n\nconst SQLROOMS_COLOR_SCALE_MARKER = Symbol.for(\n '@sqlrooms/deck/sqlrooms-color-scale',\n);\n\n/**\n * `@sqlrooms/color-scales` config plus optional Deck per-accessor opacity.\n * `opacity` is a SQLRooms `colorScale` JSON extension, not a color-scales field.\n */\nexport type DeckColorScaleConfig = ColorScaleConfig & {\n /** Per-accessor opacity 0–1; multiplied into compiled RGBA alpha. */\n opacity?: number;\n};\n\nexport type ColorScaleMarker = {\n colorScale: DeckColorScaleConfig;\n [SQLROOMS_COLOR_SCALE_MARKER]: true;\n};\n\nexport function createColorScaleMarker(\n value: DeckColorScaleConfig,\n): ColorScaleMarker {\n return {\n colorScale: value,\n [SQLROOMS_COLOR_SCALE_MARKER]: true,\n };\n}\n\nexport function isColorScaleMarker(value: unknown): value is ColorScaleMarker {\n return Boolean(\n value &&\n typeof value === 'object' &&\n (value as {[SQLROOMS_COLOR_SCALE_MARKER]?: boolean})[\n SQLROOMS_COLOR_SCALE_MARKER\n ] &&\n typeof (value as {colorScale?: unknown}).colorScale === 'object' &&\n (value as {colorScale?: unknown}).colorScale != null,\n );\n}\n\n/** Names of layer accessor props that can carry a color scale. */\nexport type ColorScalePropName =\n | 'getFillColor'\n | 'getLineColor'\n | 'getColor'\n | 'getSourceColor'\n | 'getTargetColor';\n\n/** All known color accessor prop names. */\nexport const COLOR_SCALE_PROP_NAMES: readonly ColorScalePropName[] = [\n 'getFillColor',\n 'getLineColor',\n 'getColor',\n 'getSourceColor',\n 'getTargetColor',\n];\n\n/**\n * Returns the first color scale entry found on the layer props, if any.\n * Prefer {@link getAllColorScales} when a layer may define multiple color scale accessors.\n */\nexport function getColorScale(props: Record<string, unknown>):\n | {\n propName: ColorScalePropName;\n colorScale: DeckColorScaleConfig;\n }\n | undefined {\n const all = getAllColorScales(props);\n return all.length > 0 ? all[0] : undefined;\n}\n\n/** Returns every color scale entry found across all known accessor props on the layer. */\nexport function getAllColorScales(props: Record<string, unknown>): Array<{\n propName: ColorScalePropName;\n colorScale: DeckColorScaleConfig;\n}> {\n const results: Array<{\n propName: ColorScalePropName;\n colorScale: DeckColorScaleConfig;\n }> = [];\n\n for (const propName of COLOR_SCALE_PROP_NAMES) {\n const value = props[propName];\n if (isColorScaleMarker(value)) {\n results.push({propName, colorScale: value.colorScale});\n } else if (isColorScaleFunction(value)) {\n results.push({propName, colorScale: value});\n }\n }\n\n return results;\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type ColorScaleConfig, type ResolvedColorLegend } from '@sqlrooms/color-scales';
|
|
2
2
|
import type * as arrow from 'apache-arrow';
|
|
3
|
+
import type { DeckColorScaleConfig } from './colorScaleFunction';
|
|
3
4
|
export declare function compileColorScale(options: {
|
|
4
5
|
table: arrow.Table;
|
|
5
|
-
colorScale:
|
|
6
|
-
}): (value: unknown) =>
|
|
6
|
+
colorScale: DeckColorScaleConfig;
|
|
7
|
+
}): (value: unknown) => [number, number, number, number];
|
|
7
8
|
export declare function buildColorScaleLegend(options: {
|
|
8
9
|
table: arrow.Table;
|
|
9
10
|
colorScale: ColorScaleConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileColorScale.d.ts","sourceRoot":"","sources":["../../src/json/compileColorScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"compileColorScale.d.ts","sourceRoot":"","sources":["../../src/json/compileColorScale.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAuH/D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnB,UAAU,EAAE,oBAAoB,CAAC;CAClC,WA0BgB,OAAO,sCAgBvB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,mBAAmB,GAAG,IAAI,CAuB7B"}
|
|
@@ -99,7 +99,22 @@ export function compileColorScale(options) {
|
|
|
99
99
|
console.warn(`[compileColorScale] Failed to create color scale for field "${colorScale.field}":`, err);
|
|
100
100
|
return () => MISSING_FIELD_COLOR;
|
|
101
101
|
}
|
|
102
|
-
return (value) =>
|
|
102
|
+
return (value) => {
|
|
103
|
+
const color = mapper(getGeoArrowOrRowValue({ value, fieldName, vector }));
|
|
104
|
+
const rawOpacity = colorScale.opacity;
|
|
105
|
+
const opacity = typeof rawOpacity === 'number' && Number.isFinite(rawOpacity)
|
|
106
|
+
? Math.max(0, Math.min(1, rawOpacity))
|
|
107
|
+
: 1;
|
|
108
|
+
if (opacity >= 1)
|
|
109
|
+
return color;
|
|
110
|
+
const rgba = color;
|
|
111
|
+
return [
|
|
112
|
+
rgba[0],
|
|
113
|
+
rgba[1],
|
|
114
|
+
rgba[2],
|
|
115
|
+
Math.round(Math.max(0, Math.min(255, (rgba[3] ?? 255) * opacity))),
|
|
116
|
+
];
|
|
117
|
+
};
|
|
103
118
|
}
|
|
104
119
|
export function buildColorScaleLegend(options) {
|
|
105
120
|
const { table, colorScale } = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileColorScale.js","sourceRoot":"","sources":["../../src/json/compileColorScale.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n buildColorScaleLegend as buildGenericColorScaleLegend,\n coerceFiniteNumber,\n createColorScaleMapper,\n type ColorScaleConfig,\n type ResolvedColorLegend,\n} from '@sqlrooms/color-scales';\nimport type * as arrow from 'apache-arrow';\n\nfunction resolveFieldName(\n schemaOwner: arrow.Table | arrow.RecordBatch,\n requestedField: string,\n) {\n const exactMatch = schemaOwner.schema.fields.find(\n (field) => field.name === requestedField,\n )?.name;\n if (exactMatch) {\n return exactMatch;\n }\n\n const caseInsensitiveMatches = schemaOwner.schema.fields\n .map((field) => field.name)\n .filter(\n (fieldName) => fieldName.toLowerCase() === requestedField.toLowerCase(),\n );\n\n if (caseInsensitiveMatches.length === 1) {\n return caseInsensitiveMatches[0]!;\n }\n\n return undefined;\n}\n\nfunction getRowValue(row: unknown, fieldName: string) {\n if (!row || typeof row !== 'object') {\n return undefined;\n }\n\n const object = row as Record<string, unknown>;\n const sources = [\n object,\n object.properties as Record<string, unknown> | undefined,\n ].filter((value): value is Record<string, unknown> =>\n Boolean(value && typeof value === 'object'),\n );\n\n for (const source of sources) {\n if (fieldName in source) {\n return source[fieldName];\n }\n\n const caseInsensitiveMatches = Object.keys(source).filter(\n (key) => key.toLowerCase() === fieldName.toLowerCase(),\n );\n if (caseInsensitiveMatches.length === 1) {\n return source[caseInsensitiveMatches[0]!] as unknown;\n }\n }\n\n return undefined;\n}\n\nfunction getGeoArrowOrRowValue(options: {\n value: unknown;\n fieldName: string;\n vector: arrow.Vector;\n}) {\n const {value, fieldName, vector} = options;\n if (\n value &&\n typeof value === 'object' &&\n 'index' in value &&\n typeof (value as {index?: unknown}).index === 'number'\n ) {\n const objectInfo = value as {\n index: number;\n data?: {data?: arrow.Table | arrow.RecordBatch};\n };\n const batch = objectInfo.data?.data;\n const batchFieldName = batch\n ? resolveFieldName(batch, fieldName)\n : undefined;\n\n if (batch && batchFieldName) {\n return batch.getChild(batchFieldName)?.get(objectInfo.index);\n }\n\n if (batch) {\n // Batch is present (GeoArrow path) but the field wasn't found in it.\n // The index is batch-local and cannot be safely used against the global\n // vector which spans all batches. Return undefined so the mapper\n // applies nullColor rather than reading the wrong row.\n return undefined;\n }\n\n // No batch context (e.g. GeoJSON binary path): the index is global,\n // so using the table-level vector is safe.\n return vector.get(objectInfo.index);\n }\n\n return getRowValue(value, fieldName);\n}\n\nfunction getColumnValues(vector: arrow.Vector) {\n return Array.from({length: vector.length}, (_, index) => vector.get(index));\n}\n\nfunction getColumn(table: arrow.Table, field: string) {\n const resolvedFieldName = resolveFieldName(table, field);\n if (!resolvedFieldName) {\n throw new Error(`Unknown colorScale field \"${field}\".`);\n }\n\n const vector = table.getChild(resolvedFieldName);\n if (!vector) {\n throw new Error(`Unable to read colorScale field \"${resolvedFieldName}\".`);\n }\n\n return {\n fieldName: resolvedFieldName,\n vector,\n };\n}\n\nconst MISSING_FIELD_COLOR: [number, number, number, number] = [255, 0, 0, 200];\n\nexport function compileColorScale(options: {\n table: arrow.Table;\n colorScale: ColorScaleConfig;\n}) {\n const {table, colorScale} = options;\n let column;\n try {\n column = getColumn(table, colorScale.field);\n } catch {\n console.warn(\n `[compileColorScale] Field \"${colorScale.field}\" not found in dataset. Color scale will use fallback color.`,\n );\n return () => MISSING_FIELD_COLOR;\n }\n const {fieldName, vector} = column;\n let mapper: ReturnType<typeof createColorScaleMapper>;\n try {\n mapper = createColorScaleMapper({\n colorScale,\n values: getColumnValues(vector),\n });\n } catch (err) {\n console.warn(\n `[compileColorScale] Failed to create color scale for field \"${colorScale.field}\":`,\n err,\n );\n return () => MISSING_FIELD_COLOR;\n }\n\n return (value: unknown) =>\n mapper(getGeoArrowOrRowValue({value, fieldName, vector}));\n}\n\nexport function buildColorScaleLegend(options: {\n table: arrow.Table;\n colorScale: ColorScaleConfig;\n title?: string;\n}): ResolvedColorLegend | null {\n const {table, colorScale} = options;\n let column;\n try {\n column = getColumn(table, colorScale.field);\n } catch {\n return null;\n }\n const {vector} = column;\n const values = getColumnValues(vector);\n\n if (\n colorScale.type !== 'categorical' &&\n values.every((value) => coerceFiniteNumber(value) === undefined)\n ) {\n return null;\n }\n\n return buildGenericColorScaleLegend({\n colorScale,\n values,\n title: options.title,\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"compileColorScale.js","sourceRoot":"","sources":["../../src/json/compileColorScale.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,IAAI,4BAA4B,EACrD,kBAAkB,EAClB,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAIhC,SAAS,gBAAgB,CACvB,WAA4C,EAC5C,cAAsB;IAEtB,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CACzC,EAAE,IAAI,CAAC;IACR,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM;SACrD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CACxE,CAAC;IAEJ,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,sBAAsB,CAAC,CAAC,CAAE,CAAC;IACpC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,GAAY,EAAE,SAAiB;IAClD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,GAA8B,CAAC;IAC9C,MAAM,OAAO,GAAG;QACd,MAAM;QACN,MAAM,CAAC,UAAiD;KACzD,CAAC,MAAM,CAAC,CAAC,KAAK,EAAoC,EAAE,CACnD,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAC5C,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACvD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CACvD,CAAC;QACF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAE,CAAY,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAI9B;IACC,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;IAC3C,IACE,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,IAAI,KAAK;QAChB,OAAQ,KAA2B,CAAC,KAAK,KAAK,QAAQ,EACtD,CAAC;QACD,MAAM,UAAU,GAAG,KAGlB,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;QACpC,MAAM,cAAc,GAAG,KAAK;YAC1B,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;YACpC,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,KAAK,IAAI,cAAc,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,qEAAqE;YACrE,wEAAwE;YACxE,iEAAiE;YACjE,uDAAuD;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oEAAoE;QACpE,2CAA2C;QAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,eAAe,CAAC,MAAoB;IAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,SAAS,CAAC,KAAkB,EAAE,KAAa;IAClD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,iBAAiB,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,SAAS,EAAE,iBAAiB;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAAqC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAE/E,MAAM,UAAU,iBAAiB,CAAC,OAGjC;IACC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,OAAO,CAAC;IACpC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CACV,8BAA8B,UAAU,CAAC,KAAK,8DAA8D,CAC7G,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,mBAAmB,CAAC;IACnC,CAAC;IACD,MAAM,EAAC,SAAS,EAAE,MAAM,EAAC,GAAG,MAAM,CAAC;IACnC,IAAI,MAAiD,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,sBAAsB,CAAC;YAC9B,UAAU;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,+DAA+D,UAAU,CAAC,KAAK,IAAI,EACnF,GAAG,CACJ,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,KAAc,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC;QACtC,MAAM,OAAO,GACX,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC,CAAC;QACR,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,KAA0C,CAAC;QACxD,OAAO;YACL,IAAI,CAAC,CAAC,CAAC;YACP,IAAI,CAAC,CAAC,CAAC;YACP,IAAI,CAAC,CAAC,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;SAC/B,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAIrC;IACC,MAAM,EAAC,KAAK,EAAE,UAAU,EAAC,GAAG,OAAO,CAAC;IACpC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;IACxB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,IACE,UAAU,CAAC,IAAI,KAAK,aAAa;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAChE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,4BAA4B,CAAC;QAClC,UAAU;QACV,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import {\n buildColorScaleLegend as buildGenericColorScaleLegend,\n coerceFiniteNumber,\n createColorScaleMapper,\n type ColorScaleConfig,\n type ResolvedColorLegend,\n} from '@sqlrooms/color-scales';\nimport type * as arrow from 'apache-arrow';\nimport type {DeckColorScaleConfig} from './colorScaleFunction';\n\nfunction resolveFieldName(\n schemaOwner: arrow.Table | arrow.RecordBatch,\n requestedField: string,\n) {\n const exactMatch = schemaOwner.schema.fields.find(\n (field) => field.name === requestedField,\n )?.name;\n if (exactMatch) {\n return exactMatch;\n }\n\n const caseInsensitiveMatches = schemaOwner.schema.fields\n .map((field) => field.name)\n .filter(\n (fieldName) => fieldName.toLowerCase() === requestedField.toLowerCase(),\n );\n\n if (caseInsensitiveMatches.length === 1) {\n return caseInsensitiveMatches[0]!;\n }\n\n return undefined;\n}\n\nfunction getRowValue(row: unknown, fieldName: string) {\n if (!row || typeof row !== 'object') {\n return undefined;\n }\n\n const object = row as Record<string, unknown>;\n const sources = [\n object,\n object.properties as Record<string, unknown> | undefined,\n ].filter((value): value is Record<string, unknown> =>\n Boolean(value && typeof value === 'object'),\n );\n\n for (const source of sources) {\n if (fieldName in source) {\n return source[fieldName];\n }\n\n const caseInsensitiveMatches = Object.keys(source).filter(\n (key) => key.toLowerCase() === fieldName.toLowerCase(),\n );\n if (caseInsensitiveMatches.length === 1) {\n return source[caseInsensitiveMatches[0]!] as unknown;\n }\n }\n\n return undefined;\n}\n\nfunction getGeoArrowOrRowValue(options: {\n value: unknown;\n fieldName: string;\n vector: arrow.Vector;\n}) {\n const {value, fieldName, vector} = options;\n if (\n value &&\n typeof value === 'object' &&\n 'index' in value &&\n typeof (value as {index?: unknown}).index === 'number'\n ) {\n const objectInfo = value as {\n index: number;\n data?: {data?: arrow.Table | arrow.RecordBatch};\n };\n const batch = objectInfo.data?.data;\n const batchFieldName = batch\n ? resolveFieldName(batch, fieldName)\n : undefined;\n\n if (batch && batchFieldName) {\n return batch.getChild(batchFieldName)?.get(objectInfo.index);\n }\n\n if (batch) {\n // Batch is present (GeoArrow path) but the field wasn't found in it.\n // The index is batch-local and cannot be safely used against the global\n // vector which spans all batches. Return undefined so the mapper\n // applies nullColor rather than reading the wrong row.\n return undefined;\n }\n\n // No batch context (e.g. GeoJSON binary path): the index is global,\n // so using the table-level vector is safe.\n return vector.get(objectInfo.index);\n }\n\n return getRowValue(value, fieldName);\n}\n\nfunction getColumnValues(vector: arrow.Vector) {\n return Array.from({length: vector.length}, (_, index) => vector.get(index));\n}\n\nfunction getColumn(table: arrow.Table, field: string) {\n const resolvedFieldName = resolveFieldName(table, field);\n if (!resolvedFieldName) {\n throw new Error(`Unknown colorScale field \"${field}\".`);\n }\n\n const vector = table.getChild(resolvedFieldName);\n if (!vector) {\n throw new Error(`Unable to read colorScale field \"${resolvedFieldName}\".`);\n }\n\n return {\n fieldName: resolvedFieldName,\n vector,\n };\n}\n\nconst MISSING_FIELD_COLOR: [number, number, number, number] = [255, 0, 0, 200];\n\nexport function compileColorScale(options: {\n table: arrow.Table;\n colorScale: DeckColorScaleConfig;\n}) {\n const {table, colorScale} = options;\n let column;\n try {\n column = getColumn(table, colorScale.field);\n } catch {\n console.warn(\n `[compileColorScale] Field \"${colorScale.field}\" not found in dataset. Color scale will use fallback color.`,\n );\n return () => MISSING_FIELD_COLOR;\n }\n const {fieldName, vector} = column;\n let mapper: ReturnType<typeof createColorScaleMapper>;\n try {\n mapper = createColorScaleMapper({\n colorScale,\n values: getColumnValues(vector),\n });\n } catch (err) {\n console.warn(\n `[compileColorScale] Failed to create color scale for field \"${colorScale.field}\":`,\n err,\n );\n return () => MISSING_FIELD_COLOR;\n }\n\n return (value: unknown) => {\n const color = mapper(getGeoArrowOrRowValue({value, fieldName, vector}));\n const rawOpacity = colorScale.opacity;\n const opacity =\n typeof rawOpacity === 'number' && Number.isFinite(rawOpacity)\n ? Math.max(0, Math.min(1, rawOpacity))\n : 1;\n if (opacity >= 1) return color;\n const rgba = color as [number, number, number, number?];\n return [\n rgba[0],\n rgba[1],\n rgba[2],\n Math.round(Math.max(0, Math.min(255, (rgba[3] ?? 255) * opacity))),\n ] as [number, number, number, number];\n };\n}\n\nexport function buildColorScaleLegend(options: {\n table: arrow.Table;\n colorScale: ColorScaleConfig;\n title?: string;\n}): ResolvedColorLegend | null {\n const {table, colorScale} = options;\n let column;\n try {\n column = getColumn(table, colorScale.field);\n } catch {\n return null;\n }\n const {vector} = column;\n const values = getColumnValues(vector);\n\n if (\n colorScale.type !== 'categorical' &&\n values.every((value) => coerceFiniteNumber(value) === undefined)\n ) {\n return null;\n }\n\n return buildGenericColorScaleLegend({\n colorScale,\n values,\n title: options.title,\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDeckJsonConfiguration.d.ts","sourceRoot":"","sources":["../../src/json/createDeckJsonConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"createDeckJsonConfiguration.d.ts","sourceRoot":"","sources":["../../src/json/createDeckJsonConfiguration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAShD,OAAO,KAAK,EAAoB,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAkC1E,KAAK,kCAAkC,GAAG;IACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAsVF,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,qBAqO5C"}
|