{
    "version": 3,
    "file": "leaflet-simple-map-screenshoter.js",
    "sources": [
        "../node_modules/dom-to-image-more/dist/dom-to-image-more.min.js",
        "../node_modules/file-saver/dist/FileSaver.min.js",
        "../src/SimpleMapScreenshoter.js",
        "../src/bootstrap.js"
    ],
    "sourcesContent": [
        "/*! dom-to-image-more 06-09-2022 */\n!function(t){\"use strict\";const f={escape:function(t){return t.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g,\"\\\\$1\")},parseExtension:e,mimeType:function(t){t=e(t).toLowerCase();return function(){var t=\"application/font-woff\",e=\"image/jpeg\";return{woff:t,woff2:t,ttf:\"application/font-truetype\",eot:\"application/vnd.ms-fontobject\",png:\"image/png\",jpg:e,jpeg:e,gif:\"image/gif\",tiff:\"image/tiff\",svg:\"image/svg+xml\"}}()[t]||\"\"},dataAsUrl:function(t,e){return`data:${e};base64,`+t},isDataUrl:function(t){return-1!==t.search(/^(data:)/)},canvasToBlob:function(e){if(e.toBlob)return new Promise(function(t){e.toBlob(t)});return function(o){return new Promise(function(t){const e=l(o.toDataURL().split(\",\")[1]);var n=e.length;const r=new Uint8Array(n);for(let t=0;t<n;t++)r[t]=e.charCodeAt(t);t(new Blob([r],{type:\"image/png\"}))})}(e)},resolveUrl:function(t,e){const n=document.implementation.createHTMLDocument(),r=n.createElement(\"base\"),o=(n.head.appendChild(r),n.createElement(\"a\"));return n.body.appendChild(o),r.href=e,o.href=t,o.href},getAndEncode:function(u){let t=s.impl.urlCache.find(function(t){return t.url===u});t||(t={url:u,promise:null},s.impl.urlCache.push(t));null===t.promise&&(s.impl.options.cacheBust&&(u+=(/\\?/.test(u)?\"&\":\"?\")+(new Date).getTime()),t.promise=new Promise(function(n){const t=s.impl.options.httpTimeout,r=new XMLHttpRequest;r.onreadystatechange=function(){if(4===r.readyState)if(200!==r.status)o?n(o):i(`cannot fetch resource: ${u}, status: `+r.status);else{const e=new FileReader;e.onloadend=function(){var t=e.result.split(/,/)[1];n(t)},e.readAsDataURL(r.response)}},r.ontimeout=function(){o?n(o):i(`timeout of ${t}ms occured while fetching resource: `+u)},r.responseType=\"blob\",r.timeout=t,s.impl.options.useCredentials&&(r.withCredentials=!0),r.open(\"GET\",u,!0),r.send();let o;var e;function i(t){console.error(t),n(\"\")}s.impl.options.imagePlaceholder&&(e=s.impl.options.imagePlaceholder.split(/,/))&&e[1]&&(o=e[1])}));return t.promise},uid:function(){let t=0;return function(){return\"u\"+(\"0000\"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)+t++}}(),delay:function(n){return function(e){return new Promise(function(t){setTimeout(function(){t(e)},n)})}},asArray:function(e){const n=[],r=e.length;for(let t=0;t<r;t++)n.push(e[t]);return n},escapeXhtml:function(t){return t.replace(/%/g,\"%25\").replace(/#/g,\"%23\").replace(/\\n/g,\"%0A\")},makeImage:function(r){return\"data:,\"!==r?new Promise(function(t,e){const n=new Image;s.impl.options.useCredentials&&(n.crossOrigin=\"use-credentials\"),n.onload=function(){t(n)},n.onerror=e,n.src=r}):Promise.resolve()},width:function(t){var e=r(t,\"border-left-width\"),n=r(t,\"border-right-width\");return t.scrollWidth+e+n},height:function(t){var e=r(t,\"border-top-width\"),n=r(t,\"border-bottom-width\");return t.scrollHeight+e+n}};function e(t){t=/\\.([^\\.\\/]*?)(\\?|$)/g.exec(t);return t?t[1]:\"\"}function r(t,e){const n=h(t).getPropertyValue(e);return parseFloat(n.replace(\"px\",\"\"))}const o=function(){const r=/url\\(['\"]?([^'\"]+?)['\"]?\\)/g;return{inlineAll:function(e,r,o){if(!t(e))return Promise.resolve(e);return Promise.resolve(e).then(n).then(function(t){let n=Promise.resolve(e);return t.forEach(function(e){n=n.then(function(t){return i(t,e,r,o)})}),n})},shouldProcess:t,impl:{readUrls:n,inline:i}};function t(t){return-1!==t.search(r)}function n(t){const e=[];for(var n;null!==(n=r.exec(t));)e.push(n[1]);return e.filter(function(t){return!f.isDataUrl(t)})}function i(n,r,e,t){return Promise.resolve(r).then(function(t){return e?f.resolveUrl(t,e):t}).then(t||f.getAndEncode).then(function(t){return f.dataAsUrl(t,f.mimeType(r))}).then(function(t){return n.replace((e=r,new RegExp(`(url\\\\(['\"]?)(${f.escape(e)})(['\"]?\\\\))`,\"g\")),`$1${t}$3`);var e})}}(),i={resolveAll:function(){return n().then(function(t){return Promise.all(t.map(function(t){return t.resolve()}))}).then(function(t){return t.join(\"\\n\")})},impl:{readAll:n}};function n(){return Promise.resolve(f.asArray(document.styleSheets)).then(function(t){const n=[];return t.forEach(function(e){if(Object.getPrototypeOf(e).hasOwnProperty(\"cssRules\"))try{f.asArray(e.cssRules||[]).forEach(n.push.bind(n))}catch(t){console.log(\"Error while reading CSS rules from \"+e.href,t.toString())}}),n}).then(function(t){return t.filter(function(t){return t.type===CSSRule.FONT_FACE_RULE}).filter(function(t){return o.shouldProcess(t.style.getPropertyValue(\"src\"))})}).then(function(t){return t.map(e)});function e(e){return{resolve:function(){var t=(e.parentStyleSheet||{}).href;return o.inlineAll(e.cssText,t)},src:function(){return e.style.getPropertyValue(\"src\")}}}}const u={inlineAll:function e(t){if(!(t instanceof Element))return Promise.resolve(t);return n(t).then(function(){return t instanceof HTMLImageElement?a(t).inline():Promise.all(f.asArray(t.childNodes).map(function(t){return e(t)}))});function n(e){const n=e.style.getPropertyValue(\"background\");return n?o.inlineAll(n).then(function(t){e.style.setProperty(\"background\",t,n)}).then(function(){return e}):Promise.resolve(e)}},impl:{newImage:a}};function a(n){return{inline:function(t){if(f.isDataUrl(n.src))return Promise.resolve();return Promise.resolve(n.src).then(t||f.getAndEncode).then(function(t){return f.dataAsUrl(t,f.mimeType(n.src))}).then(function(e){return new Promise(function(t){n.onload=t,n.onerror=t,n.src=e})})}}}const c={imagePlaceholder:void 0,cacheBust:!1,useCredentials:!1,httpTimeout:3e4},s={toSvg:m,toPng:function(t,e){return(e=e||{}).raster=!0,d(t,e).then(function(t){return t.toDataURL()})},toJpeg:function(t,e){return(e=e||{}).raster=!0,d(t,e).then(function(t){return t.toDataURL(\"image/jpeg\",e.quality||1)})},toBlob:function(t,e){return(e=e||{}).raster=!0,d(t,e).then(f.canvasToBlob)},toPixelData:function(e,t){return(t=t||{}).raster=!0,d(e,t).then(function(t){return t.getContext(\"2d\").getImageData(0,0,f.width(e),f.height(e)).data})},toCanvas:function(t,e){return(e=e||{}).raster=!0,d(t,e||{})},impl:{fontFaces:i,images:u,util:f,inliner:o,urlCache:[],options:{}}},h=(\"object\"==typeof exports&&\"object\"==typeof module?module.exports=s:t.domtoimage=s,t.getComputedStyle||window.getComputedStyle),l=t.atob||window.atob;function m(r,o){var t=o=o||{};return void 0===t.imagePlaceholder?s.impl.options.imagePlaceholder=c.imagePlaceholder:s.impl.options.imagePlaceholder=t.imagePlaceholder,void 0===t.cacheBust?s.impl.options.cacheBust=c.cacheBust:s.impl.options.cacheBust=t.cacheBust,void 0===t.useCredentials?s.impl.options.useCredentials=c.useCredentials:s.impl.options.useCredentials=t.useCredentials,Promise.resolve(r).then(function(t){return function i(e,u,s,a,l=null){if(!s&&u&&!u(e))return Promise.resolve();return Promise.resolve(e).then(t).then(function(t){return n(e,t)}).then(function(t){return r(e,t,a)});function t(t){return t instanceof HTMLCanvasElement?f.makeImage(t.toDataURL()):\"IFRAME\"===t.nodeName?html2canvas(t.contentDocument.body).then(t=>t.toDataURL()).then(f.makeImage):t.cloneNode(!1)}function n(o,t){const e=o.childNodes;return 0===e.length?Promise.resolve(t):n(t,f.asArray(e)).then(function(){return t});function n(e,t){const n=h(o);let r=Promise.resolve();return t.forEach(function(t){r=r.then(function(){return i(t,u,!1,a,n)}).then(function(t){t&&e.appendChild(t)})}),r}}function r(a,c,o){return c instanceof Element?Promise.resolve().then(t).then(e).then(n).then(r).then(function(){return c}):c;function t(){function r(t,e){e.font=t.font,e.fontFamily=t.fontFamily,e.fontFeatureSettings=t.fontFeatureSettings,e.fontKerning=t.fontKerning,e.fontSize=t.fontSize,e.fontStretch=t.fontStretch,e.fontStyle=t.fontStyle,e.fontVariant=t.fontVariant,e.fontVariantCaps=t.fontVariantCaps,e.fontVariantEastAsian=t.fontVariantEastAsian,e.fontVariantLigatures=t.fontVariantLigatures,e.fontVariantNumeric=t.fontVariantNumeric,e.fontVariationSettings=t.fontVariationSettings,e.fontWeight=t.fontWeight}function t(t,e){const n=h(t);n.cssText?(e.style.cssText=n.cssText,r(n,e.style)):(o?y(t,n,e,s):P(n,l,e),s&&([\"inset-block\",\"inset-block-start\",\"inset-block-end\"].forEach(t=>e.style.removeProperty(t)),[\"left\",\"right\",\"top\",\"bottom\"].forEach(t=>{e.style.getPropertyValue(t)&&e.style.setProperty(t,\"0px\")})))}t(a,c)}function e(){function e(o){const i=h(a,o),t=i.getPropertyValue(\"content\");if(\"\"!==t&&\"none\"!==t){const u=f.uid(),n=c.getAttribute(\"class\"),r=(n&&c.setAttribute(\"class\",n+\" \"+u),document.createElement(\"style\"));function e(){const t=`.${u}:`+o,e=(i.cssText?n:r)();return document.createTextNode(t+`{${e}}`);function n(){return`${i.cssText} content: ${i.getPropertyValue(\"content\")};`}function r(){return f.asArray(i).map(t).join(\"; \")+\";\";function t(t){return t+\": \"+i.getPropertyValue(t)+(i.getPropertyPriority(t)?\" !important\":\"\")}}}r.appendChild(e()),c.appendChild(r)}}[\":before\",\":after\"].forEach(function(t){e(t)})}function n(){a instanceof HTMLTextAreaElement&&(c.innerHTML=a.value),a instanceof HTMLInputElement&&c.setAttribute(\"value\",a.value)}function r(){c instanceof SVGElement&&(c.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\"),c instanceof SVGRectElement&&[\"width\",\"height\"].forEach(function(t){const e=c.getAttribute(t);e&&c.style.setProperty(t,e)}))}}}(t,o.filter,!0,!o.raster)}).then(p).then(g).then(function(e){o.bgcolor&&(e.style.backgroundColor=o.bgcolor);o.width&&(e.style.width=o.width+\"px\");o.height&&(e.style.height=o.height+\"px\");o.style&&Object.keys(o.style).forEach(function(t){e.style[t]=o.style[t]});let t=null;\"function\"==typeof o.onclone&&(t=o.onclone(e));return Promise.resolve(t).then(function(){return e})}).then(function(t){return t=t,e=o.width||f.width(r),n=o.height||f.height(r),Promise.resolve(t).then(function(t){return t.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\"),(new XMLSerializer).serializeToString(t)}).then(f.escapeXhtml).then(function(t){return`<foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">${t}</foreignObject>`}).then(function(t){return`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${e}\" height=\"${n}\">${t}</svg>`}).then(function(t){return\"data:image/svg+xml;charset=utf-8,\"+t});var e,n}).then(function(t){return s.impl.urlCache=[],t})}function d(o,i){return m(o,i).then(f.makeImage).then(f.delay(0)).then(function(t){var e=\"number\"!=typeof i.scale?1:i.scale;const n=function(t,e){const n=document.createElement(\"canvas\");if(n.width=(i.width||f.width(t))*e,n.height=(i.height||f.height(t))*e,i.bgcolor){const r=n.getContext(\"2d\");r.fillStyle=i.bgcolor,r.fillRect(0,0,n.width,n.height)}return n}(o,e),r=n.getContext(\"2d\");return r.mozImageSmoothingEnabled=!1,r.msImageSmoothingEnabled=!1,r.imageSmoothingEnabled=!1,t&&(r.scale(e,e),r.drawImage(t,0,0)),w&&(document.body.removeChild(w),w=null,v&&clearTimeout(v),v=setTimeout(()=>{v=null,b={}},2e4)),n})}function p(n){return i.resolveAll().then(function(t){const e=document.createElement(\"style\");return n.appendChild(e),e.appendChild(document.createTextNode(t)),n})}function g(t){return u.inlineAll(t).then(function(){return t})}function y(t,e,n,r){const o=n.style,i=t.style;for(var u of e){var a=e.getPropertyValue(u),c=i.getPropertyValue(u),s=(i.setProperty(u,r?\"initial\":\"unset\"),e.getPropertyValue(u));s!==a?o.setProperty(u,a):o.removeProperty(u),i.setProperty(u,c)}}function P(n,r,t){const o=function(t){if(b[t])return b[t];w||((w=document.createElement(\"iframe\")).style.visibility=\"hidden\",w.style.position=\"fixed\",document.body.appendChild(w),w.contentWindow.document.write('<!DOCTYPE html><meta charset=\"UTF-8\"><title>sandbox</title><body>'));const e=document.createElement(t),n=(w.contentWindow.document.body.appendChild(e),e.textContent=\".\",w.contentWindow.getComputedStyle(e)),r={};return f.asArray(n).forEach(function(t){r[t]=\"width\"===t||\"height\"===t?\"auto\":n.getPropertyValue(t)}),w.contentWindow.document.body.removeChild(e),b[t]=r}(t.tagName),i=t.style;f.asArray(n).forEach(function(t){var e=n.getPropertyValue(t);(e!==o[t]||r&&e!==r.getPropertyValue(t))&&i.setProperty(t,e,n.getPropertyPriority(t))})}let v=null,w=null,b={}}(this);",
        "(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map",
        "/* global L */\nimport domtoimage from 'dom-to-image-more'\nimport fileSaver from 'file-saver'\n\nexport const STATUS_READY = 1\nexport const STATUS_PENDING = 2\nexport const ICON_SVG_BASE64 = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDMyIDMyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAzMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxnIGlkPSJjYW1lcmEiPjxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMTYsOS41MDFjLTQuNDE5LDAtOCwzLjU4MS04LDhjMCw0LjQxOCwzLjU4MSw4LDgsOGM0LjQxOCwwLDgtMy41ODIsOC04UzIwLjQxOCw5LjUwMSwxNiw5LjUwMXogTTIwLjU1NSwyMS40MDZjLTIuMTU2LDIuNTE2LTUuOTQzLDIuODA3LTguNDU5LDAuNjVjLTIuNTE3LTIuMTU2LTIuODA3LTUuOTQ0LTAuNjUtOC40NTljMi4xNTUtMi41MTcsNS45NDMtMi44MDcsOC40NTktMC42NUMyMi40MiwxNS4xMDIsMjIuNzExLDE4Ljg5MSwyMC41NTUsMjEuNDA2eiIvPjxwYXRoIHN0eWxlPSJmaWxsOiMwMTAwMDI7IiBkPSJNMTYsMTMuNTAxYy0yLjIwOSwwLTMuOTk5LDEuNzkxLTQsMy45OTl2MC4wMDJjMCwwLjI3NSwwLjIyNCwwLjUsMC41LDAuNXMwLjUtMC4yMjUsMC41LTAuNVYxNy41YzAuMDAxLTEuNjU2LDEuMzQzLTIuOTk5LDMtMi45OTljMC4yNzYsMCwwLjUtMC4yMjQsMC41LTAuNVMxNi4yNzYsMTMuNTAxLDE2LDEzLjUwMXoiLz48cGF0aCBzdHlsZT0iZmlsbDojMDEwMDAyOyIgZD0iTTI5LjQ5Miw4LjU0MmwtNC4zMzQtMC43MjNsLTEuMzczLTMuNDM0QzIzLjMyNiwzLjI0LDIyLjIzMiwyLjUsMjEsMi41SDExYy0xLjIzMiwwLTIuMzI2LDAuNzQtMi43ODYsMS44ODZMNi44NDIsNy44MTlMMi41MDksOC41NDJDMS4wNTUsOC43ODMsMCwxMC4wMjcsMCwxMS41djE1YzAsMS42NTQsMS4zNDYsMywzLDNoMjZjMS42NTQsMCwzLTEuMzQ2LDMtM3YtMTVDMzIsMTAuMDI3LDMwLjk0NSw4Ljc4MywyOS40OTIsOC41NDJ6IE0zMCwyNi41YzAsMC41NTMtMC40NDcsMS0xLDFIM2MtMC41NTMsMC0xLTAuNDQ3LTEtMXYtMTVjMC0wLjQ4OSwwLjM1NC0wLjkwNiwwLjgzNi0wLjk4Nkw4LjI4LDkuNjA3bDEuNzkxLTQuNDc4QzEwLjIyNCw0Ljc1LDEwLjU5MSw0LjUsMTEsNC41aDEwYzAuNDA4LDAsMC43NzUsMC4yNDksMC45MjgsMC42MjlsMS43OTEsNC40NzhsNS40NDUsMC45MDdDMjkuNjQ2LDEwLjU5NCwzMCwxMS4wMTEsMzAsMTEuNVYyNi41eiIvPjwvZz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PC9zdmc+'\n\nexport const SimpleMapScreenshoter = L.Control.extend({\n    options: {\n        cropImageByInnerWH: true,\n        hidden: false,\n        domtoimageOptions: {},\n        position: 'topleft',\n        screenName: 'screen',\n        iconUrl: ICON_SVG_BASE64,\n        hideElementsWithSelectors: [\n            '.leaflet-control-container'\n        ],\n        onCropBorderSize: 2,\n        caption: null,\n        captionFontSize: 15,\n        captionFont: 'Arial',\n        captionColor: 'black',\n        captionBgColor: 'white',\n        captionOffset: 5,\n        mimeType: 'image/png',\n        debugMode: false,\n        preventDownload: false,\n        onPixelDataFail: function ({ node, error }) {\n            console.warn(`Map node is very big ${node.scrollWidth}x${node.scrollHeight}`)\n            console.warn(`Add function: SimpleMapScreenshoter({\n              onPixelDataFail: function({ node, plugin, error, mapPane, domtoimageOptions }) {\n                 // Solutions:\n                 // decrease size of map\n                 // or decrease zoom level\n                 // or remove elements with big distanses\n                 // and after that return image in Promise - plugin._getPixelDataOfNormalMap\n                 return plugin._getPixelDataOfNormalMap(domtoimageOptions)\n              }\n            })`)\n            return Promise.reject(error)\n        }\n    },\n    onAdd () {\n        this._container = L.DomUtil.create(\n            'div',\n            'leaflet-control-simpleMapScreenshoter'\n        )\n        this._link = null\n        this._screenState = {\n            status: STATUS_READY,\n            promise: null\n        }\n        if (this.options.hidden === false) {\n            this._addScreenBtn()\n        }\n\n        this._onUserStartInteractWithMap = this._onUserStartInteractWithMap.bind(this)\n        this._onUserEndInteractWithMap = this._onUserEndInteractWithMap.bind(this)\n\n        this._map.on('zoomstart', this._onUserStartInteractWithMap)\n        this._map.on('move', this._onUserStartInteractWithMap)\n\n        this._map.on('zoomend', this._onUserEndInteractWithMap)\n        this._map.on('moveend', this._onUserEndInteractWithMap)\n\n        return this._container\n    },\n    /**\n     * @param format {string} blob or png\n     * @param sreenOptions {Object}\n     * @returns {Promise<Blob>|Promise<Base64>} Blob or png image\n     */\n    takeScreen (format = 'blob', sreenOptions = {}) {\n        const options = {}\n        for (let opt in this.options) {\n            if (sreenOptions.hasOwnProperty(opt)) {\n                options[opt] = sreenOptions[opt]\n            } else {\n                options[opt] = this.options[opt]\n            }\n        }\n        if (this._screenState.status === STATUS_PENDING) {\n            return this._screenState.promise\n        }\n        this._map.fire('simpleMapScreenshoter.takeScreen')\n        this._screenState.status = STATUS_PENDING\n        this._setElementsVisible(false)\n        this._screenState.promise = this._waitEndOfInteractions()\n            .then(() => this._getPixelData(options))\n            .then(pixels => {\n                this._setElementsVisible(true)\n                return this._toCanvas(pixels, options)\n            })\n            .then(canvas => {\n                if (format === 'image') {\n                    return this._canvasToImage(canvas, options)\n                } else if (format === 'canvas') {\n                    return canvas\n                }\n                return this._canvasToBlob(canvas, options)\n            })\n            .then(image => {\n                this._screenState.status = STATUS_READY\n                this._map.fire('simpleMapScreenshoter.done')\n                return image\n            }).catch(e => {\n                this._setElementsVisible(true)\n                this._screenState.status = STATUS_READY\n                this._map.fire('simpleMapScreenshoter.error', {e})\n                return Promise.reject(e)\n            })\n        return this._screenState.promise\n    },\n    /**\n     * @param isVisible\n     * @private\n     */\n    _setElementsVisible (isVisible = false) {\n        this.options.hideElementsWithSelectors.forEach(selector => {\n            const els = this._map._container.querySelectorAll(selector)\n            for (let el of els) {\n                el.style.opacity = isVisible === false\n                    ? 0\n                    : 1\n            }\n        })\n    },\n    /**\n     * @param canvas\n     * @param mimeType\n     * @returns {Promise<Base64>}\n     * @private\n     */\n    _canvasToImage (canvas, {mimeType}) {\n        const image = canvas.toDataURL(mimeType)\n        if (image.indexOf('base64') === -1) {\n            return Promise.reject(new Error('Base64 image generation error'))\n        }\n        return Promise.resolve(image)\n    },\n    /**\n     * @param canvas {Canvas}\n     * @returns {Promise<Blob>}\n     * @private\n     */\n    _canvasToBlob (canvas, {mimeType}) {\n        return new Promise((resolve, reject) => {\n            canvas.toBlob(blob => {\n                resolve(blob)\n            }, mimeType)\n        })\n    },\n    /**\n     * @param pixels {Uint8Array}\n     * @param options {Object}\n     * @returns {Promise<Canvas>}\n     * @private\n     */\n    _toCanvas (pixels, options) {\n        let {captionOffset, caption, captionFontSize, captionFont, captionColor, captionBgColor} = options\n        let {screenHeight, screenWidth} = this._node\n        let canvas = document.createElement('canvas')\n        canvas.width = screenWidth\n        canvas.height = screenHeight\n\n        let ctx = canvas.getContext('2d')\n        let imageData = ctx.createImageData(screenWidth, screenHeight)\n        for (let i = 0; i < pixels.length; ++i) {\n            imageData.data[i] = pixels[i]\n        }\n        ctx.putImageData(imageData, 0, 0)\n        imageData = null\n\n        let transformedCanvas = document.createElement('canvas')\n        let transformedCanvasCtx = transformedCanvas.getContext('2d')\n        let minY = 0\n        let minX = 0\n        let height = screenHeight\n        let width = screenWidth\n\n        // crop blank opacity from image borders\n        if (this.options.cropImageByInnerWH === true) {\n            let pixelAtXYOffset = 0\n\n            let debugY = {}\n            let debugX = {}\n\n            let emptyYLine = []\n            let emptyCountOnHorizontal = 0\n            for (let y = 0; y < screenHeight; ++y) {\n                emptyCountOnHorizontal = 0\n                for (let x = 0; x < screenWidth; ++x) {\n                    pixelAtXYOffset = (4 * y * screenWidth) + (4 * x)\n                    // find opacity = 0 on horizontal\n                    if (pixels[pixelAtXYOffset + 4] === 0) {\n                        emptyCountOnHorizontal++\n                    }\n                    /* if (y === Math.round(screenHeight / 2)) {\n                        debugY[x] = pixels.slice(pixelAtXYOffset, pixelAtXYOffset + 4)\n                    } */\n                }\n                // save empty horizontal\n                if (emptyCountOnHorizontal === screenWidth) {\n                    emptyYLine.push(y)\n                }\n            }\n            const minMaxY = this._getMinAndMaxOnValuesBreak(emptyYLine)\n            minY = minMaxY.min\n            let maxX = screenWidth\n            let maxY = minMaxY.max\n\n            let emptyXLine = []\n            let emptyCountOnVertical = 0\n            for (let x = minX; x < maxX; ++x) {\n                emptyCountOnVertical = 0\n                for (let y = 0; y < screenHeight; ++y) {\n                    pixelAtXYOffset = (4 * y * screenWidth) + (4 * x)\n                    // find opacity = 0 on vertical\n                    if (pixels[pixelAtXYOffset + 4] === 0) {\n                        emptyCountOnVertical++\n                    }\n\n                    /* if (x === screenWidth - 5) {\n                        debugX[y] = pixels.slice(pixelAtXYOffset, pixelAtXYOffset + 4)\n                    } */\n                }\n                // save empty vertical\n                if (emptyCountOnVertical === screenHeight) {\n                    emptyXLine.push(x)\n                }\n            }\n            const minMaxX = this._getMinAndMaxOnValuesBreak(emptyXLine)\n            minX = minMaxX.min\n            maxX = minMaxX.max\n\n            if ((minX === 0 && maxX === 0) || maxX === null) {\n                maxX = screenWidth\n            }\n            if ((minY === 0 && maxY === 0) || maxY === null) {\n                maxY = screenHeight\n            }\n\n            if (this.options.debugMode === true) {\n                console.log('emptyYLine', emptyYLine)\n                console.log('minMaxY', minMaxY)\n                console.log('emptyXLine', emptyXLine)\n                console.log('minMaxX', minMaxX)\n                console.log('debugX', debugX)\n                console.log('debugY', debugY)\n            }\n\n            // if w/h changed, scale inner\n            if (minY !== 0 || maxY !== screenHeight || minX !== 0 || maxX !== screenWidth) {\n                minY = minY + this.options.onCropBorderSize\n                maxY = maxY - this.options.onCropBorderSize\n                minX = minX + this.options.onCropBorderSize\n                maxX = maxX - this.options.onCropBorderSize\n            }\n            height = maxY - minY\n            width = maxX - minX\n            transformedCanvas.width = width\n            transformedCanvas.height = height\n        } else {\n            transformedCanvas.width = width\n            transformedCanvas.height = height\n        }\n\n        let captionTxt = null\n        if (caption) {\n            captionTxt = typeof caption === 'function'\n                ? caption.call(this)\n                : caption\n        }\n\n        // increase size of canvas for write caption\n        if (captionTxt !== null) {\n            transformedCanvas.height = transformedCanvas.height + (captionOffset + captionFontSize + captionOffset)\n            // set bg color\n            transformedCanvasCtx.beginPath()\n            transformedCanvasCtx.rect(0, 0, transformedCanvas.width, transformedCanvas.height)\n            transformedCanvasCtx.fillStyle = captionBgColor\n            transformedCanvasCtx.fill()\n            transformedCanvasCtx.save()\n        }\n\n        transformedCanvasCtx.drawImage(canvas, minX, minY, width, height, 0, 0, width, height)\n\n        // write caption text\n        if (captionTxt !== null) {\n            transformedCanvasCtx.font = `${captionFontSize}px ${captionFont}`\n            transformedCanvasCtx.fillStyle = captionColor\n            transformedCanvasCtx.fillText(captionTxt, captionOffset, height + captionOffset + captionFontSize)\n        }\n\n        return Promise.resolve(transformedCanvas)\n    },\n    /**\n     * find break in array [0,1,2,3,40,41,42]\n     * we get 3 and 40\n     * @param arr {Array}\n     * @returns {{min: number, max: number}}\n     * @private\n     */\n    _getMinAndMaxOnValuesBreak (arr) {\n        let min = 0\n        let max = 0\n        let hasBreak = false\n        for (let i = 1; i < arr.length; i++) {\n            if (arr[i] - 1 === arr[i - 1]) {\n                min = arr[i]\n            } else {\n                max = arr[i]\n                hasBreak = true\n                break\n            }\n        }\n        // if on start no opacity, opacity may be exist on end\n        if (hasBreak === false && arr[0] > 1) {\n            min = 0\n            max = arr[0]\n            // opaciy at start\n        } else if (hasBreak === false) {\n            min = arr[arr.length - 1] || 0\n            max = null\n        }\n        return {min, max}\n    },\n    /**\n     * @param domtoimageOptions\n     * @returns {Promise<Uint8Array>}\n     * @private\n     */\n    _getPixelData ({domtoimageOptions = {}}) {\n        /**\n         * 1) we try try to get full map size screen, but we have problem of big canvas:\n         * https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n         * ie mobile - 4000\n         * ie - 8000\n         * chrome - 16000\n         * firefox - 32000\n         *\n         * 2) on error, we can create screen with hide not visible elements by css\n         * sometimes it not work, need solution\n         */\n        return this._getPixelDataOfNormalMap(domtoimageOptions).catch(e => {\n            console.warn('May be map size very big on that zoom level, we have error:', e.toString())\n            console.warn('You can manually hide map elements with large distances between them for fix that warn')\n            return this._getPixelDataOfBigMap(domtoimageOptions)\n        })\n    },\n    _getPixelDataOfNormalMap (domtoimageOptions = {}) {\n        const node = this._map.getContainer()\n\n        this._node = {\n            node,\n            screenHeight: node.scrollHeight,\n            screenWidth: node.scrollWidth\n        }\n\n        return domtoimage.toPixelData(node, domtoimageOptions)\n    },\n    _getPixelDataOfBigMap (domtoimageOptions = {}) {\n        const node = this._map.getContainer()\n\n        // fix: https://github.com/grinat/leaflet-simple-map-screenshoter/issues/7\n        // fix memory out error if map scrollHeight and scrollWidth very big\n        const mapPane = this._map.getPane('mapPane')\n\n        const increaser = 2 // <-- when window resize, map resize with translate option, we need what for prevent gray on borders\n        mapPane.style.width = `${node.clientWidth * increaser}px`\n        mapPane.style.height = `${node.clientHeight * increaser}px`\n        mapPane.style.overflow = 'hidden'\n\n        const restoreMapPane = () => {\n            mapPane.style.width = 'initial'\n            mapPane.style.height = 'initial'\n            mapPane.style.overflow = 'initial'\n        }\n\n        this._node = {\n            node,\n            screenHeight: node.scrollHeight,\n            screenWidth: node.scrollWidth\n        }\n\n        return domtoimage.toPixelData(node, domtoimageOptions).then(r => {\n            restoreMapPane()\n            return r\n        }).catch(e => {\n            restoreMapPane()\n\n            // 4000 - max canvas size on ie mobile\n            if (node.scrollHeight >= 4000 || node.scrollWidth >= 4000) {\n                return this.options.onPixelDataFail({\n                    plugin: this,\n                    node,\n                    mapPane,\n                    error: e,\n                    domtoimageOptions\n                })\n            }\n\n            return Promise.reject(e)\n        })\n    },\n    /**\n     * @private\n     */\n    _addScreenBtn () {\n        this._link = L.DomUtil.create(\n            'a',\n            'leaflet-control-simpleMapScreenshoter-btn',\n            this._container\n        )\n        this._addCss()\n        L.DomEvent.addListener(this._link, 'click', this._onScreenBtn, this)\n        L.DomEvent.disableClickPropagation(this._link)\n    },\n    /**\n     * @private\n     */\n    _addCss () {\n        let css = `\n    .leaflet-control-simpleMapScreenshoter{\n       border: 2px solid rgba(0,0,0,0.2);\n       background-clip: padding-box;\n    }\n    .leaflet-control-simpleMapScreenshoter a{\n       background-color: #fff;\n       border-bottom: 1px solid #ccc;\n       width: 30px;\n       height: 30px;\n       line-height: 30px;\n       display: block;\n       text-align: center;\n       text-decoration: none;\n       color: black;\n       overflow: hidden;\n       border-radius: 2px;\n       background-image: url('${this.options.iconUrl}');\n       background-position: 46% 41%;\n       background-repeat: no-repeat;\n       background-size: 63%;\n    }\n    .leaflet-control-simpleMapScreenshoter a:hover{\n       cursor: pointer;\n    }\n    `\n        let head = document.head || document.getElementsByTagName('head')[0]\n        let style = document.createElement('style')\n        style.appendChild(\n            document.createTextNode(\n                css\n            )\n        )\n        head.appendChild(style)\n    },\n    /**\n     * @private\n     */\n    _onScreenBtn () {\n        this._map.fire('simpleMapScreenshoter.click')\n        if (this.options.preventDownload) return\n\n        this.takeScreen().then(blob => {\n            const screenName = typeof this.options.screenName === 'function'\n                ? this.options.screenName.call(this)\n                : this.options.screenName\n\n            fileSaver.saveAs(blob, `${screenName}.png`)\n        }).catch(e => {\n            this._map.fire('simpleMapScreenshoter.error', {e})\n        })\n    },\n    _onUserStartInteractWithMap () {\n        this._interaction = true\n    },\n    _onUserEndInteractWithMap () {\n        this._interaction = false\n    },\n    _waitEndOfInteractions () {\n        return new Promise(resolve => {\n            const interval = setInterval(() => {\n                if (!this._interaction) {\n                    resolve()\n                    clearInterval(interval)\n                }\n            }, 100)\n        })\n    }\n})\n\nexport default SimpleMapScreenshoter\n",
        "/* global L */\nimport SimpleMapScreenshoter from './SimpleMapScreenshoter'\n\n/**\n * @returns {L.Control.SimpleMapScreenshoter}\n */\nconst init = () => {\n    L.Control.SimpleMapScreenshoter = SimpleMapScreenshoter\n    L.simpleMapScreenshoter = function (options) {\n        return new L.Control.SimpleMapScreenshoter(options)\n    }\n    return SimpleMapScreenshoter\n}\n\nexport default init()\n\nexport {SimpleMapScreenshoter}\n"
    ],
    "names": [
        "t",
        "f",
        "escape",
        "replace",
        "parseExtension",
        "e",
        "mimeType",
        "toLowerCase",
        "woff",
        "woff2",
        "ttf",
        "eot",
        "png",
        "jpg",
        "jpeg",
        "gif",
        "tiff",
        "svg",
        "dataAsUrl",
        "isDataUrl",
        "search",
        "canvasToBlob",
        "toBlob",
        "Promise",
        "o",
        "l",
        "toDataURL",
        "split",
        "n",
        "length",
        "r",
        "Uint8Array",
        "charCodeAt",
        "Blob",
        "type",
        "resolveUrl",
        "document",
        "implementation",
        "createHTMLDocument",
        "createElement",
        "head",
        "appendChild",
        "body",
        "href",
        "getAndEncode",
        "u",
        "s",
        "impl",
        "urlCache",
        "find",
        "url",
        "promise",
        "push",
        "options",
        "cacheBust",
        "test",
        "Date",
        "getTime",
        "httpTimeout",
        "XMLHttpRequest",
        "i",
        "console",
        "error",
        "onreadystatechange",
        "readyState",
        "status",
        "FileReader",
        "onloadend",
        "result",
        "readAsDataURL",
        "response",
        "ontimeout",
        "responseType",
        "timeout",
        "useCredentials",
        "withCredentials",
        "open",
        "send",
        "imagePlaceholder",
        "uid",
        "Math",
        "random",
        "pow",
        "toString",
        "slice",
        "delay",
        "setTimeout",
        "asArray",
        "escapeXhtml",
        "makeImage",
        "Image",
        "crossOrigin",
        "onload",
        "onerror",
        "src",
        "resolve",
        "width",
        "scrollWidth",
        "height",
        "scrollHeight",
        "exec",
        "h",
        "getPropertyValue",
        "parseFloat",
        "inlineAll",
        "then",
        "forEach",
        "shouldProcess",
        "readUrls",
        "inline",
        "filter",
        "RegExp",
        "resolveAll",
        "all",
        "map",
        "join",
        "readAll",
        "styleSheets",
        "Object",
        "getPrototypeOf",
        "hasOwnProperty",
        "cssRules",
        "bind",
        "log",
        "CSSRule",
        "FONT_FACE_RULE",
        "style",
        "parentStyleSheet",
        "cssText",
        "Element",
        "setProperty",
        "HTMLImageElement",
        "a",
        "childNodes",
        "newImage",
        "c",
        "toSvg",
        "m",
        "toPng",
        "raster",
        "d",
        "toJpeg",
        "quality",
        "toPixelData",
        "getContext",
        "getImageData",
        "data",
        "toCanvas",
        "fontFaces",
        "images",
        "util",
        "inliner",
        "module",
        "getComputedStyle",
        "window",
        "atob",
        "HTMLCanvasElement",
        "nodeName",
        "html2canvas",
        "contentDocument",
        "cloneNode",
        "font",
        "fontFamily",
        "fontFeatureSettings",
        "fontKerning",
        "fontSize",
        "fontStretch",
        "fontStyle",
        "fontVariant",
        "fontVariantCaps",
        "fontVariantEastAsian",
        "fontVariantLigatures",
        "fontVariantNumeric",
        "fontVariationSettings",
        "fontWeight",
        "removeProperty",
        "y",
        "b",
        "w",
        "visibility",
        "position",
        "contentWindow",
        "write",
        "textContent",
        "removeChild",
        "tagName",
        "getPropertyPriority",
        "P",
        "getAttribute",
        "setAttribute",
        "createTextNode",
        "HTMLTextAreaElement",
        "innerHTML",
        "value",
        "HTMLInputElement",
        "SVGElement",
        "SVGRectElement",
        "p",
        "g",
        "bgcolor",
        "backgroundColor",
        "keys",
        "onclone",
        "XMLSerializer",
        "serializeToString",
        "scale",
        "fillStyle",
        "fillRect",
        "mozImageSmoothingEnabled",
        "msImageSmoothingEnabled",
        "imageSmoothingEnabled",
        "drawImage",
        "v",
        "clearTimeout",
        "this",
        "dispatchEvent",
        "MouseEvent",
        "createEvent",
        "initMouseEvent",
        "self",
        "global",
        "saveAs",
        "HTMLAnchorElement",
        "prototype",
        "URL",
        "webkitURL",
        "j",
        "name",
        "download",
        "rel",
        "origin",
        "location",
        "target",
        "createObjectURL",
        "revokeObjectURL",
        "navigator",
        "msSaveOrOpenBlob",
        "autoBom",
        "warn",
        "title",
        "innerText",
        "HTMLElement",
        "safari",
        "userAgent",
        "k",
        "SimpleMapScreenshoter",
        "L",
        "Control",
        "extend",
        "node",
        "reject",
        "_container",
        "DomUtil",
        "create",
        "_link",
        "_screenState",
        "hidden",
        "_addScreenBtn",
        "_onUserStartInteractWithMap",
        "_onUserEndInteractWithMap",
        "_map",
        "on",
        "format",
        "sreenOptions",
        "opt",
        "fire",
        "_setElementsVisible",
        "_waitEndOfInteractions",
        "_this",
        "_getPixelData",
        "_toCanvas",
        "pixels",
        "_canvasToImage",
        "canvas",
        "_canvasToBlob",
        "image",
        "catch",
        "isVisible",
        "hideElementsWithSelectors",
        "els",
        "_this2",
        "querySelectorAll",
        "selector",
        "opacity",
        "indexOf",
        "Error",
        "blob",
        "captionOffset",
        "caption",
        "captionFontSize",
        "captionFont",
        "captionColor",
        "captionBgColor",
        "_node",
        "screenHeight",
        "screenWidth",
        "ctx",
        "imageData",
        "createImageData",
        "putImageData",
        "transformedCanvas",
        "transformedCanvasCtx",
        "minY",
        "minX",
        "cropImageByInnerWH",
        "emptyYLine",
        "emptyCountOnHorizontal",
        "x",
        "minMaxY",
        "_getMinAndMaxOnValuesBreak",
        "min",
        "maxX",
        "maxY",
        "max",
        "emptyXLine",
        "emptyCountOnVertical",
        "minMaxX",
        "debugMode",
        "onCropBorderSize",
        "captionTxt",
        "call",
        "beginPath",
        "rect",
        "fill",
        "save",
        "fillText",
        "arr",
        "hasBreak",
        "domtoimageOptions",
        "_getPixelDataOfNormalMap",
        "_this3",
        "_getPixelDataOfBigMap",
        "getContainer",
        "domtoimage",
        "mapPane",
        "getPane",
        "clientWidth",
        "clientHeight",
        "overflow",
        "restoreMapPane",
        "_this4",
        "onPixelDataFail",
        "_addCss",
        "DomEvent",
        "addListener",
        "_onScreenBtn",
        "disableClickPropagation",
        "css",
        "iconUrl",
        "getElementsByTagName",
        "preventDownload",
        "takeScreen",
        "screenName",
        "_this5",
        "_interaction",
        "interval",
        "setInterval",
        "_this6",
        "simpleMapScreenshoter"
    ],
    "mappings": "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"
}