-
Notifications
You must be signed in to change notification settings - Fork 0
/
dom-to-image.min.js
2 lines (2 loc) · 9.38 KB
/
dom-to-image.min.js
1
2
/* https://github.com/zrajm/dom-to-image/commit/86c6845 */
(function(r){var b=j();var f=s();var l=d();var k=o();var t={imagePlaceholder:undefined,cacheBust:false};var h={toSvg:v,toPng:p,toJpeg:u,toBlob:a,toPixelData:m,impl:{fontFaces:l,images:k,util:b,inliner:f,options:{}}};if(typeof module!=="undefined"){module.exports=h}else{r.domtoimage=h}function v(x,w){w=w||{};c(w);return Promise.resolve(x).then(function(z){return q(z,w.filter,true)}).then(n).then(e).then(y).then(function(z){return g(z,w.width||b.width(x),w.height||b.height(x))});function y(z){if(w.bgcolor){z.style.backgroundColor=w.bgcolor}if(w.width){z.style.width=w.width+"px"}if(w.height){z.style.height=w.height+"px"}if(w.style){Object.keys(w.style).forEach(function(A){z.style[A]=w.style[A]})}return z}}function m(x,w){return i(x,w||{}).then(function(y){return y.getContext("2d").getImageData(0,0,b.width(x),b.height(x)).data})}function p(x,w){return i(x,w||{}).then(function(y){return y.toDataURL()})}function u(x,w){w=w||{};return i(x,w).then(function(y){return y.toDataURL("image/jpeg",w.quality||1)})}function a(x,w){return i(x,w||{}).then(b.canvasToBlob)}function c(w){if(typeof(w.imagePlaceholder)==="undefined"){h.impl.options.imagePlaceholder=t.imagePlaceholder}else{h.impl.options.imagePlaceholder=w.imagePlaceholder}if(typeof(w.cacheBust)==="undefined"){h.impl.options.cacheBust=t.cacheBust}else{h.impl.options.cacheBust=w.cacheBust}}function i(y,w){return v(y,w).then(b.makeImage).then(b.delay(100)).then(function(A){var z=x(y);z.getContext("2d").drawImage(A,0,0);return z});function x(B){var A=document.createElement("canvas");A.width=w.width||b.width(B);A.height=w.height||b.height(B);if(w.bgcolor){var z=A.getContext("2d");z.fillStyle=w.bgcolor;z.fillRect(0,0,A.width,A.height)}return A}}function q(z,x,w){if(!w&&x&&!x(z)){return Promise.resolve()}return Promise.resolve(z).then(y).then(function(C){return B(z,C,x)}).then(function(C){return A(z,C)});function y(C){if(C instanceof HTMLCanvasElement){return b.makeImage(C.toDataURL())}return C.cloneNode(false)}function B(D,G,E){var C=D.childNodes;if(C.length===0){return Promise.resolve(G)}return F(G,b.asArray(C),E).then(function(){return G});function F(K,I,J){var H=Promise.resolve();I.forEach(function(L){H=H.then(function(){return q(L,J)}).then(function(M){if(M){K.appendChild(M)}})});return H}}function A(F,H){if(!(H instanceof Element)){return H}return Promise.resolve().then(C).then(G).then(E).then(D).then(function(){return H});function C(){I(window.getComputedStyle(F),H.style);function I(K,L){if(K.cssText){L.cssText=K.cssText}else{J(K,L)}function J(M,N){b.asArray(M).forEach(function(O){N.setProperty(O,M.getPropertyValue(O),M.getPropertyPriority(O))})}}}function G(){[":before",":after"].forEach(function(J){I(J)});function I(L){var N=window.getComputedStyle(F,L);var O=N.getPropertyValue("content");if(O===""||O==="none"){return}var M=b.uid();H.className=H.className+" "+M;var K=document.createElement("style");K.appendChild(J(M,L,N));H.appendChild(K);function J(U,R,T){var P="."+U+":"+R;var S=T.cssText?V(T):Q(T);return document.createTextNode(P+"{"+S+"}");function V(W){var X=W.getPropertyValue("content");return W.cssText+" content: "+X+";"}function Q(W){return b.asArray(W).map(X).join("; ")+";";function X(Y){return Y+": "+W.getPropertyValue(Y)+(W.getPropertyPriority(Y)?" !important":"")}}}}}function E(){if(F instanceof HTMLTextAreaElement){H.innerHTML=F.value}if(F instanceof HTMLInputElement){H.setAttribute("value",F.value)}}function D(){if(!(H instanceof SVGElement)){return}H.setAttribute("xmlns","http://www.w3.org/2000/svg");if(!(H instanceof SVGRectElement)){return}["width","height"].forEach(function(I){var J=H.getAttribute(I);if(!J){return}H.style.setProperty(I,J)})}}}function n(w){return l.resolveAll().then(function(x){var y=document.createElement("style");w.appendChild(y);y.appendChild(document.createTextNode(x));return w})}function e(w){return k.inlineAll(w).then(function(){return w})}function g(y,x,w){return Promise.resolve(y).then(function(z){z.setAttribute("xmlns","http://www.w3.org/1999/xhtml");return new XMLSerializer().serializeToString(z)}).then(function(z){return'<foreignObject x="0" y="0" width="100%" height="100%">'+z+"</foreignObject>"}).then(function(z){return'<svg xmlns="http://www.w3.org/2000/svg" width="'+x+'" height="'+w+'">'+z+"</svg>"}).then(function(z){return"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(z)})}function j(){return{escape:L,parseExtension:y,mimeType:x,dataAsUrl:M,isDataUrl:z,canvasToBlob:J,resolveUrl:I,getAndEncode:E,uid:D(),delay:C,asArray:A,makeImage:H,width:w,height:K};function F(){var O="application/font-woff";var N="image/jpeg";return{woff:O,woff2:O,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:N,jpeg:N,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}function y(O){var N=/\.([^\.\/]*?)$/g.exec(O);if(N){return N[1]}else{return""}}function x(N){var O=y(N).toLowerCase();return F()[O]||""}function z(N){return N.search(/^(data:)/)!==-1}function B(N){return new Promise(function(S){var O=window.atob(N.toDataURL().split(",")[1]);var R=O.length;var P=new Uint8Array(R);for(var Q=0;Q<R;Q++){P[Q]=O.charCodeAt(Q)}S(new Blob([P],{type:"image/png"}))})}function J(N){if(N.toBlob){return new Promise(function(O){N.toBlob(O)})}return B(N)}function I(O,P){var R=document.implementation.createHTMLDocument();var Q=R.createElement("base");R.head.appendChild(Q);var N=R.createElement("a");R.body.appendChild(N);Q.href=P;N.href=O;return N.href}function D(){var N=0;return function(){return"u"+O()+N++;function O(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}}}function H(N){return new Promise(function(P,O){var Q=new Image();Q.onload=function(){P(Q)};Q.onerror=O;Q.src=N})}function E(O){var N=30000;if(h.impl.options.cacheBust){O+=((/\?/).test(O)?"&":"?")+(new Date()).getTime()}return new Promise(function(U){var S=new XMLHttpRequest();S.onreadystatechange=Q;S.ontimeout=T;S.responseType="blob";S.timeout=N;S.open("GET",O,true);S.send();var V;if(h.impl.options.imagePlaceholder){var R=h.impl.options.imagePlaceholder.split(/,/);if(R&&R[1]){V=R[1]}}function Q(){if(S.readyState!==4){return}if(S.status!==200){if(V){U(V)}else{P("cannot fetch resource: "+O+", status: "+S.status)}return}var W=new FileReader();W.onloadend=function(){var X=W.result.split(/,/)[1];U(X)};W.readAsDataURL(S.response)}function T(){if(V){U(V)}else{P("timeout of "+N+"ms occured while fetching resource: "+O)}}function P(W){console.error(W);U("")}})}function M(O,N){return"data:"+N+";base64,"+O}function L(N){return N.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")}function C(N){return function(O){return new Promise(function(P){setTimeout(function(){P(O)},N)})}}function A(N){var Q=[];var P=N.length;for(var O=0;O<P;O++){Q.push(N[O])}return Q}function w(P){var N=G(P,"border-left-width");var O=G(P,"border-right-width");return P.scrollWidth+N+O}function K(N){var O=G(N,"border-top-width");var P=G(N,"border-bottom-width");return N.scrollHeight+O+P}function G(N,P){var O=window.getComputedStyle(N).getPropertyValue(P);return parseFloat(O.replace("px",""))}}function s(){var x=/url\(['"]?([^'"]+?)['"]?\)/g;return{inlineAll:y,shouldProcess:A,impl:{readUrls:w,inline:z}};function A(B){return B.search(x)!==-1}function w(D){var B=[];var C;while((C=x.exec(D))!==null){B.push(C[1])}return B.filter(function(E){return !b.isDataUrl(E)})}function z(D,C,F,B){return Promise.resolve(C).then(function(G){return F?b.resolveUrl(G,F):G}).then(B||b.getAndEncode).then(function(G){return b.dataAsUrl(G,b.mimeType(C))}).then(function(G){return D.replace(E(C),"$1"+G+"$3")});function E(G){return new RegExp("(url\\(['\"]?)("+b.escape(G)+")(['\"]?\\))","g")}}function y(C,D,B){if(E()){return Promise.resolve(C)}return Promise.resolve(C).then(w).then(function(G){var F=Promise.resolve(C);G.forEach(function(H){F=F.then(function(I){return z(I,H,D,B)})});return F});function E(){return !A(C)}}}function d(){return{resolveAll:x,impl:{readAll:w}};function x(){return w(document).then(function(y){return Promise.all(y.map(function(z){return z.resolve()}))}).then(function(y){return y.join("\n")})}function w(){return Promise.resolve(b.asArray(document.styleSheets)).then(A).then(y).then(function(B){return B.map(z)});function y(B){return B.filter(function(C){return C.type===CSSRule.FONT_FACE_RULE}).filter(function(C){return f.shouldProcess(C.style.getPropertyValue("src"))})}function A(C){var B=[];C.forEach(function(D){try{b.asArray(D.cssRules||[]).forEach(B.push.bind(B))}catch(E){console.log("Error while reading CSS rules from "+D.href,E.toString())}});return B}function z(B){return{resolve:function C(){var D=(B.parentStyleSheet||{}).href;return f.inlineAll(B.cssText,D)},src:function(){return B.style.getPropertyValue("src")}}}}}function o(){return{inlineAll:w,impl:{newImage:x}};function x(y){return{inline:z};function z(A){if(b.isDataUrl(y.src)){return Promise.resolve()}return Promise.resolve(y.src).then(A||b.getAndEncode).then(function(B){return b.dataAsUrl(B,b.mimeType(y.src))}).then(function(B){return new Promise(function(D,C){y.onload=D;y.onerror=C;y.src=B})})}}function w(z){if(!(z instanceof Element)){return Promise.resolve(z)}return y(z).then(function(){if(z instanceof HTMLImageElement){return x(z).inline()}else{return Promise.all(b.asArray(z.childNodes).map(function(A){return w(A)}))}});function y(B){var A=B.style.getPropertyValue("background");if(!A){return Promise.resolve(B)}return f.inlineAll(A).then(function(C){B.style.setProperty("background",C,B.style.getPropertyPriority("background"))}).then(function(){return B})}}}})(this);