|  | /* | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | */ | 
|  |  | 
|  | /** | 
|  | * This module exposes helper functions for developing extensions. | 
|  | */ | 
|  |  | 
|  | import * as zrUtil from 'zrender/src/core/util'; | 
|  | import createSeriesData from '../../chart/helper/createSeriesData'; | 
|  | // import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge'; | 
|  | import * as axisHelper from '../../coord/axisHelper'; | 
|  | import {AxisModelCommonMixin} from '../../coord/axisModelCommonMixin'; | 
|  | import Model from '../../model/Model'; | 
|  | import {getLayoutRect} from '../../util/layout'; | 
|  | import { | 
|  | enableDataStack, | 
|  | isDimensionStacked, | 
|  | getStackedDimension | 
|  | } from '../../data/helper/dataStackHelper'; | 
|  | import SeriesModel from '../../model/Series'; | 
|  | import { AxisBaseModel } from '../../coord/AxisBaseModel'; | 
|  | import { getECData } from '../../util/innerStore'; | 
|  | import { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle'; | 
|  | import { DisplayState, TextCommonOption } from '../../util/types'; | 
|  |  | 
|  | /** | 
|  | * Create a multi dimension List structure from seriesModel. | 
|  | */ | 
|  | export function createList(seriesModel: SeriesModel) { | 
|  | return createSeriesData(null, seriesModel); | 
|  | } | 
|  |  | 
|  | // export function createGraph(seriesModel) { | 
|  | //     let nodes = seriesModel.get('data'); | 
|  | //     let links = seriesModel.get('links'); | 
|  | //     return createGraphFromNodeEdge(nodes, links, seriesModel); | 
|  | // } | 
|  |  | 
|  | export {getLayoutRect}; | 
|  |  | 
|  | export {createDimensions} from '../../data/helper/createDimensions'; | 
|  |  | 
|  | export const dataStack = { | 
|  | isDimensionStacked: isDimensionStacked, | 
|  | enableDataStack: enableDataStack, | 
|  | getStackedDimension: getStackedDimension | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * Create a symbol element with given symbol configuration: shape, x, y, width, height, color | 
|  | * @param {string} symbolDesc | 
|  | * @param {number} x | 
|  | * @param {number} y | 
|  | * @param {number} w | 
|  | * @param {number} h | 
|  | * @param {string} color | 
|  | */ | 
|  | export {createSymbol} from '../../util/symbol'; | 
|  |  | 
|  | /** | 
|  | * Create scale | 
|  | * @param {Array.<number>} dataExtent | 
|  | * @param {Object|module:echarts/Model} option If `optoin.type` | 
|  | *        is secified, it can only be `'value'` currently. | 
|  | */ | 
|  | export function createScale(dataExtent: number[], option: object | AxisBaseModel) { | 
|  | let axisModel = option; | 
|  | if (!(option instanceof Model)) { | 
|  | axisModel = new Model(option); | 
|  | // FIXME | 
|  | // Currently AxisModelCommonMixin has nothing to do with the | 
|  | // the requirements of `axisHelper.createScaleByModel`. For | 
|  | // example the methods `getCategories` and `getOrdinalMeta` | 
|  | // are required for `'category'` axis, and ecModel is required | 
|  | // for `'time'` axis. But occasionally echarts-gl happened | 
|  | // to only use `'value'` axis. | 
|  | // zrUtil.mixin(axisModel, AxisModelCommonMixin); | 
|  | } | 
|  |  | 
|  | const scale = axisHelper.createScaleByModel(axisModel as AxisBaseModel); | 
|  | scale.setExtent(dataExtent[0], dataExtent[1]); | 
|  |  | 
|  | axisHelper.niceScaleExtent(scale, axisModel as AxisBaseModel); | 
|  | return scale; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Mixin common methods to axis model, | 
|  | * | 
|  | * Include methods | 
|  | * `getFormattedLabels() => Array.<string>` | 
|  | * `getCategories() => Array.<string>` | 
|  | * `getMin(origin: boolean) => number` | 
|  | * `getMax(origin: boolean) => number` | 
|  | * `getNeedCrossZero() => boolean` | 
|  | */ | 
|  | export function mixinAxisModelCommonMethods(Model: Model) { | 
|  | zrUtil.mixin(Model, AxisModelCommonMixin); | 
|  | } | 
|  |  | 
|  | export {getECData}; | 
|  |  | 
|  | export {enableHoverEmphasis} from '../../util/states'; | 
|  |  | 
|  | export function createTextStyle( | 
|  | textStyleModel: Model<TextCommonOption>, | 
|  | opts?: { | 
|  | // For which state this textStyle is for. | 
|  | state?: DisplayState | 
|  | } | 
|  | ) { | 
|  | opts = opts || {}; | 
|  | return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal'); | 
|  | } |