| /* | 
 | * 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. | 
 | */ | 
 |  | 
 | // @ts-nocheck | 
 |  | 
 | import {curry, each} from 'zrender/src/core/util'; | 
 |  | 
 | function legendSelectActionHandler(methodName, payload, ecModel) { | 
 |     const selectedMap = {}; | 
 |     const isToggleSelect = methodName === 'toggleSelected'; | 
 |     let isSelected; | 
 |     // Update all legend components | 
 |     ecModel.eachComponent('legend', function (legendModel) { | 
 |         if (isToggleSelect && isSelected != null) { | 
 |             // 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'](payload.name); | 
 |         } | 
 |         else if (methodName === 'allSelect' || methodName === 'inverseSelect') { | 
 |             legendModel[methodName](); | 
 |         } | 
 |         else { | 
 |             legendModel[methodName](payload.name); | 
 |             isSelected = legendModel.isSelected(payload.name); | 
 |         } | 
 |         const legendData = legendModel.getData(); | 
 |         each(legendData, function (model) { | 
 |             const name = model.get('name'); | 
 |             // Wrap element | 
 |             if (name === '\n' || name === '') { | 
 |                 return; | 
 |             } | 
 |             const isItemSelected = legendModel.isSelected(name); | 
 |             if (selectedMap.hasOwnProperty(name)) { | 
 |                 // Unselected if any legend is unselected | 
 |                 selectedMap[name] = selectedMap[name] && isItemSelected; | 
 |             } | 
 |             else { | 
 |                 selectedMap[name] = isItemSelected; | 
 |             } | 
 |         }); | 
 |     }); | 
 |     // Return the event explicitly | 
 |     return (methodName === 'allSelect' || methodName === 'inverseSelect') | 
 |         ? { | 
 |             selected: selectedMap | 
 |         } | 
 |         : { | 
 |             name: payload.name, | 
 |             selected: 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') | 
 |     ); | 
 | } |