mapboxgl-print-tool
Version:
1 lines • 16.2 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("file-saver"),require("mapbox-gl")):"function"==typeof define&&define.amd?define(["file-saver","mapbox-gl"],t):"object"==typeof exports?exports.MapPrintTool=t(require("file-saver"),require("mapbox-gl")):e.MapPrintTool=t(e.FileSaver,e.mapboxgl)}(this,(function(e,t){return function(e){var t=this.webpackHotUpdateMapPrintTool;this.webpackHotUpdateMapPrintTool=function(e,n){!function(e,t){if(!x[e]||!g[e])return;for(var n in g[e]=!1,t)Object.prototype.hasOwnProperty.call(t,n)&&(h[n]=t[n]);0==--m&&0===b&&P()}(e,n),t&&t(e,n)};var n,r=!0,o="2347fc16f0e81882e6cd",i={},a=[],s=[];function c(e){var t=j[e];if(!t)return E;var r=function(r){return t.hot.active?(j[r]?-1===j[r].parents.indexOf(e)&&j[r].parents.push(e):(a=[e],n=r),-1===t.children.indexOf(r)&&t.children.push(r)):(console.warn("[HMR] unexpected require("+r+") from disposed module "+e),a=[]),E(r)},o=function(e){return{configurable:!0,enumerable:!0,get:function(){return E[e]},set:function(t){E[e]=t}}};for(var i in E)Object.prototype.hasOwnProperty.call(E,i)&&"e"!==i&&"t"!==i&&Object.defineProperty(r,i,o(i));return r.e=function(e){return"ready"===d&&p("prepare"),b++,E.e(e).then(t,(function(e){throw t(),e}));function t(){b--,"prepare"===d&&(y[e]||M(e),0===b&&0===m&&P())}},r.t=function(e,t){return 1&t&&(e=r(e)),E.t(e,-2&t)},r}function l(e){var t={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_disposeHandlers:[],_main:n!==e,active:!0,accept:function(e,n){if(void 0===e)t._selfAccepted=!0;else if("function"==typeof e)t._selfAccepted=e;else if("object"==typeof e)for(var r=0;r<e.length;r++)t._acceptedDependencies[e[r]]=n||function(){};else t._acceptedDependencies[e]=n||function(){}},decline:function(e){if(void 0===e)t._selfDeclined=!0;else if("object"==typeof e)for(var n=0;n<e.length;n++)t._declinedDependencies[e[n]]=!0;else t._declinedDependencies[e]=!0},dispose:function(e){t._disposeHandlers.push(e)},addDisposeHandler:function(e){t._disposeHandlers.push(e)},removeDisposeHandler:function(e){var n=t._disposeHandlers.indexOf(e);n>=0&&t._disposeHandlers.splice(n,1)},check:_,apply:O,status:function(e){if(!e)return d;u.push(e)},addStatusHandler:function(e){u.push(e)},removeStatusHandler:function(e){var t=u.indexOf(e);t>=0&&u.splice(t,1)},data:i[e]};return n=void 0,t}var u=[],d="idle";function p(e){d=e;for(var t=0;t<u.length;t++)u[t].call(null,e)}var f,h,v,m=0,b=0,y={},g={},x={};function w(e){return+e+""===e?+e:e}function _(e){if("idle"!==d)throw new Error("check() is only allowed in idle status");return r=e,p("check"),(t=1e4,t=t||1e4,new Promise((function(e,n){if("undefined"==typeof XMLHttpRequest)return n(new Error("No browser support"));try{var r=new XMLHttpRequest,i=E.p+""+o+".hot-update.json";r.open("GET",i,!0),r.timeout=t,r.send(null)}catch(e){return n(e)}r.onreadystatechange=function(){if(4===r.readyState)if(0===r.status)n(new Error("Manifest request to "+i+" timed out."));else if(404===r.status)e();else if(200!==r.status&&304!==r.status)n(new Error("Manifest request to "+i+" failed."));else{try{var t=JSON.parse(r.responseText)}catch(e){return void n(e)}e(t)}}}))).then((function(e){if(!e)return p("idle"),null;g={},y={},x=e.c,v=e.h,p("prepare");var t=new Promise((function(e,t){f={resolve:e,reject:t}}));h={};return M(0),"prepare"===d&&0===b&&0===m&&P(),t}));var t}function M(e){x[e]?(g[e]=!0,m++,function(e){var t=document.createElement("script");t.charset="utf-8",t.src=E.p+""+e+"."+o+".hot-update.js",document.head.appendChild(t)}(e)):y[e]=!0}function P(){p("ready");var e=f;if(f=null,e)if(r)Promise.resolve().then((function(){return O(r)})).then((function(t){e.resolve(t)}),(function(t){e.reject(t)}));else{var t=[];for(var n in h)Object.prototype.hasOwnProperty.call(h,n)&&t.push(w(n));e.resolve(t)}}function O(t){if("ready"!==d)throw new Error("apply() is only allowed in ready status");var n,r,s,c,l;function u(e){for(var t=[e],n={},r=t.map((function(e){return{chain:[e],id:e}}));r.length>0;){var o=r.pop(),i=o.id,a=o.chain;if((c=j[i])&&!c.hot._selfAccepted){if(c.hot._selfDeclined)return{type:"self-declined",chain:a,moduleId:i};if(c.hot._main)return{type:"unaccepted",chain:a,moduleId:i};for(var s=0;s<c.parents.length;s++){var l=c.parents[s],u=j[l];if(u){if(u.hot._declinedDependencies[i])return{type:"declined",chain:a.concat([l]),moduleId:i,parentId:l};-1===t.indexOf(l)&&(u.hot._acceptedDependencies[i]?(n[l]||(n[l]=[]),f(n[l],[i])):(delete n[l],t.push(l),r.push({chain:a.concat([l]),id:l})))}}}}return{type:"accepted",moduleId:e,outdatedModules:t,outdatedDependencies:n}}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];-1===e.indexOf(r)&&e.push(r)}}t=t||{};var m={},b=[],y={},g=function(){console.warn("[HMR] unexpected require("+M.moduleId+") to disposed module")};for(var _ in h)if(Object.prototype.hasOwnProperty.call(h,_)){var M;l=w(_);var P=!1,O=!1,C=!1,D="";switch((M=h[_]?u(l):{type:"disposed",moduleId:_}).chain&&(D="\nUpdate propagation: "+M.chain.join(" -> ")),M.type){case"self-declined":t.onDeclined&&t.onDeclined(M),t.ignoreDeclined||(P=new Error("Aborted because of self decline: "+M.moduleId+D));break;case"declined":t.onDeclined&&t.onDeclined(M),t.ignoreDeclined||(P=new Error("Aborted because of declined dependency: "+M.moduleId+" in "+M.parentId+D));break;case"unaccepted":t.onUnaccepted&&t.onUnaccepted(M),t.ignoreUnaccepted||(P=new Error("Aborted because "+l+" is not accepted"+D));break;case"accepted":t.onAccepted&&t.onAccepted(M),O=!0;break;case"disposed":t.onDisposed&&t.onDisposed(M),C=!0;break;default:throw new Error("Unexception type "+M.type)}if(P)return p("abort"),Promise.reject(P);if(O)for(l in y[l]=h[l],f(b,M.outdatedModules),M.outdatedDependencies)Object.prototype.hasOwnProperty.call(M.outdatedDependencies,l)&&(m[l]||(m[l]=[]),f(m[l],M.outdatedDependencies[l]));C&&(f(b,[M.moduleId]),y[l]=g)}var B,k=[];for(r=0;r<b.length;r++)l=b[r],j[l]&&j[l].hot._selfAccepted&&y[l]!==g&&k.push({module:l,errorHandler:j[l].hot._selfAccepted});p("dispose"),Object.keys(x).forEach((function(e){!1===x[e]&&function(e){delete installedChunks[e]}(e)}));for(var I,H,L=b.slice();L.length>0;)if(l=L.pop(),c=j[l]){var T={},A=c.hot._disposeHandlers;for(s=0;s<A.length;s++)(n=A[s])(T);for(i[l]=T,c.hot.active=!1,delete j[l],delete m[l],s=0;s<c.children.length;s++){var S=j[c.children[s]];S&&((B=S.parents.indexOf(l))>=0&&S.parents.splice(B,1))}}for(l in m)if(Object.prototype.hasOwnProperty.call(m,l)&&(c=j[l]))for(H=m[l],s=0;s<H.length;s++)I=H[s],(B=c.children.indexOf(I))>=0&&c.children.splice(B,1);for(l in p("apply"),o=v,y)Object.prototype.hasOwnProperty.call(y,l)&&(e[l]=y[l]);var U=null;for(l in m)if(Object.prototype.hasOwnProperty.call(m,l)&&(c=j[l])){H=m[l];var R=[];for(r=0;r<H.length;r++)if(I=H[r],n=c.hot._acceptedDependencies[I]){if(-1!==R.indexOf(n))continue;R.push(n)}for(r=0;r<R.length;r++){n=R[r];try{n(H)}catch(e){t.onErrored&&t.onErrored({type:"accept-errored",moduleId:l,dependencyId:H[r],error:e}),t.ignoreErrored||U||(U=e)}}}for(r=0;r<k.length;r++){var q=k[r];l=q.module,a=[l];try{E(l)}catch(e){if("function"==typeof q.errorHandler)try{q.errorHandler(e)}catch(n){t.onErrored&&t.onErrored({type:"self-accept-error-handler-errored",moduleId:l,error:n,originalError:e}),t.ignoreErrored||U||(U=n),U||(U=e)}else t.onErrored&&t.onErrored({type:"self-accept-errored",moduleId:l,error:e}),t.ignoreErrored||U||(U=e)}}return U?(p("fail"),Promise.reject(U)):(p("idle"),new Promise((function(e){e(b)})))}var j={};function E(t){if(j[t])return j[t].exports;var n=j[t]={i:t,l:!1,exports:{},hot:l(t),parents:(s=a,a=[],s),children:[]};return e[t].call(n.exports,n,n.exports,c(t)),n.l=!0,n.exports}return E.m=e,E.c=j,E.d=function(e,t,n){E.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},E.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},E.t=function(e,t){if(1&t&&(e=E(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(E.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)E.d(n,r,function(t){return e[t]}.bind(null,r));return n},E.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return E.d(t,"a",t),t},E.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},E.p="",E.h=function(){return o},c("./src/index.js")(E.s="./src/index.js")}({"./src/Event.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}return r(e,[{key:"on",value:function(e,t){this.handles||Object.defineProperty(this,"handles",{value:{},enumerable:!1,configurable:!0,writable:!0}),this.handles[e]||(this.handles[e]=[]),this.handles[e].push(t)}},{key:"emit",value:function(e){if(this.handles[arguments[0]])for(var t=0;t<this.handles[arguments[0]].length;t++)this.handles[arguments[0]][t](arguments[1])}}]),e}();t.default=o},"./src/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i=n("./src/Event.js"),a=(r=i)&&r.__esModule?r:{default:r};n("file-saver");var s=n("mapbox-gl"),c=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.options=Object.assign({},{enableImg:!0,fileName:"map.jpg"},e),n.printType=-1,n.printBox=null,n.printStart=null,n.printCurrent=null,n.bboxCanvas=null,n._onMouseDown=n._onMouseDown.bind(n),n._onMouseMove=n._onMouseMove.bind(n),n._onMouseUp=n._onMouseUp.bind(n),n.saveAsIMG=n.saveAsIMG.bind(n),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),o(t,[{key:"onAdd",value:function(e){var t=this;return this.map=e,this.printContrainer=e.getContainer(),this.initPrintToolControl(),this.fullPrintButton.addEventListener("click",(function(){t.printType=0;var e=t.map.getCanvas();t.options.enableImg&&t.saveAsIMG(e);var n={data:e.toDataURL()};t.emit("success",n)})),this.partPrintButton.addEventListener("click",(function(){t.printType=1,t.printCanvas=t.map.getCanvas(),t.map.boxZoom.disable(),t.printCanvas.addEventListener("mousedown",t._onMouseDown)})),this.container}},{key:"onRemove",value:function(){this.container.parentNode.removeChild(this.container),this.map=void 0}},{key:"_onMouseDown",value:function(e){e.shiftKey&&0===e.button&&(this.map.dragPan.disable(),document.addEventListener("mousemove",this._onMouseMove),document.addEventListener("mouseup",this._onMouseUp),this.printStart=this.mousePos(e))}},{key:"_onMouseMove",value:function(e){this.printCurrent=this.mousePos(e),this.printBox||(this.printBox=document.createElement("div"),this.printBox.classList.add("mapboxgl-boxzoom"),this.printContrainer.classList.add("mapboxgl-crosshair"),this.printContrainer.appendChild(this.printBox));var t=Math.min(this.printStart.x,this.printCurrent.x),n=Math.max(this.printStart.x,this.printCurrent.x),r=Math.min(this.printStart.y,this.printCurrent.y),o=Math.max(this.printStart.y,this.printCurrent.y),i="translate("+t+"px,"+r+"px)";this.printBox.style.transform=i,this.printBox.style.WebkitTransform=i,this.printBox.style.width=n-t+"px",this.printBox.style.height=o-r+"px"}},{key:"_onMouseUp",value:function(e){this.finish([this.printStart,this.mousePos(e)])}},{key:"mousePos",value:function(e){var t=this.map.getCanvasContainer().getBoundingClientRect();return new s.Point(e.clientX-t.left-this.map.getCanvasContainer().clientLeft,e.clientY-t.top-this.map.getCanvasContainer().clientTop)}},{key:"finish",value:function(e){document.removeEventListener("mousemove",this._onMouseMove),document.removeEventListener("mouseup",this._onMouseUp),this.printBox&&(this.printContrainer.classList.remove("mapboxgl-crosshair"),this.printBox.parentNode.removeChild(this.printBox),this.printBox=null),e&&this.bboxPrint(e),this.map.dragPan.enable(),this.map.boxZoom.enable(),this.printCanvas.removeEventListener("mousedown",this._onMouseDown)}},{key:"bboxPrint",value:function(e){var t=e[1].x-e[0].x,n=e[1].y-e[0].y,r=document.createElement("canvas");r.width=t,r.height=n;var o=this.map.getCanvas().getContext("webgl",{preserveDrawingBuffer:!0}),i=new Uint8Array(t*n*4);o.readPixels(e[0].x,e[0].y,t,n,o.RGBA,o.UNSIGNED_BYTE,i);var a=new ImageData(new Uint8ClampedArray(i),t,n),s=r.getContext("2d");s.putImageData(a,0,0);var c=s.createImageData(t,n),l=s.getImageData(0,0,t,n),u=this.imageDataVRevert(l,c);s.putImageData(u,0,0),this.bboxCanvas=r,this.options.enableImg&&this.saveAsIMG(this.bboxCanvas);var d={data:this.bboxCanvas.toDataURL()};this.emit("success",d)}},{key:"saveAsIMG",value:function(e){var t=this;navigator.msSaveBlob?navigator.msSaveBlob(e.msToBlob(),this.options.fileName):e.toBlob((function(e){saveAs(e,t.options.fileName)}))}},{key:"initPrintToolControl",value:function(){this.container=document.createElement("div"),this.container.classList.add("mapboxgl-ctrl"),this.container.classList.add("mapboxgl-ctrl-group"),this.fullPrintButton=document.createElement("button"),this.fullPrintButton.classList.add("mapboxgl-ctrl-print-full-tool"),this.fullPrintButton.title="全图打印",this.fullPrintButton.innerHTML='<svg t="1578041898750" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2310" width="25" height="25"><path d="M255.872 703.616h63.936v255.808h-64v-255.808z m447.68 0h64v255.808h-64v-255.808z" fill="#333333" p-id="2311"></path><path d="M255.872 895.488h511.68v64H255.872zM959.36 255.872h-191.808V64H255.872v191.872H63.936a64 64 0 0 0-63.936 64v383.744a64 64 0 0 0 64 64h127.872v-128h639.616v128h127.936a64 64 0 0 0 64-64V319.872a64 64 0 0 0-64-64zM319.872 128h383.744v128H319.808v-128z m639.616 544.32a31.36 31.36 0 0 1-32 31.36h-32V575.68H128v127.936h-32a32 32 0 0 1-32-31.36V352.448a31.36 31.36 0 0 1 32-32.64h831.488a32 32 0 0 1 32 31.36v321.088z" fill="#333333" p-id="2312"></path><path d="M191.872 383.808h191.872v64H191.872z" fill="#333333" p-id="2313"></path></svg>',this.container.appendChild(this.fullPrintButton),this.partPrintButton=document.createElement("button"),this.partPrintButton.classList.add("mapboxgl-ctrl-print-bbox-tool"),this.partPrintButton.title="框选打印",this.partPrintButton.innerHTML='<svg t="1578041998616" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2859" width="25" height="25"><path d="M832 1024H192a192 192 0 0 1-192-192V192a192 192 0 0 1 192-192h640a192 192 0 0 1 192 192v640a192 192 0 0 1-192 192zM192 128a64 64 0 0 0-64 64v640a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64z" fill="" p-id="2860"></path></svg>',this.container.appendChild(this.partPrintButton)}},{key:"imageDataVRevert",value:function(e,t){for(var n=0,r=e.height;n<r;n++)for(var o=0,i=e.width;o<i;o++)t.data[n*i*4+4*o+0]=e.data[(r-n)*i*4+4*o+0],t.data[n*i*4+4*o+1]=e.data[(r-n)*i*4+4*o+1],t.data[n*i*4+4*o+2]=e.data[(r-n)*i*4+4*o+2],t.data[n*i*4+4*o+3]=e.data[(r-n)*i*4+4*o+3];return t}}]),t}(a.default);t.default=c},"file-saver":function(t,n){t.exports=e},"mapbox-gl":function(e,n){e.exports=t}}).default}));