|  | /* | 
|  | * 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 * as featureManager from './featureManager'; | 
|  | import ComponentModel from '../../model/Component'; | 
|  | import { | 
|  | ComponentOption, | 
|  | BoxLayoutOptionMixin, | 
|  | LayoutOrient, | 
|  | ZRColor, | 
|  | BorderOptionMixin, | 
|  | ItemStyleOption, | 
|  | LabelOption, | 
|  | CommonTooltipOption, | 
|  | Dictionary | 
|  | } from '../../util/types'; | 
|  |  | 
|  |  | 
|  | export interface ToolboxTooltipFormatterParams { | 
|  | componentType: 'toolbox' | 
|  | name: string | 
|  | title: string | 
|  | $vars: ['name', 'title'] | 
|  | } | 
|  | export interface ToolboxOption extends ComponentOption, | 
|  | BoxLayoutOptionMixin, | 
|  | BorderOptionMixin { | 
|  | mainType?: 'toolbox' | 
|  |  | 
|  | show?: boolean | 
|  |  | 
|  | orient?: LayoutOrient | 
|  |  | 
|  | backgroundColor?: ZRColor | 
|  |  | 
|  | borderRadius?: number | number[] | 
|  |  | 
|  | padding?: number | number[] | 
|  |  | 
|  | itemSize?: number | 
|  |  | 
|  | itemGap?: number | 
|  |  | 
|  | showTitle?: boolean | 
|  |  | 
|  | iconStyle?: ItemStyleOption | 
|  |  | 
|  | emphasis?: { | 
|  | iconStyle?: ItemStyleOption | 
|  | } | 
|  |  | 
|  | textStyle?: LabelOption | 
|  |  | 
|  | tooltip?: CommonTooltipOption<ToolboxTooltipFormatterParams> | 
|  |  | 
|  | /** | 
|  | * Write all supported features in the final export option. | 
|  | */ | 
|  | feature?: Partial<Dictionary<featureManager.ToolboxFeatureOption>> | 
|  | } | 
|  |  | 
|  | class ToolboxModel extends ComponentModel<ToolboxOption> { | 
|  |  | 
|  | static type = 'toolbox' as const; | 
|  | type = ToolboxModel.type; | 
|  |  | 
|  | static layoutMode = { | 
|  | type: 'box', | 
|  | ignoreSize: true | 
|  | } as const; | 
|  |  | 
|  | optionUpdated() { | 
|  | super.optionUpdated.apply(this, arguments as any); | 
|  | const {ecModel} = this; | 
|  |  | 
|  | zrUtil.each(this.option.feature, function (featureOpt, featureName) { | 
|  | const Feature = featureManager.getFeature(featureName); | 
|  | if (Feature) { | 
|  | if (Feature.getDefaultOption) { | 
|  | Feature.defaultOption = Feature.getDefaultOption(ecModel); | 
|  | } | 
|  | zrUtil.merge(featureOpt, Feature.defaultOption); | 
|  | } | 
|  | }); | 
|  | } | 
|  |  | 
|  | static defaultOption: ToolboxOption = { | 
|  |  | 
|  | show: true, | 
|  |  | 
|  | z: 6, | 
|  |  | 
|  | // zlevel: 0, | 
|  |  | 
|  | orient: 'horizontal', | 
|  |  | 
|  | left: 'right', | 
|  |  | 
|  | top: 'top', | 
|  |  | 
|  | // right | 
|  | // bottom | 
|  |  | 
|  | backgroundColor: 'transparent', | 
|  |  | 
|  | borderColor: '#ccc', | 
|  |  | 
|  | borderRadius: 0, | 
|  |  | 
|  | borderWidth: 0, | 
|  |  | 
|  | padding: 5, | 
|  |  | 
|  | itemSize: 15, | 
|  |  | 
|  | itemGap: 8, | 
|  |  | 
|  | showTitle: true, | 
|  |  | 
|  | iconStyle: { | 
|  | borderColor: '#666', | 
|  | color: 'none' | 
|  | }, | 
|  | emphasis: { | 
|  | iconStyle: { | 
|  | borderColor: '#3E98C5' | 
|  | } | 
|  | }, | 
|  | // textStyle: {}, | 
|  |  | 
|  | // feature | 
|  |  | 
|  | tooltip: { | 
|  | show: false, | 
|  | position: 'bottom' | 
|  | } | 
|  | }; | 
|  | } | 
|  |  | 
|  | export default ToolboxModel; |