import { HashMap } from 'zrender/lib/core/util.js'; import GlobalModel from '../model/Global.js'; import ComponentModel, { ComponentModelConstructor } from '../model/Component.js'; import SeriesData from '../data/SeriesData.js'; import { ComponentOption, ComponentMainType, ComponentSubType, DisplayStateHostOption, OptionDataItem, OptionDataValue, TooltipRenderMode, Payload, OptionId, InterpolatableValue } from './types.js'; import SeriesModel from '../model/Series.js'; import CartesianAxisModel from '../coord/cartesian/AxisModel.js'; import GridModel from '../coord/cartesian/GridModel.js'; /** * If value is not array, then translate it to array. * @param {*} value * @return {Array} [value] or value */ export declare function normalizeToArray(value?: T | T[]): T[]; /** * Sync default option between normal and emphasis like `position` and `show` * In case some one will write code like * label: { * show: false, * position: 'outside', * fontSize: 18 * }, * emphasis: { * label: { show: true } * } */ export declare function defaultEmphasis(opt: DisplayStateHostOption, key: string, subOpts: string[]): void; export declare const TEXT_STYLE_OPTIONS: readonly ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"]; /** * The method do not ensure performance. * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] * This helper method retieves value from data. */ export declare function getDataItemValue(dataItem: OptionDataItem): OptionDataValue | OptionDataValue[]; /** * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}] * This helper method determine if dataItem has extra option besides value */ export declare function isDataItemOption(dataItem: OptionDataItem): boolean; export interface MappingExistingItem { id?: OptionId; name?: string; } /** * The array `MappingResult[]` exactly represents the content of the result * components array after merge. * The indices are the same as the `existings`. * Items will not be `null`/`undefined` even if the corresponding `existings` will be removed. */ declare type MappingResult = MappingResultItem[]; interface MappingResultItem { existing: T; newOption: ComponentOption; brandNew: boolean; keyInfo: { name: string; id: string; mainType: ComponentMainType; subType: ComponentSubType; }; } declare type MappingToExistsMode = 'normalMerge' | 'replaceMerge' | 'replaceAll'; /** * Mapping to existings for merge. * * Mode "normalMege": * The mapping result (merge result) will keep the order of the existing * component, rather than the order of new option. Because we should ensure * some specified index reference (like xAxisIndex) keep work. * And in most cases, "merge option" is used to update partial option but not * be expected to change the order. * * Mode "replaceMege": * (1) Only the id mapped components will be merged. * (2) Other existing components (except internal compoonets) will be removed. * (3) Other new options will be used to create new component. * (4) The index of the existing compoents will not be modified. * That means their might be "hole" after the removal. * The new components are created first at those available index. * * Mode "replaceAll": * This mode try to support that reproduce an echarts instance from another * echarts instance (via `getOption`) in some simple cases. * In this senario, the `result` index are exactly the consistent with the `newCmptOptions`, * which ensures the compoennt index referring (like `xAxisIndex: ?`) corrent. That is, * the "hole" in `newCmptOptions` will also be kept. * On the contrary, other modes try best to eliminate holes. * PENDING: This is an experimental mode yet. * * @return See the comment of . */ export declare function mappingToExists(existings: T[], newCmptOptions: ComponentOption[], mode: MappingToExistsMode): MappingResult; export declare function convertOptionIdName(idOrName: unknown, defaultValue: string): string; export declare function isNameSpecified(componentModel: ComponentModel): boolean; /** * @public * @param {Object} cmptOption * @return {boolean} */ export declare function isComponentIdInternal(cmptOption: { id?: MappingExistingItem['id']; }): boolean; export declare function makeInternalComponentId(idSuffix: string): string; export declare function setComponentTypeToKeyInfo(mappingResult: MappingResult, mainType: ComponentMainType, componentModelCtor: ComponentModelConstructor): void; declare type BatchItem = { seriesId: OptionId; dataIndex: number | number[]; }; /** * A helper for removing duplicate items between batchA and batchB, * and in themselves, and categorize by series. * * @param batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] * @param batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...] * @return result: [resultBatchA, resultBatchB] */ export declare function compressBatches(batchA: BatchItem[], batchB: BatchItem[]): [BatchItem[], BatchItem[]]; /** * @param payload Contains dataIndex (means rawIndex) / dataIndexInside / name * each of which can be Array or primary type. * @return dataIndex If not found, return undefined/null. */ export declare function queryDataIndex(data: SeriesData, payload: Payload & { dataIndexInside?: number | number[]; dataIndex?: number | number[]; name?: string | string[]; }): number | number[]; /** * Enable property storage to any host object. * Notice: Serialization is not supported. * * For example: * let inner = zrUitl.makeInner(); * * function some1(hostObj) { * inner(hostObj).someProperty = 1212; * ... * } * function some2() { * let fields = inner(this); * fields.someProperty1 = 1212; * fields.someProperty2 = 'xx'; * ... * } * * @return {Function} */ export declare function makeInner(): (hostObj: Host) => T; /** * If string, e.g., 'geo', means {geoIndex: 0}. * If Object, could contain some of these properties below: * { * seriesIndex, seriesId, seriesName, * geoIndex, geoId, geoName, * bmapIndex, bmapId, bmapName, * xAxisIndex, xAxisId, xAxisName, * yAxisIndex, yAxisId, yAxisName, * gridIndex, gridId, gridName, * ... (can be extended) * } * Each properties can be number|string|Array.|Array. * For example, a finder could be * { * seriesIndex: 3, * geoId: ['aa', 'cc'], * gridName: ['xx', 'rr'] * } * xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify) * If nothing or null/undefined specified, return nothing. * If both `abcIndex`, `abcId`, `abcName` specified, only one work. * The priority is: index > id > name, the same with `ecModel.queryComponents`. */ export declare type ModelFinderIndexQuery = number | number[] | 'all' | 'none' | false; export declare type ModelFinderIdQuery = OptionId | OptionId[]; export declare type ModelFinderNameQuery = OptionId | OptionId[]; export declare type ModelFinder = string | ModelFinderObject; export declare type ModelFinderObject = { seriesIndex?: ModelFinderIndexQuery; seriesId?: ModelFinderIdQuery; seriesName?: ModelFinderNameQuery; geoIndex?: ModelFinderIndexQuery; geoId?: ModelFinderIdQuery; geoName?: ModelFinderNameQuery; bmapIndex?: ModelFinderIndexQuery; bmapId?: ModelFinderIdQuery; bmapName?: ModelFinderNameQuery; xAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; xAxisName?: ModelFinderNameQuery; yAxisIndex?: ModelFinderIndexQuery; yAxisId?: ModelFinderIdQuery; yAxisName?: ModelFinderNameQuery; gridIndex?: ModelFinderIndexQuery; gridId?: ModelFinderIdQuery; gridName?: ModelFinderNameQuery; dataIndex?: number; dataIndexInside?: number; }; /** * { * seriesModels: [seriesModel1, seriesModel2], * seriesModel: seriesModel1, // The first model * geoModels: [geoModel1, geoModel2], * geoModel: geoModel1, // The first model * ... * } */ export declare type ParsedModelFinder = { [key: string]: ComponentModel | ComponentModel[] | undefined; }; export declare type ParsedModelFinderKnown = ParsedModelFinder & { seriesModels?: SeriesModel[]; seriesModel?: SeriesModel; xAxisModels?: CartesianAxisModel[]; xAxisModel?: CartesianAxisModel; yAxisModels?: CartesianAxisModel[]; yAxisModel?: CartesianAxisModel; gridModels?: GridModel[]; gridModel?: GridModel; dataIndex?: number; dataIndexInside?: number; }; /** * The same behavior as `component.getReferringComponents`. */ export declare function parseFinder(ecModel: GlobalModel, finderInput: ModelFinder, opt?: { defaultMainType?: ComponentMainType; includeMainTypes?: ComponentMainType[]; enableAll?: boolean; enableNone?: boolean; }): ParsedModelFinder; export declare function preParseFinder(finderInput: ModelFinder, opt?: { includeMainTypes?: ComponentMainType[]; }): { mainTypeSpecified: boolean; queryOptionMap: HashMap; others: Partial>; }; export declare type QueryReferringUserOption = { index?: ModelFinderIndexQuery; id?: ModelFinderIdQuery; name?: ModelFinderNameQuery; }; export declare const SINGLE_REFERRING: QueryReferringOpt; export declare const MULTIPLE_REFERRING: QueryReferringOpt; export declare type QueryReferringOpt = { useDefault?: boolean; enableAll?: boolean; enableNone?: boolean; }; export declare function queryReferringComponents(ecModel: GlobalModel, mainType: ComponentMainType, userOption: QueryReferringUserOption, opt?: QueryReferringOpt): { models: ComponentModel[]; specified: boolean; }; export declare function setAttribute(dom: HTMLElement, key: string, value: any): void; export declare function getAttribute(dom: HTMLElement, key: string): any; export declare function getTooltipRenderMode(renderModeOption: TooltipRenderMode | 'auto'): TooltipRenderMode; /** * Group a list by key. */ export declare function groupData(array: T[], getKey: (item: T) => R): { keys: R[]; buckets: HashMap; }; /** * Interpolate raw values of a series with percent * * @param data data * @param labelModel label model of the text element * @param sourceValue start value. May be null/undefined when init. * @param targetValue end value * @param percent 0~1 percentage; 0 uses start value while 1 uses end value * @return interpolated values * If `sourceValue` and `targetValue` are `number`, return `number`. * If `sourceValue` and `targetValue` are `string`, return `string`. * If `sourceValue` and `targetValue` are `(string | number)[]`, return `(string | number)[]`. * Other cases do not supported. */ export declare function interpolateRawValues(data: SeriesData, precision: number | 'auto', sourceValue: InterpolatableValue, targetValue: InterpolatableValue, percent: number): InterpolatableValue; export {};