123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- 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<T>(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<T>[]` 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<T> = MappingResultItem<T>[];
- interface MappingResultItem<T extends MappingExistingItem = MappingExistingItem> {
- 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 <MappingResult>.
- */
- export declare function mappingToExists<T extends MappingExistingItem>(existings: T[], newCmptOptions: ComponentOption[], mode: MappingToExistsMode): MappingResult<T>;
- 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<MappingExistingItem & {
- subType?: ComponentSubType;
- }>, 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<T, Host extends object>(): (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.<number>|Array.<string>
- * 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<QueryReferringUserOption, ComponentMainType>;
- others: Partial<Pick<ParsedModelFinderKnown, 'dataIndex' | 'dataIndexInside'>>;
- };
- 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<T, R extends string | number>(array: T[], getKey: (item: T) => R): {
- keys: R[];
- buckets: HashMap<T[], R>;
- };
- /**
- * 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 {};
|