|  | /* | 
|  | * 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 { | 
|  | registerPreprocessor, | 
|  | registerProcessor, | 
|  | registerPostInit, | 
|  | registerPostUpdate, | 
|  | registerAction, | 
|  | registerCoordinateSystem, | 
|  | registerLayout, | 
|  | registerVisual, | 
|  | registerTransform, | 
|  | registerLoading, | 
|  | registerMap, | 
|  | registerUpdateLifecycle, | 
|  | PRIORITY | 
|  | } from './core/echarts'; | 
|  | import ComponentView from './view/Component'; | 
|  | import ChartView from './view/Chart'; | 
|  | import ComponentModel from './model/Component'; | 
|  | import SeriesModel from './model/Series'; | 
|  | import { isFunction, indexOf, isArray, each } from 'zrender/src/core/util'; | 
|  | import { Constructor } from './util/clazz'; | 
|  | import { SubTypeDefaulter } from './util/component'; | 
|  | import { registerImpl } from './core/impl'; | 
|  | import { registerPainter } from 'zrender/src/zrender'; | 
|  |  | 
|  | const extensions: (EChartsExtensionInstaller | EChartsExtension)[] = []; | 
|  |  | 
|  | const extensionRegisters = { | 
|  | registerPreprocessor, | 
|  | registerProcessor, | 
|  | registerPostInit, | 
|  | registerPostUpdate, | 
|  | registerUpdateLifecycle, | 
|  | registerAction, | 
|  | registerCoordinateSystem, | 
|  | registerLayout, | 
|  | registerVisual, | 
|  | registerTransform, | 
|  | registerLoading, | 
|  | registerMap, | 
|  | registerImpl, | 
|  |  | 
|  | PRIORITY, | 
|  |  | 
|  | ComponentModel, | 
|  | ComponentView, | 
|  | SeriesModel, | 
|  | ChartView, | 
|  | // TODO Use ComponentModel and SeriesModel instead of Constructor | 
|  | registerComponentModel(ComponentModelClass: Constructor) { | 
|  | ComponentModel.registerClass(ComponentModelClass); | 
|  | }, | 
|  | registerComponentView(ComponentViewClass: typeof ComponentView) { | 
|  | ComponentView.registerClass(ComponentViewClass); | 
|  | }, | 
|  | registerSeriesModel(SeriesModelClass: Constructor) { | 
|  | SeriesModel.registerClass(SeriesModelClass); | 
|  | }, | 
|  | registerChartView(ChartViewClass: typeof ChartView) { | 
|  | ChartView.registerClass(ChartViewClass); | 
|  | }, | 
|  | registerSubTypeDefaulter(componentType: string, defaulter: SubTypeDefaulter) { | 
|  | ComponentModel.registerSubTypeDefaulter(componentType, defaulter); | 
|  | }, | 
|  | registerPainter(painterType: string, PainterCtor: Parameters<typeof registerPainter>[1]) { | 
|  | registerPainter(painterType, PainterCtor); | 
|  | } | 
|  | }; | 
|  |  | 
|  | export type EChartsExtensionInstallRegisters = typeof extensionRegisters; | 
|  |  | 
|  | export type EChartsExtensionInstaller = (ec: EChartsExtensionInstallRegisters) => void; | 
|  | export interface EChartsExtension { | 
|  | install: EChartsExtensionInstaller | 
|  | } | 
|  |  | 
|  | export function use( | 
|  | ext: EChartsExtensionInstaller | EChartsExtension | (EChartsExtensionInstaller | EChartsExtension)[] | 
|  | ) { | 
|  | if (isArray(ext)) { | 
|  | // use([ChartLine, ChartBar]); | 
|  | each(ext, (singleExt) => { | 
|  | use(singleExt); | 
|  | }); | 
|  | return; | 
|  | } | 
|  |  | 
|  | if (indexOf(extensions, ext) >= 0) { | 
|  | return; | 
|  | } | 
|  | extensions.push(ext); | 
|  |  | 
|  | if (isFunction(ext)) { | 
|  | ext = { | 
|  | install: ext | 
|  | }; | 
|  | } | 
|  | ext.install(extensionRegisters); | 
|  | } | 
|  |  | 
|  | // A simpler use type for exporting to reduce exported inner modules. | 
|  | export type EChartsExtensionInstallerSimple = (registers: any) => void; | 
|  | type SimpleEChartsExtensionType = EChartsExtensionInstallerSimple | { install: EChartsExtensionInstallerSimple }; | 
|  | export declare function useSimple(ext: SimpleEChartsExtensionType | (SimpleEChartsExtensionType)[]): void; |