| /* | 
 | * 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 createSeriesData from '../helper/createSeriesData'; | 
 | import SeriesModel from '../../model/Series'; | 
 | import { | 
 |     SeriesOption, | 
 |     SeriesOnPolarOptionMixin, | 
 |     SeriesOnCartesianOptionMixin, | 
 |     SeriesOnCalendarOptionMixin, | 
 |     SeriesOnGeoOptionMixin, | 
 |     SeriesOnSingleOptionMixin, | 
 |     SymbolOptionMixin, | 
 |     OptionDataValue, | 
 |     ItemStyleOption, | 
 |     SeriesLabelOption, | 
 |     StatesOptionMixin, | 
 |     SeriesEncodeOptionMixin, | 
 |     CallbackDataParams, | 
 |     DefaultEmphasisFocus | 
 | } from '../../util/types'; | 
 | import GlobalModel from '../../model/Global'; | 
 | import SeriesData from '../../data/SeriesData'; | 
 | import type { SymbolDrawItemModelOption } from '../helper/SymbolDraw'; | 
 | import { BrushCommonSelectorsForSeries } from '../../component/brush/selector'; | 
 |  | 
 | type ScatterDataValue = OptionDataValue | OptionDataValue[]; | 
 |  | 
 | interface EffectScatterStatesOptionMixin { | 
 |     emphasis?: { | 
 |         focus?: DefaultEmphasisFocus | 
 |         scale?: boolean | number | 
 |     } | 
 | } | 
 | export interface EffectScatterStateOption<TCbParams = never> { | 
 |     itemStyle?: ItemStyleOption<TCbParams> | 
 |     label?: SeriesLabelOption | 
 | } | 
 |  | 
 | export interface EffectScatterDataItemOption extends SymbolOptionMixin, | 
 |     EffectScatterStateOption, | 
 |     StatesOptionMixin<EffectScatterStateOption, EffectScatterStatesOptionMixin> { | 
 |     name?: string | 
 |  | 
 |     value?: ScatterDataValue | 
 |  | 
 |     rippleEffect?: SymbolDrawItemModelOption['rippleEffect'] | 
 | } | 
 |  | 
 | export interface EffectScatterSeriesOption | 
 |     extends SeriesOption<EffectScatterStateOption<CallbackDataParams>, EffectScatterStatesOptionMixin>, | 
 |     EffectScatterStateOption<CallbackDataParams>, | 
 |     SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, | 
 |     SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SymbolOptionMixin<CallbackDataParams>, | 
 |     SeriesEncodeOptionMixin { | 
 |  | 
 |     type?: 'effectScatter' | 
 |  | 
 |     coordinateSystem?: string | 
 |  | 
 |     effectType?: 'ripple' | 
 |  | 
 |     /** | 
 |      * When to show the effect | 
 |      */ | 
 |     showEffectOn?: 'render' | 'emphasis' | 
 |     clip?: boolean | 
 |  | 
 |     /** | 
 |      * Ripple effect config | 
 |      */ | 
 |     rippleEffect?: SymbolDrawItemModelOption['rippleEffect'] | 
 |  | 
 |     data?: (EffectScatterDataItemOption | ScatterDataValue)[] | 
 | } | 
 | class EffectScatterSeriesModel extends SeriesModel<EffectScatterSeriesOption> { | 
 |     static readonly type = 'series.effectScatter'; | 
 |     type = EffectScatterSeriesModel.type; | 
 |  | 
 |     static readonly dependencies = ['grid', 'polar']; | 
 |  | 
 |     hasSymbolVisual = true; | 
 |  | 
 |     getInitialData(option: EffectScatterSeriesOption, ecModel: GlobalModel): SeriesData { | 
 |         return createSeriesData(null, this, {useEncodeDefaulter: true}); | 
 |     } | 
 |  | 
 |     brushSelector(dataIndex: number, data: SeriesData, selectors: BrushCommonSelectorsForSeries): boolean { | 
 |         return selectors.point(data.getItemLayout(dataIndex)); | 
 |     } | 
 |  | 
 |     static defaultOption: EffectScatterSeriesOption = { | 
 |         coordinateSystem: 'cartesian2d', | 
 |         // zlevel: 0, | 
 |         z: 2, | 
 |         legendHoverLink: true, | 
 |  | 
 |         effectType: 'ripple', | 
 |  | 
 |         progressive: 0, | 
 |  | 
 |         // When to show the effect, option: 'render'|'emphasis' | 
 |         showEffectOn: 'render', | 
 |         clip: true, | 
 |  | 
 |         // Ripple effect config | 
 |         rippleEffect: { | 
 |             period: 4, | 
 |             // Scale of ripple | 
 |             scale: 2.5, | 
 |             // Brush type can be fill or stroke | 
 |             brushType: 'fill', | 
 |             // Ripple number | 
 |             number: 3 | 
 |         }, | 
 |  | 
 |         universalTransition: { | 
 |             divideShape: 'clone' | 
 |         }, | 
 |         // Cartesian coordinate system | 
 |         // xAxisIndex: 0, | 
 |         // yAxisIndex: 0, | 
 |  | 
 |         // Polar coordinate system | 
 |         // polarIndex: 0, | 
 |  | 
 |         // Geo coordinate system | 
 |         // geoIndex: 0, | 
 |  | 
 |         // symbol: null,        // 图形类型 | 
 |         symbolSize: 10          // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 | 
 |         // symbolRotate: null,  // 图形旋转控制 | 
 |  | 
 |         // itemStyle: { | 
 |         //     opacity: 1 | 
 |         // } | 
 |     }; | 
 | } | 
 |  | 
 | export default EffectScatterSeriesModel; |