-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynmap-export.min.js
1 lines (1 loc) · 7.77 KB
/
dynmap-export.min.js
1
function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f=[],g=!0,h=!1;try{for(c=c.call(a);!(g=(d=c.next()).done)&&(f.push(d.value),!(b&&f.length===b));g=!0);}catch(a){h=!0,e=a}finally{try{g||null==c["return"]||c["return"]()}finally{if(h)throw e}}return f}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function exportDynmap(){return _exportDynmap.apply(this,arguments)}function _exportDynmap(){return _exportDynmap=_asyncToGenerator(function*(a={}){function b(a){if(!a)return console.error("\u8F6C\u6362 Blob \u5931\u8D25\uFF0C\u7F3A\u5C11 dataURL \u53C2\u6570\u3002"),null;let b=a.split(",");if(2!==b.length)return void console.error("\u8F6C\u6362 Blob \u5931\u8D25\uFF0CBase64 \u5B57\u7B26\u4E32\u683C\u5F0F\u4E0D\u7B26\u5408\u8981\u6C42\u3002");try{let a=b[0].match(/(:)(.*?)(;)/)[2],c=atob(b[1]),d=c.length,e=new Uint8Array(d);for(;d--;)e[d]=c.charCodeAt(d);return new Blob([e],{type:a})}catch(a){return console.error("\u8F6C\u6362 Blob \u5931\u8D25\uFF1A"),console.error(a),null}}function c(a){return new Promise(b=>{if(!a)return console.error("\u83B7\u53D6\u56FE\u7247\u5931\u8D25\uFF0C\u7F3A\u5C11 url \u53C2\u6570\u3002"),b(null);let c=new Image;c.onerror=function(){console.error(`图片加载失败(${a})`),b(null)},c.onload=function(){b(c)},c.setAttribute("src",a)})}function d(a,b=""){return"object"==typeof a?"string"==typeof b?""===b?a:b.split(".").reduce((c,a)=>void 0===c?c:c[a],a):void console.error("\u8BBF\u95EE\u5931\u8D25\uFF0C\u53C2\u6570 path \u9519\u8BEF\u3002"):void console.error("\u8BBF\u95EE\u5931\u8D25\uFF0C\u53C2\u6570 obj \u9519\u8BEF\u3002")}console.group("Dynmap \u56FE\u7247\u5BFC\u51FA");try{return yield _asyncToGenerator(function*(){var e=Math.floor;var f=Math.pow;let g="-".repeat(50);console.log("--------------------------------------------------"),console.log("\u5904\u7406\u4E2D\uFF0C\u8BF7\u7A0D\u5019...");let h=a.dynmap,i=a.autoStart,j=a.calcOnly,k=a.fillColor,l=void 0===k?"#000000":k,m=a.maxTiles,n=void 0===m?null:m,o=a.mode,p=void 0===o?"viewed":o,q=a.timeout,r=void 0===q?20:q,s=["maptype.options","maptype.options.mapzoomin","maptype.options.mapzoomout","maptype.options.prefix","maptype.options.tileSize","options.url.tiles","registeredTiles","world.name"];if("undefined"==typeof h||!h)return console.error("\u5BFC\u51FA\u5931\u8D25\uFF0Cdynmap \u5BF9\u8C61\u4E0D\u5B58\u5728\u3002"),!1;for(var t=0,u=s;t<u.length;t++){let a=u[t],b=d(h,a);if("undefined"==typeof b||null===b)return console.error(`导出失败, dynmap 对象缺少 ${a} 属性`),!1}let v=h.map.getZoom(),w=h.maptype.options.mapzoomin,x=h.maptype.options.mapzoomout,y=[];for(let a=-1*w;a<=x;a++)y.unshift(0<=a?a:0);let z=h.options.url.tiles,A=h.registeredTiles,B=[],C=y[v],D=h.world.name,E=h.maptype.options.prefix,F=0,G=0,H=0,I=0,J=f(2,C),K=h.maptype.options.tileSize;if(0===K)return console.error("\u5BFC\u51FA\u5931\u8D25\uFF0C\u83B7\u53D6\u5230\u7684 tile \u5206\u8FA8\u7387\u4E3A 0\u3002"),!1;for(let a in A){let b=A[a],c="",d="",e="",f=b.split("/"),g=f.length;if(5<=g)c=f[g-1],d=f[g-3],e=f[g-4];else return console.error("\u5BFC\u51FA\u5931\u8D25\uFF0Ctile \u6587\u4EF6\u8DEF\u5F84\u683C\u5F0F\u4E0D\u7B26\u5408\u8981\u6C42\u3002"),!1;let h=c.match(/z+/),i=h?h[0].length:0,j=c.match(/-?[0-9]+/g);if(Array.isArray(j)&&2===j.length)j=j.map(a=>parseInt(a));else return console.error("\u5BFC\u51FA\u5931\u8D25\uFF0Ctile \u6587\u4EF6\u540D\u683C\u5F0F\u4E0D\u7B26\u5408\u8981\u6C42\u3002"),!1;let k=i===C&&e===D&&d===E;if(!k)continue;j[0]/=J,j[1]/=J;let l=j,m=_slicedToArray(l,2),n=m[0],o=m[1];n<F&&(F=n),n>G&&(G=n),o<H&&(H=o),o>I&&(I=o),B.push({filePath:b,tilePos:j})}if("corner"===p){B=[];for(let a=F;a<=G;a++)for(let b=H;b<=I;b++){let c="",d="",f=a*J,g=b*J;c=`${e(f/32)}_${e(g/32)}`,0<C&&(d="_".padStart(C+1,"z")),d+=`${f}_${g}`,B.push({filePath:`${z}${D}/${E}/${c}/${d}`,tilePos:[a,b]})}}let L=(G-F)*K,M=(I-H)*K;if(console.log("--------------------------------------------------"),console.log("\u5BFC\u51FA\u914D\u7F6E\u4FE1\u606F\uFF1A",{config:{mapZoomCurr:v,mapZoomIn:w,mapZoomOut:x,tileLevels:y,tilesDir:z,useLevel:C,useWorld:D,useMap:E,tileInfo:B,tileMinX:F,tileMaxX:G,tileMinY:H,tileMaxY:I,tilePosOffset:J,tileResolution:K},options:a}),console.log(`地图 tile 总数:${B.length}`),console.log(`导出图片分辨率:${L} x ${M}`),console.log("--------------------------------------------------"),void 0!==j&&j)return!0;if(0===B.length)return console.warn("\u56FE\u7247\u5217\u8868\u4E3A\u7A7A\uFF0C\u53D6\u6D88\u5BFC\u51FA\u3002"),!1;let N=null;if(yield new Promise(a=>{let b=function(a){return[`请在 ${a} 秒内执行 confirmExport() 以确认导出,`,`或执行 cancelExport() 以取消导出。`].join("")};if(void 0!==i&&i)return N=!0,a();let c=setInterval(()=>{r-=2,0<r&&null===N?console.log(b(r)):(clearInterval(c),console.log(g),window.cancelExport=null,window.confirmExport=null,a())},2000);setTimeout(()=>{console.log(g),console.log("\u5730\u56FE tiles \u4FE1\u606F\u5904\u7406\u5B8C\u6210"),console.log(g),console.log(b(r))},0),window.cancelExport=function(){return N=!1,"\u53D6\u6D88\u5BFC\u51FA"},window.confirmExport=function(){return N=!0,"\u786E\u8BA4\u5BFC\u51FA"}}),N)console.log("\u6B63\u5728\u7ED8\u5236\u56FE\u7247\uFF0C\u8BF7\u7A0D\u5019...");else return null===N?console.warn("\u5BFC\u51FA\u5DF2\u81EA\u52A8\u53D6\u6D88\u3002"):console.warn("\u5BFC\u51FA\u5DF2\u88AB\u53D6\u6D88\u3002"),!0;let O=document.createElement("canvas"),P=O.getContext("2d"),Q=-1*F,R=-1*H,S=[],T=[],U={};for(let a=H;a<=I;a++)S.push(a),T.unshift(a);S.forEach((a,b)=>{U[a+""]=T[b]}),O.width=L,O.height=M,P.fillStyle=l,P.fillRect(0,0,L,M);let V=window.open("","ExportResult","width=800, height=480");for(let a=0;a<B.length&&!("number"==typeof n&&a>n);a++){let b=B[a],d=_slicedToArray(b.tilePos,2),e=d[0],f=d[1];f=U[f+""];let g=(f+R)*K,h=yield c(b.filePath);h&&P.drawImage(h,(e+Q)*K,g)}let W=O.toDataURL("image/png"),X=b(W);if(O.remove(),!X){console.error("\u5BFC\u51FA\u5931\u8D25\u3002");try{V&&V.close()}catch(a){console.error("\u5173\u95ED\u65B0\u7A97\u53E3\u5931\u8D25\uFF1A"),console.error(a)}return!1}let Y=window.URL.createObjectURL(X);try{if(!V)throw new Error(["\u65E0\u6CD5\u6253\u5F00\u65B0\u7A97\u53E3\uFF0C","\u53EF\u80FD\u662F\u6CA1\u6709\u6743\u9650\uFF0C","\u8BF7\u624B\u52A8\u590D\u5236\u56FE\u7247\u5730\u5740","\uFF08\u9700\u8981\u5305\u542B\u201Cblob:\u201D\u90E8\u5206\uFF09\u3002"].join(""));V.document.write(`<img src="${Y}" />`),V.document.title="Dynmap \u56FE\u7247\u5BFC\u51FA\u7ED3\u679C",V.focus()}catch(a){console.warn("\u521D\u59CB\u5316\u65B0\u7A97\u53E3\u5931\u8D25\uFF1A"),console.warn(a)}return console.log(`导出完成,图片地址:${Y}`),!0})()}finally{console.groupEnd()}}),_exportDynmap.apply(this,arguments)}