|   | 
| /* | 
| * 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"; | 
| /* global window, Uint8Array, document */ | 
| import env from 'zrender/lib/core/env.js'; | 
| import { ToolboxFeature } from '../featureManager.js'; | 
| var SaveAsImage = /** @class */function (_super) { | 
|   __extends(SaveAsImage, _super); | 
|   function SaveAsImage() { | 
|     return _super !== null && _super.apply(this, arguments) || this; | 
|   } | 
|   SaveAsImage.prototype.onclick = function (ecModel, api) { | 
|     var model = this.model; | 
|     var title = model.get('name') || ecModel.get('title.0.text') || 'echarts'; | 
|     var isSvg = api.getZr().painter.getType() === 'svg'; | 
|     var type = isSvg ? 'svg' : model.get('type', true) || 'png'; | 
|     var url = api.getConnectedDataURL({ | 
|       type: type, | 
|       backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff', | 
|       connectedBackgroundColor: model.get('connectedBackgroundColor'), | 
|       excludeComponents: model.get('excludeComponents'), | 
|       pixelRatio: model.get('pixelRatio') | 
|     }); | 
|     var browser = env.browser; | 
|     // Chrome, Firefox, New Edge | 
|     if (typeof MouseEvent === 'function' && (browser.newEdge || !browser.ie && !browser.edge)) { | 
|       var $a = document.createElement('a'); | 
|       $a.download = title + '.' + type; | 
|       $a.target = '_blank'; | 
|       $a.href = url; | 
|       var evt = new MouseEvent('click', { | 
|         // some micro front-end framework, window maybe is a Proxy | 
|         view: document.defaultView, | 
|         bubbles: true, | 
|         cancelable: false | 
|       }); | 
|       $a.dispatchEvent(evt); | 
|     } | 
|     // IE or old Edge | 
|     else { | 
|       // @ts-ignore | 
|       if (window.navigator.msSaveOrOpenBlob || isSvg) { | 
|         var parts = url.split(','); | 
|         // data:[<mime type>][;charset=<charset>][;base64],<encoded data> | 
|         var base64Encoded = parts[0].indexOf('base64') > -1; | 
|         var bstr = isSvg | 
|         // should decode the svg data uri first | 
|         ? decodeURIComponent(parts[1]) : parts[1]; | 
|         // only `atob` when the data uri is encoded with base64 | 
|         // otherwise, like `svg` data uri exported by zrender, | 
|         // there will be an error, for it's not encoded with base64. | 
|         // (just a url-encoded string through `encodeURIComponent`) | 
|         base64Encoded && (bstr = window.atob(bstr)); | 
|         var filename = title + '.' + type; | 
|         // @ts-ignore | 
|         if (window.navigator.msSaveOrOpenBlob) { | 
|           var n = bstr.length; | 
|           var u8arr = new Uint8Array(n); | 
|           while (n--) { | 
|             u8arr[n] = bstr.charCodeAt(n); | 
|           } | 
|           var blob = new Blob([u8arr]); // @ts-ignore | 
|           window.navigator.msSaveOrOpenBlob(blob, filename); | 
|         } else { | 
|           var frame = document.createElement('iframe'); | 
|           document.body.appendChild(frame); | 
|           var cw = frame.contentWindow; | 
|           var doc = cw.document; | 
|           doc.open('image/svg+xml', 'replace'); | 
|           doc.write(bstr); | 
|           doc.close(); | 
|           cw.focus(); | 
|           doc.execCommand('SaveAs', true, filename); | 
|           document.body.removeChild(frame); | 
|         } | 
|       } else { | 
|         var lang = model.get('lang'); | 
|         var html = '' + '<body style="margin:0;">' + '<img src="' + url + '" style="max-width:100%;" title="' + (lang && lang[0] || '') + '" />' + '</body>'; | 
|         var tab = window.open(); | 
|         tab.document.write(html); | 
|         tab.document.title = title; | 
|       } | 
|     } | 
|   }; | 
|   SaveAsImage.getDefaultOption = function (ecModel) { | 
|     var defaultOption = { | 
|       show: true, | 
|       icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0', | 
|       title: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'title']), | 
|       type: 'png', | 
|       // Default use option.backgroundColor | 
|       // backgroundColor: '#fff', | 
|       connectedBackgroundColor: '#fff', | 
|       name: '', | 
|       excludeComponents: ['toolbox'], | 
|       // use current pixel ratio of device by default | 
|       // pixelRatio: 1, | 
|       lang: ecModel.getLocaleModel().get(['toolbox', 'saveAsImage', 'lang']) | 
|     }; | 
|     return defaultOption; | 
|   }; | 
|   return SaveAsImage; | 
| }(ToolboxFeature); | 
| export default SaveAsImage; |