|   | 
| /* | 
| * 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 { curry, each, hasOwn } from 'zrender/lib/core/util.js'; | 
| function legendSelectActionHandler(methodName, payload, ecModel) { | 
|   var isAllSelect = methodName === 'allSelect' || methodName === 'inverseSelect'; | 
|   var selectedMap = {}; | 
|   var actionLegendIndices = []; | 
|   ecModel.eachComponent({ | 
|     mainType: 'legend', | 
|     query: payload | 
|   }, function (legendModel) { | 
|     if (isAllSelect) { | 
|       legendModel[methodName](); | 
|     } else { | 
|       legendModel[methodName](payload.name); | 
|     } | 
|     makeSelectedMap(legendModel, selectedMap); | 
|     actionLegendIndices.push(legendModel.componentIndex); | 
|   }); | 
|   var allSelectedMap = {}; | 
|   // make selectedMap from all legend components | 
|   ecModel.eachComponent('legend', function (legendModel) { | 
|     each(selectedMap, function (isSelected, name) { | 
|       // Force other legend has same selected status | 
|       // Or the first is toggled to true and other are toggled to false | 
|       // In the case one legend has some item unSelected in option. And if other legend | 
|       // doesn't has the item, they will assume it is selected. | 
|       legendModel[isSelected ? 'select' : 'unSelect'](name); | 
|     }); | 
|     makeSelectedMap(legendModel, allSelectedMap); | 
|   }); | 
|   // Return the event explicitly | 
|   return isAllSelect ? { | 
|     selected: allSelectedMap, | 
|     // return legendIndex array to tell the developers which legends are allSelect / inverseSelect | 
|     legendIndex: actionLegendIndices | 
|   } : { | 
|     name: payload.name, | 
|     selected: allSelectedMap | 
|   }; | 
| } | 
| function makeSelectedMap(legendModel, out) { | 
|   var selectedMap = out || {}; | 
|   each(legendModel.getData(), function (model) { | 
|     var name = model.get('name'); | 
|     // Wrap element | 
|     if (name === '\n' || name === '') { | 
|       return; | 
|     } | 
|     var isItemSelected = legendModel.isSelected(name); | 
|     if (hasOwn(selectedMap, name)) { | 
|       // Unselected if any legend is unselected | 
|       selectedMap[name] = selectedMap[name] && isItemSelected; | 
|     } else { | 
|       selectedMap[name] = isItemSelected; | 
|     } | 
|   }); | 
|   return selectedMap; | 
| } | 
| export function installLegendAction(registers) { | 
|   /** | 
|    * @event legendToggleSelect | 
|    * @type {Object} | 
|    * @property {string} type 'legendToggleSelect' | 
|    * @property {string} [from] | 
|    * @property {string} name Series name or data item name | 
|    */ | 
|   registers.registerAction('legendToggleSelect', 'legendselectchanged', curry(legendSelectActionHandler, 'toggleSelected')); | 
|   registers.registerAction('legendAllSelect', 'legendselectall', curry(legendSelectActionHandler, 'allSelect')); | 
|   registers.registerAction('legendInverseSelect', 'legendinverseselect', curry(legendSelectActionHandler, 'inverseSelect')); | 
|   /** | 
|    * @event legendSelect | 
|    * @type {Object} | 
|    * @property {string} type 'legendSelect' | 
|    * @property {string} name Series name or data item name | 
|    */ | 
|   registers.registerAction('legendSelect', 'legendselected', curry(legendSelectActionHandler, 'select')); | 
|   /** | 
|    * @event legendUnSelect | 
|    * @type {Object} | 
|    * @property {string} type 'legendUnSelect' | 
|    * @property {string} name Series name or data item name | 
|    */ | 
|   registers.registerAction('legendUnSelect', 'legendunselected', curry(legendSelectActionHandler, 'unSelect')); | 
| } |