|   | 
| /* | 
| * 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 zrUtil from 'zrender/lib/core/util.js'; | 
| import * as modelUtil from '../../util/model.js'; | 
| import ComponentModel from '../../model/Component.js'; | 
| import Model from '../../model/Model.js'; | 
| import geoCreator from './geoCreator.js'; | 
| import geoSourceManager from './geoSourceManager.js'; | 
| ; | 
| var GeoModel = /** @class */function (_super) { | 
|   __extends(GeoModel, _super); | 
|   function GeoModel() { | 
|     var _this = _super !== null && _super.apply(this, arguments) || this; | 
|     _this.type = GeoModel.type; | 
|     return _this; | 
|   } | 
|   GeoModel.prototype.init = function (option, parentModel, ecModel) { | 
|     var source = geoSourceManager.getGeoResource(option.map); | 
|     if (source && source.type === 'geoJSON') { | 
|       var itemStyle = option.itemStyle = option.itemStyle || {}; | 
|       if (!('color' in itemStyle)) { | 
|         itemStyle.color = '#eee'; | 
|       } | 
|     } | 
|     this.mergeDefaultAndTheme(option, ecModel); | 
|     // Default label emphasis `show` | 
|     modelUtil.defaultEmphasis(option, 'label', ['show']); | 
|   }; | 
|   GeoModel.prototype.optionUpdated = function () { | 
|     var _this = this; | 
|     var option = this.option; | 
|     option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty); | 
|     var selectedMap = {}; | 
|     this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) { | 
|       var regionName = regionOpt.name; | 
|       if (regionName) { | 
|         optionModelMap.set(regionName, new Model(regionOpt, _this, _this.ecModel)); | 
|         if (regionOpt.selected) { | 
|           selectedMap[regionName] = true; | 
|         } | 
|       } | 
|       return optionModelMap; | 
|     }, zrUtil.createHashMap()); | 
|     if (!option.selectedMap) { | 
|       option.selectedMap = selectedMap; | 
|     } | 
|   }; | 
|   /** | 
|    * Get model of region. | 
|    */ | 
|   GeoModel.prototype.getRegionModel = function (name) { | 
|     return this._optionModelMap.get(name) || new Model(null, this, this.ecModel); | 
|   }; | 
|   /** | 
|    * Format label | 
|    * @param name Region name | 
|    */ | 
|   GeoModel.prototype.getFormattedLabel = function (name, status) { | 
|     var regionModel = this.getRegionModel(name); | 
|     var formatter = status === 'normal' ? regionModel.get(['label', 'formatter']) : regionModel.get(['emphasis', 'label', 'formatter']); | 
|     var params = { | 
|       name: name | 
|     }; | 
|     if (zrUtil.isFunction(formatter)) { | 
|       params.status = status; | 
|       return formatter(params); | 
|     } else if (zrUtil.isString(formatter)) { | 
|       return formatter.replace('{a}', name != null ? name : ''); | 
|     } | 
|   }; | 
|   GeoModel.prototype.setZoom = function (zoom) { | 
|     this.option.zoom = zoom; | 
|   }; | 
|   GeoModel.prototype.setCenter = function (center) { | 
|     this.option.center = center; | 
|   }; | 
|   // PENGING If selectedMode is null ? | 
|   GeoModel.prototype.select = function (name) { | 
|     var option = this.option; | 
|     var selectedMode = option.selectedMode; | 
|     if (!selectedMode) { | 
|       return; | 
|     } | 
|     if (selectedMode !== 'multiple') { | 
|       option.selectedMap = null; | 
|     } | 
|     var selectedMap = option.selectedMap || (option.selectedMap = {}); | 
|     selectedMap[name] = true; | 
|   }; | 
|   GeoModel.prototype.unSelect = function (name) { | 
|     var selectedMap = this.option.selectedMap; | 
|     if (selectedMap) { | 
|       selectedMap[name] = false; | 
|     } | 
|   }; | 
|   GeoModel.prototype.toggleSelected = function (name) { | 
|     this[this.isSelected(name) ? 'unSelect' : 'select'](name); | 
|   }; | 
|   GeoModel.prototype.isSelected = function (name) { | 
|     var selectedMap = this.option.selectedMap; | 
|     return !!(selectedMap && selectedMap[name]); | 
|   }; | 
|   GeoModel.type = 'geo'; | 
|   GeoModel.layoutMode = 'box'; | 
|   GeoModel.defaultOption = { | 
|     // zlevel: 0, | 
|     z: 0, | 
|     show: true, | 
|     left: 'center', | 
|     top: 'center', | 
|     // Default value: | 
|     // for geoSVG source: 1, | 
|     // for geoJSON source: 0.75. | 
|     aspectScale: null, | 
|     // /// Layout with center and size | 
|     // If you want to put map in a fixed size box with right aspect ratio | 
|     // This two properties may be more convenient | 
|     // layoutCenter: [50%, 50%] | 
|     // layoutSize: 100 | 
|     silent: false, | 
|     // Map type | 
|     map: '', | 
|     // Define left-top, right-bottom coords to control view | 
|     // For example, [ [180, 90], [-180, -90] ] | 
|     boundingCoords: null, | 
|     // Default on center of map | 
|     center: null, | 
|     zoom: 1, | 
|     scaleLimit: null, | 
|     // selectedMode: false | 
|     label: { | 
|       show: false, | 
|       color: '#000' | 
|     }, | 
|     itemStyle: { | 
|       borderWidth: 0.5, | 
|       borderColor: '#444' | 
|       // Default color: | 
|       // + geoJSON: #eee | 
|       // + geoSVG: null (use SVG original `fill`) | 
|       // color: '#eee' | 
|     }, | 
|     emphasis: { | 
|       label: { | 
|         show: true, | 
|         color: 'rgb(100,0,0)' | 
|       }, | 
|       itemStyle: { | 
|         color: 'rgba(255,215,0,0.8)' | 
|       } | 
|     }, | 
|     select: { | 
|       label: { | 
|         show: true, | 
|         color: 'rgb(100,0,0)' | 
|       }, | 
|       itemStyle: { | 
|         color: 'rgba(255,215,0,0.8)' | 
|       } | 
|     }, | 
|     regions: [] | 
|     // tooltip: { | 
|     //     show: false | 
|     // } | 
|   }; | 
|   return GeoModel; | 
| }(ComponentModel); | 
| export default GeoModel; |