|  | /* | 
|  | * 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. | 
|  | */ | 
|  |  | 
|  | import { init, EChartsType } from '../../../src/echarts.all'; | 
|  |  | 
|  | import { | 
|  | curry as zrUtilCurry, | 
|  | bind as zrUtilBind, | 
|  | extend as zrUtilExtend | 
|  | } from 'zrender/src/core/util'; | 
|  | import { ComponentMainType } from '../../../src/util/types'; | 
|  | import Group from 'zrender/src/graphic/Group'; | 
|  | import Element from 'zrender/src/Element'; | 
|  | import GlobalModel from '../../../src/model/Global'; | 
|  |  | 
|  |  | 
|  | export function createChart(params?: { | 
|  | width?: number, | 
|  | height?: number, | 
|  | theme?: Parameters<typeof init>[1], | 
|  | opts?: Parameters<typeof init>[2] | 
|  | }): EChartsType { | 
|  | params = params || {}; | 
|  | const el = document.createElement('div'); | 
|  | el.style.cssText = [ | 
|  | 'visibility:hidden', | 
|  | 'width:' + (params.width || '500') + 'px', | 
|  | 'height:' + (params.height || '400') + 'px', | 
|  | 'position:absolute', | 
|  | 'bottom:0', | 
|  | 'right:0' | 
|  | ].join(';'); | 
|  | Object.defineProperty(el, 'clientWidth', { | 
|  | get() { | 
|  | return params.width || 500; | 
|  | } | 
|  | }); | 
|  | Object.defineProperty(el, 'clientHeight', { | 
|  | get() { | 
|  | return params.height || 400; | 
|  | } | 
|  | }); | 
|  | const chart = init(el, params.theme, params.opts); | 
|  | return chart; | 
|  | }; | 
|  |  | 
|  | export function removeChart(chart: EChartsType): void { | 
|  | chart.dispose(); | 
|  | }; | 
|  |  | 
|  | export const extend = zrUtilExtend; | 
|  |  | 
|  | export function g(id: string): HTMLElement { | 
|  | return document.getElementById(id); | 
|  | } | 
|  |  | 
|  | export function removeEl(el: HTMLElement): void { | 
|  | const parent = parentEl(el); | 
|  | parent && parent.removeChild(el); | 
|  | } | 
|  |  | 
|  | export function parentEl(el: HTMLElement): HTMLElement { | 
|  | //parentElement for ie. | 
|  | return el.parentElement || el.parentNode as HTMLElement; | 
|  | } | 
|  |  | 
|  | export function getHeadEl(): HTMLElement { | 
|  | return document.head | 
|  | || document.getElementsByTagName('head')[0] | 
|  | || document.documentElement; | 
|  | } | 
|  |  | 
|  | export const curry = zrUtilCurry; | 
|  |  | 
|  | export const bind = zrUtilBind; | 
|  |  | 
|  | // /** | 
|  | //  * @public | 
|  | //  * @param {Array.<string>} deps | 
|  | //  * @param {Array.<Function>} testFnList | 
|  | //  * @param {Function} done All done callback. | 
|  | //  */ | 
|  | // export function resetAMDLoaderEachTest(deps, testFnList, done) { | 
|  | //     const i = -1; | 
|  | //     next(); | 
|  |  | 
|  | //     function next() { | 
|  | //         i++; | 
|  | //         if (testFnList.length <= i) { | 
|  | //             done(); | 
|  | //             return; | 
|  | //         } | 
|  |  | 
|  | //         utHelper.resetAMDLoader(function () { | 
|  | //             global.require(deps, function () { | 
|  | //                 testFnList[i].apply(null, arguments); | 
|  | //                 next(); | 
|  | //             }); | 
|  | //         }); | 
|  | //     } | 
|  | // }; | 
|  |  | 
|  | export function getGraphicElements( | 
|  | chartOrGroup: EChartsType | Group, | 
|  | mainType: ComponentMainType, | 
|  | index?: number | 
|  | ): Element[] { | 
|  | if ((chartOrGroup as Group).type === 'group') { | 
|  | return (chartOrGroup as Group).children(); | 
|  | } | 
|  | else { | 
|  | const viewGroup = getViewGroup(chartOrGroup as EChartsType, mainType, index); | 
|  | if (viewGroup) { | 
|  | const list: Element[] = [viewGroup]; | 
|  | viewGroup.traverse(function (el: Element) { | 
|  | list.push(el); | 
|  | }); | 
|  | return list; | 
|  | } | 
|  | else { | 
|  | return []; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | export function getViewGroup( | 
|  | chart: EChartsType, | 
|  | mainType: ComponentMainType, | 
|  | index?: number | 
|  | ): Group { | 
|  | const component = getECModel(chart).getComponent(mainType, index); | 
|  | return component ? chart[ | 
|  | mainType === 'series' ? '_chartsMap' : '_componentsMap' | 
|  | ][component.__viewId].group : null; | 
|  | } | 
|  |  | 
|  | export function getECModel(chart: EChartsType): GlobalModel { | 
|  | // @ts-ignore | 
|  | return chart.getModel(); | 
|  | } |