|   | 
| /* | 
| * 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. | 
| */ | 
|   | 
|   | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
|   | 
| /* | 
| * 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 { __extends } from "tslib"; | 
| import * as echarts from '../../../core/echarts.js'; | 
| import * as zrUtil from 'zrender/lib/core/util.js'; | 
| import { ToolboxFeature } from '../featureManager.js'; | 
| import { SINGLE_REFERRING } from '../../../util/model.js'; | 
| var INNER_STACK_KEYWORD = '__ec_magicType_stack__'; | 
| var ICON_TYPES = ['line', 'bar', 'stack']; | 
| // stack and tiled appears in pair for the title | 
| var TITLE_TYPES = ['line', 'bar', 'stack', 'tiled']; | 
| var radioTypes = [['line', 'bar'], ['stack']]; | 
| var MagicType = /** @class */function (_super) { | 
|   __extends(MagicType, _super); | 
|   function MagicType() { | 
|     return _super !== null && _super.apply(this, arguments) || this; | 
|   } | 
|   MagicType.prototype.getIcons = function () { | 
|     var model = this.model; | 
|     var availableIcons = model.get('icon'); | 
|     var icons = {}; | 
|     zrUtil.each(model.get('type'), function (type) { | 
|       if (availableIcons[type]) { | 
|         icons[type] = availableIcons[type]; | 
|       } | 
|     }); | 
|     return icons; | 
|   }; | 
|   MagicType.getDefaultOption = function (ecModel) { | 
|     var defaultOption = { | 
|       show: true, | 
|       type: [], | 
|       // Icon group | 
|       icon: { | 
|         line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4', | 
|         bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7', | 
|         // eslint-disable-next-line | 
|         stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z' // jshint ignore:line | 
|       }, | 
|       // `line`, `bar`, `stack`, `tiled` | 
|       title: ecModel.getLocaleModel().get(['toolbox', 'magicType', 'title']), | 
|       option: {}, | 
|       seriesIndex: {} | 
|     }; | 
|     return defaultOption; | 
|   }; | 
|   MagicType.prototype.onclick = function (ecModel, api, type) { | 
|     var model = this.model; | 
|     var seriesIndex = model.get(['seriesIndex', type]); | 
|     // Not supported magicType | 
|     if (!seriesOptGenreator[type]) { | 
|       return; | 
|     } | 
|     var newOption = { | 
|       series: [] | 
|     }; | 
|     var generateNewSeriesTypes = function (seriesModel) { | 
|       var seriesType = seriesModel.subType; | 
|       var seriesId = seriesModel.id; | 
|       var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model); | 
|       if (newSeriesOpt) { | 
|         // PENDING If merge original option? | 
|         zrUtil.defaults(newSeriesOpt, seriesModel.option); | 
|         newOption.series.push(newSeriesOpt); | 
|       } | 
|       // Modify boundaryGap | 
|       var coordSys = seriesModel.coordinateSystem; | 
|       if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) { | 
|         var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; | 
|         if (categoryAxis) { | 
|           var axisDim = categoryAxis.dim; | 
|           var axisType = axisDim + 'Axis'; | 
|           var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0]; | 
|           var axisIndex = axisModel.componentIndex; | 
|           newOption[axisType] = newOption[axisType] || []; | 
|           for (var i = 0; i <= axisIndex; i++) { | 
|             newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {}; | 
|           } | 
|           newOption[axisType][axisIndex].boundaryGap = type === 'bar'; | 
|         } | 
|       } | 
|     }; | 
|     zrUtil.each(radioTypes, function (radio) { | 
|       if (zrUtil.indexOf(radio, type) >= 0) { | 
|         zrUtil.each(radio, function (item) { | 
|           model.setIconStatus(item, 'normal'); | 
|         }); | 
|       } | 
|     }); | 
|     model.setIconStatus(type, 'emphasis'); | 
|     ecModel.eachComponent({ | 
|       mainType: 'series', | 
|       query: seriesIndex == null ? null : { | 
|         seriesIndex: seriesIndex | 
|       } | 
|     }, generateNewSeriesTypes); | 
|     var newTitle; | 
|     var currentType = type; | 
|     // Change title of stack | 
|     if (type === 'stack') { | 
|       // use titles in model instead of ecModel | 
|       // as stack and tiled appears in pair, just flip them | 
|       // no need of checking stack state | 
|       newTitle = zrUtil.merge({ | 
|         stack: model.option.title.tiled, | 
|         tiled: model.option.title.stack | 
|       }, model.option.title); | 
|       if (model.get(['iconStatus', type]) !== 'emphasis') { | 
|         currentType = 'tiled'; | 
|       } | 
|     } | 
|     api.dispatchAction({ | 
|       type: 'changeMagicType', | 
|       currentType: currentType, | 
|       newOption: newOption, | 
|       newTitle: newTitle, | 
|       featureName: 'magicType' | 
|     }); | 
|   }; | 
|   return MagicType; | 
| }(ToolboxFeature); | 
| var seriesOptGenreator = { | 
|   'line': function (seriesType, seriesId, seriesModel, model) { | 
|     if (seriesType === 'bar') { | 
|       return zrUtil.merge({ | 
|         id: seriesId, | 
|         type: 'line', | 
|         // Preserve data related option | 
|         data: seriesModel.get('data'), | 
|         stack: seriesModel.get('stack'), | 
|         markPoint: seriesModel.get('markPoint'), | 
|         markLine: seriesModel.get('markLine') | 
|       }, model.get(['option', 'line']) || {}, true); | 
|     } | 
|   }, | 
|   'bar': function (seriesType, seriesId, seriesModel, model) { | 
|     if (seriesType === 'line') { | 
|       return zrUtil.merge({ | 
|         id: seriesId, | 
|         type: 'bar', | 
|         // Preserve data related option | 
|         data: seriesModel.get('data'), | 
|         stack: seriesModel.get('stack'), | 
|         markPoint: seriesModel.get('markPoint'), | 
|         markLine: seriesModel.get('markLine') | 
|       }, model.get(['option', 'bar']) || {}, true); | 
|     } | 
|   }, | 
|   'stack': function (seriesType, seriesId, seriesModel, model) { | 
|     var isStack = seriesModel.get('stack') === INNER_STACK_KEYWORD; | 
|     if (seriesType === 'line' || seriesType === 'bar') { | 
|       model.setIconStatus('stack', isStack ? 'normal' : 'emphasis'); | 
|       return zrUtil.merge({ | 
|         id: seriesId, | 
|         stack: isStack ? '' : INNER_STACK_KEYWORD | 
|       }, model.get(['option', 'stack']) || {}, true); | 
|     } | 
|   } | 
| }; | 
| // TODO: SELF REGISTERED. | 
| echarts.registerAction({ | 
|   type: 'changeMagicType', | 
|   event: 'magicTypeChanged', | 
|   update: 'prepareAndUpdate' | 
| }, function (payload, ecModel) { | 
|   ecModel.mergeOption(payload.newOption); | 
| }); | 
| export default MagicType; |