XWWitPark/witpark_jzzs/xw_jzzs_web/public/lib/dom2img/dom-to-image.js

2 lines
9.0 KiB
JavaScript
Raw Normal View History

2024-09-12 00:10:00 +00:00
/* 2020-9-22 15:23:28 | 版权所有 军懋国兴 */
!function(e){"use strict";var g={escape:function(e){return e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")},parseExtension:n,mimeType:function(e){var t=n(e).toLowerCase();return function(){var e="application/font-woff",t="image/jpeg";return{woff:e,woff2:e,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:t,jpeg:t,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}()[t]||""},dataAsUrl:function(e,t){return"data:"+t+";base64,"+e},isDataUrl:function(e){return-1!==e.search(/^(data:)/)},canvasToBlob:function(t){return t.toBlob?new Promise(function(e){t.toBlob(e)}):function(i){return new Promise(function(e){for(var t=window.atob(i.toDataURL().split(",")[1]),n=t.length,r=new Uint8Array(n),o=0;o<n;o++)r[o]=t.charCodeAt(o);e(new Blob([r],{type:"image/png"}))})}(t)},resolveUrl:function(e,t){var n=document.implementation.createHTMLDocument(),r=n.createElement("base");n.head.appendChild(r);var o=n.createElement("a");return n.body.appendChild(o),r.href=t,o.href=e,o.href},getAndEncode:function(i){m.impl.options.cacheBust&&(i+=(/\?/.test(i)?"&":"?")+(new Date).getTime());i.startsWith("http")&&-1==i.indexOf(location.hostname)&&(m.proxy?i=m.proxy(i):m.preUrl&&(i=m.preUrl+i));return new Promise(function(n){var e,t,r=new XMLHttpRequest;function o(e){console.log(e),n("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXMzMwAov9iAAKCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==")}r.onreadystatechange=function(){if(4!==r.readyState)return;{var t;200!==r.status?e?n(e):o("无法获取资源: "+i+", 状态: "+r.status):((t=new FileReader).onloadend=function(){var e=t.result.split(/,/)[1];n(e)},t.readAsDataURL(r.response))}},r.ontimeout=function(){e?n(e):o("抓取资源时发生超时100000ms: "+i)},r.responseType="blob",r.timeout=1e5,r.open("GET",i,!0),r.send(),!m.impl.options.imagePlaceholder||(t=m.impl.options.imagePlaceholder.split(/,/))&&t[1]&&(e=t[1])})},uid:function(){var e=0;return function(){return"u"+("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)+e++}}(),delay:function(n){return function(t){return new Promise(function(e){setTimeout(function(){e(t)},n)})}},asArray:function(e){for(var t=[],n=e.length,r=0;r<n;r++)t.push(e[r]);return t},escapeXhtml:function(e){return e.replace(/#/g,"%23").replace(/\n/g,"%0A")},makeImage:function(r){return new Promise(function(e,t){var n=new Image;n.crossOrigin="*",n.onload=function(){e(n)},n.onerror=t,n.src=r})},width:function(e){var t=r(e,"border-left-width"),n=r(e,"border-right-width");return e.scrollWidth+t+n},height:function(e){var t=r(e,"border-top-width"),n=r(e,"border-bottom-width");return e.scrollHeight+t+n}};function n(e){var t=/\.([^\.\/]*?)$/g.exec(e);return t?t[1]:""}function r(e,t){var n=window.getComputedStyle(e).getPropertyValue(t);return parseFloat(n.replace("px",""))}var o,i={inlineAll:function(t,r,o){return u(t)?Promise.resolve(t).then(a).then(function(e){var n=Promise.resolve(t);return e.forEach(function(t){n=n.then(function(e){return c(e,t,r,o)})}),n}):Promise.resolve(t)},shouldProcess:u,impl:{readUrls:a,inline:c}};function u(e){return-1!==e.search(o)}function a(e){for(var t,n=[];null!==(t=o.exec(e));)n.push(t[1]);return n.filter(function(e){return!g.isDataUrl(e)})}function c(n,r,t,e){return Promise.resolve(r).then(function(e){return t?g.resolveUrl(e,t):e}).then(e||g.getAndEncode).then(function(e){return g.dataAsUrl(e,g.mimeType(r))}).then(function(e){return n.replace((t=r,new RegExp("(url\\(['\"]?)("+g.escape(t)+")(['\"]?\\))","g")),"$1"+e+"$3");var t})}var t={resolveAll:function(){return l(document).then(function(e){return Promise.all(e.map(function(e){return e.resolve()}))}).then(function(e){return e.join("\n")})},impl:{readAll:l}};function l(){return Promise.resolve(g.asArray(document.styleSheets)).then(function(e){var n=[];return e.forEach(function(t){try{g.asArray(t.cssRules||[]).forEach(n.push.bind(n))}catch(e){console.log("Error while reading CSS rules from "+t.href,e.toString())}}),n}).then(function(e){return e.filter(function(e){return e.type===CSSRule.FONT_FACE_RULE}).filter(funct