kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
264 lines (233 loc) • 5.97 kB
TypeScript
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
import {RGBColor, Merge, RequireFrom} from './types';
import {Filter, InteractionConfig, AnimationConfig, SplitMap, Feature} from './reducers';
import {LayerTextLabel} from './layers';
export type SavedFilter = {
dataId: Filter['dataId'];
id: Filter['id'];
name: Filter['name'];
type: Filter['type'];
value: Filter['value'];
// deprecated
enlarged?: Filter['enlarged'];
view?: Filter['view'];
plotType: Filter['plotType'];
yAxis: {
name: string;
type: string;
} | null;
speed: Filter['speed'];
layerId: Filter['layerId'];
syncedWithLayerTimeline: Filter['syncedWithLayerTimeline'];
syncTimelineMode: Filter['syncTimelineMode'];
};
export type MinSavedFilter = RequireFrom<SavedFilter, 'dataId' | 'id' | 'name' | 'type' | 'value'>;
export type ParsedFilter = SavedFilter | MinSavedFilter;
export type SavedInteractionConfig = {
tooltip: InteractionConfig['tooltip']['config'] & {
enabled: boolean;
};
geocoder: {
enabled: boolean;
};
brush: InteractionConfig['brush']['config'] & {
enabled: boolean;
};
coordinate: {
enabled: boolean;
};
};
export type SavedScale = string;
export type SavedVisualChannels = {
[key: string]: SavedField | SavedScale;
};
export type SavedLayer = {
id: string;
type: string;
config: {
dataId: string;
label: string;
color: RGBColor;
highlightColor?: RGBColor;
columns: {
[key: string]: string;
};
columnMode: string;
isVisible: boolean;
visConfig: Record<string, any>;
hidden: boolean;
textLabel: Merge<LayerTextLabel, {field: {name: string; type: string} | null}>;
};
visualChannels: SavedVisualChannels;
};
export type MinSavedLayerConfig = RequireFrom<SavedLayer['config'], 'dataId' | 'columns'>;
export type MinSavedLayer = {
id: string;
type: string;
config: MinSavedLayerConfig;
visualChannels?: SavedVisualChannels;
};
export type ParsedLayer = SavedLayer | MinSavedLayer;
export type ParsedEffect = {
id: string;
type: string;
isEnabled: boolean;
parameters: Record<string, number | [number, number] | {value: number}>;
};
export type SavedEffect = ParsedEffect;
export type SavedAnimationConfig = {
currentTime: AnimationConfig['currentTime'];
speed: AnimationConfig['speed'];
};
export type SavedEditor = {
features: Feature[];
visible: boolean;
};
export type SavedVisState = {
filters: SavedFilter[];
layers: SavedLayer[];
effects: SavedEffect[];
interactionConfig: SavedInteractionConfig;
layerBlending: string;
overlayBlending?: string;
splitMaps: SplitMap[];
animationConfig: SavedAnimationConfig;
editor?: SavedEditor;
};
// Min saved config can be passed to addDataToMap
export type MinSavedVisStateV1 = {
filters?: MinSavedFilter[];
layers?: MinSavedLayer[];
effects?: SavedEffect[];
interactionConfig?: Partial<SavedInteractionConfig>;
layerBlending?: string;
overlayBlending?: string;
splitMaps?: SplitMap[];
animationConfig?: SavedAnimationConfig;
editor?: SavedEditor;
};
export type ParsedVisState = {
layers?: ParsedLayer[];
effects?: ParsedEffect[];
filters?: ParsedFilter[];
effects?: ParsedEffect[];
interactionConfig?: Partial<SavedInteractionConfig>;
layerBlending?: string;
overlayBlending?: string;
splitMaps?: SplitMap[];
animationConfig?: Partial<SavedAnimationConfig>;
};
export type ParsedUiState = {
mapControls: {
mapLegend: {
active: boolean;
settings: {
position: string;
contentHeight: number;
};
};
};
};
export type SavedMapState = {
bearing: number;
dragRotate: boolean;
latitude: number;
longitude: number;
pitch: number;
zoom: number;
isSplit: boolean;
};
export type SavedMapStateV1 = SavedMapState;
export type MinSavedMapStateV1 = Partial<SavedMapState>;
export type ParsedMapState = Partial<SavedMapState>;
export type SavedLayerGroups = {
[key: string]: boolean;
};
export type SavedCustomMapStyle = {
[key: string]: {
accessToken?: string;
custom: boolean;
icon: string;
id: string;
label: string;
url: string;
};
};
export type SavedMapStyle = {
styleType: string;
topLayerGroups: SavedLayerGroups;
visibleLayerGroups: SavedLayerGroups;
threeDBuildingColor: RGBColor;
mapStyles: SavedCustomMapStyle;
};
export type SavedMapStyleV1 = SavedMapStyle;
export type MinSavedMapStyleV1 = Partial<SavedMapStyleV1>;
export type ParsedMapStyle = Partial<SavedMapStyleV1>;
/** Schema for v1 saved configuration */
export type SavedConfigV1 = {
version: 'v1';
config: {
visState: SavedVisState;
mapState: SavedMapState;
mapStyle: SavedMapStyle;
};
};
// supported by addDataToMap
export type MinSavedConfigV1 = {
version: 'v1';
config: {
visState?: MinSavedVisStateV1;
mapState?: MinSavedMapStateV1;
mapStyle?: MinSavedMapStyleV1;
};
};
/** Schema for a parsed configuration ("normalized" across versions) */
export type ParsedConfig = {
visState?: ParsedVisState;
mapState?: ParsedMapState;
mapStyle?: ParsedMapStyle;
uiState?: ParsedUiState;
};
export type SavedField = {
name: string;
type: string;
} | null;
export type ParsedField = {
name: string;
type: string;
format: string;
analyzerType: string;
};
export type SavedDatasetV1 = {
version: 'v1';
data: {
id: string;
label: string;
color: RGBColor;
allData: any[][];
fields: SavedField[];
};
};
export type ParsedDataset = {
data: {
fields: ParsedField[];
rows: any[][];
};
info: {
id?: string;
label?: string;
color?: RGBColor;
};
};
export type SavedMap = {
datasets: SavedDatasetV1[];
config: SavedConfigV1;
info: {
app: string;
created_at: string;
title: string;
description: string;
};
};
export type LoadedMap = {datasets?: ParsedDataset[] | null; config?: ParsedConfig | null};