| /* |
| * 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 * as zrUtil from 'zrender/src/core/util'; |
| import {EChartsType} from './echarts'; |
| |
| import type {CoordinateSystemMaster} from '../coord/CoordinateSystem'; |
| import type Element from 'zrender/src/Element'; |
| import type ComponentModel from '../model/Component'; |
| import type ComponentView from '../view/Component'; |
| import type ChartView from '../view/Chart'; |
| import type SeriesModel from '../model/Series'; |
| import type GlobalModel from '../model/Global'; |
| |
| const availableMethods: (keyof EChartsType)[] = [ |
| 'getDom', |
| 'getZr', |
| 'getWidth', |
| 'getHeight', |
| 'getDevicePixelRatio', |
| 'dispatchAction', |
| 'isDisposed', |
| 'on', |
| 'off', |
| 'getDataURL', |
| 'getConnectedDataURL', |
| // 'getModel', |
| 'getOption', |
| // 'getViewOfComponentModel', |
| // 'getViewOfSeriesModel', |
| 'getId', |
| 'updateLabelLayout' |
| ]; |
| |
| interface ExtensionAPI extends Pick<EChartsType, (typeof availableMethods)[number]> {} |
| |
| abstract class ExtensionAPI { |
| |
| constructor(ecInstance: EChartsType) { |
| zrUtil.each(availableMethods, function (methodName: string) { |
| (this as any)[methodName] = zrUtil.bind((ecInstance as any)[methodName], ecInstance); |
| }, this); |
| } |
| |
| // Implemented in echarts.js |
| abstract getCoordinateSystems(): CoordinateSystemMaster[]; |
| abstract getComponentByElement(el: Element): ComponentModel; |
| abstract enterEmphasis(el: Element, highlightDigit?: number): void; |
| abstract leaveEmphasis(el: Element, highlightDigit?: number): void; |
| abstract enterSelect(el: Element): void; |
| abstract leaveSelect(el: Element): void; |
| abstract enterBlur(el: Element): void; |
| abstract leaveBlur(el: Element): void; |
| // These methods are not planned to be exposed to outside. |
| abstract getViewOfComponentModel(componentModel: ComponentModel): ComponentView; |
| abstract getViewOfSeriesModel(seriesModel: SeriesModel): ChartView; |
| abstract getModel(): GlobalModel; |
| } |
| |
| export default ExtensionAPI; |