import { VisState, Datasets } from './vis-state-updaters'; import { KeplerTable } from '../utils'; import { ParsedConfig, ParsedLayer } from 'schemas'; import { Layer, LayerColumns, LayerColumn } from 'layers'; import { TooltipInfo } from './vis-state-updaters'; import { SavedInteractionConfig } from 'schemas/schema-manager'; export type Merger = { merge: (state: VisState, config: any, fromConfig?: boolean) => VisState; prop: string; toMergeProp?: string; }; export type VisStateMergers = Merger[]; /** * Merge loaded filters with current state, if no fields or data are loaded * save it for later * */ export declare function mergeFilters(state: VisState, filtersToMerge: NonNullable['filters'], fromConfig?: boolean): VisState; export declare function createLayerFromConfig(state: VisState, layerConfig: any): Layer | null; export declare function serializeLayer(newLayer: any): ParsedLayer; /** * Merge layers from de-serialized state, if no fields or data are loaded * save it for later * */ export declare function mergeLayers(state: VisState, layersToMerge?: NonNullable['layers'], fromConfig?: boolean): VisState; export declare function insertLayerAtRightOrder(currentLayers: any, layersToInsert: any, currentOrder: any, preservedOrder?: string[]): { newLayerOrder: any; newLayers: any; }; /** * Merge interactions with saved config * */ export declare function mergeInteractions(state: VisState, interactionToBeMerged: Partial | undefined, fromConfig?: boolean): VisState; /** * Merge splitMaps config with current visStete. * 1. if current map is split, but splitMap DOESNOT contain maps * : don't merge anything * 2. if current map is NOT split, but splitMaps contain maps * : add to splitMaps, and add current layers to splitMaps */ export declare function mergeSplitMaps(state: VisState, splitMaps?: NonNullable['splitMaps'], fromConfig?: boolean): VisState; /** * Merge interactionConfig.tooltip with saved config, * validate fieldsToShow * * @param state * @param tooltipConfig * @return - {mergedTooltip: {}, unmergedTooltip: {}} */ export declare function mergeInteractionTooltipConfig(state: VisState, tooltipConfig?: Pick | null): { mergedTooltip: { [key: string]: import("./vis-state-updaters").TooltipField[]; }; unmergedTooltip: { [key: string]: import("./vis-state-updaters").TooltipField[]; }; }; /** * Merge layerBlending with saved * */ export declare function mergeLayerBlending(state: VisState, layerBlending: NonNullable['layerBlending'], fromConfig?: boolean): VisState; /** * Merge animation config */ export declare function mergeAnimationConfig(state: VisState, animation: NonNullable['animationConfig'], fromConfig?: boolean): VisState; /** * Validate saved layer columns with new data, * update fieldIdx based on new fields * * @param fields * @param savedCols * @param emptyCols * @return - validated columns or null */ export declare function validateSavedLayerColumns(fields: KeplerTable['fields'], savedCols: { [key: string]: string; }, emptyCols: LayerColumns): LayerColumns; export declare function validateColumn(column: LayerColumn & { validator?: typeof validateColumn; }, columns: LayerColumns, allFields: KeplerTable['fields']): boolean; /** * Validate saved text label config with new data * refer to vis-state-schema.js TextLabelSchemaV1 * * @param {Array} fields * @param {Object} savedTextLabel * @return {Object} - validated textlabel */ export declare function validateSavedTextLabel(fields: any, [layerTextLabel]: [any], savedTextLabel: any): {}[]; /** * Validate saved visual channels config with new data, * refer to vis-state-schema.js VisualChannelSchemaV1 */ export declare function validateSavedVisualChannels(fields: KeplerTable['fields'], newLayer: Layer, savedLayer: ParsedLayer): null | Layer; export declare function validateLayersByDatasets(datasets: Datasets, layerClasses: VisState['layerClasses'], layers?: NonNullable['layers']): { validated: Layer[]; failed: ParsedLayer[]; }; /** * Validate saved layer config with new data, * update fieldIdx based on new fields */ export declare function validateLayerWithData({ fields, id: dataId }: KeplerTable, savedLayer: ParsedLayer, layerClasses: VisState['layerClasses'], options?: { allowEmptyColumn?: boolean; }): Layer | null; export declare function isValidMerger(merger: Merger): boolean; export declare const VIS_STATE_MERGERS: VisStateMergers;