@megaputer/html-screen-capture-js
Version:
HTML Screen Capture JS
3 lines (2 loc) • 8.24 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).htmlScreenCaptureJs={})}(this,(function(e){"use strict";var t,n;e.OutputType=void 0,(t=e.OutputType||(e.OutputType={})).OBJECT="object",t.STRING="string",e.LogLevel=void 0,(n=e.LogLevel||(e.LogLevel={})).DEBUG="debug",n.INFO="info",n.WARN="warn",n.ERROR="error",n.FATAL="fatal",n.OFF="off";var o=e.LogLevel.WARN,r=function(t,n){var r=[e.LogLevel.DEBUG,e.LogLevel.INFO,e.LogLevel.WARN,e.LogLevel.ERROR,e.LogLevel.FATAL,e.LogLevel.OFF];r.indexOf(n)>=r.indexOf(o)&&console.log("|html-screen-capture-js|"+n+"| "+t)},a=function(){return o===e.LogLevel.DEBUG},l=function(t){void 0===t&&(t=e.LogLevel.WARN),o=t},s=function(t){r(t,e.LogLevel.DEBUG)},i=function(t){r(t,e.LogLevel.INFO)},c=function(t){r(t,e.LogLevel.WARN)},u=function(t){r(t,e.LogLevel.ERROR)},d=function(e){var t,n,o,r,a,l,s,i="",c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",u=0;for(e=function(e){for(var t=e.replace(/\r\n/g,"\n"),n="",o=0;o<t.length;o++){var r=t.charCodeAt(o);r<128?n+=String.fromCharCode(r):r>127&&r<2048?(n+=String.fromCharCode(r>>6|192),n+=String.fromCharCode(63&r|128)):(n+=String.fromCharCode(r>>12|224),n+=String.fromCharCode(r>>6&63|128),n+=String.fromCharCode(63&r|128))}return n}(e);u<e.length;)r=(t=e.charCodeAt(u++))>>2,a=(3&t)<<4|(n=e.charCodeAt(u++))>>4,l=(15&n)<<2|(o=e.charCodeAt(u++))>>6,s=63&o,isNaN(n)?l=s=64:isNaN(o)&&(s=64),i=i+c.charAt(r)+c.charAt(a)+c.charAt(l)+c.charAt(s);return i},g=function(e){var t=e.className,n="[object SVGAnimatedString]"===t.toString()?t.baseVal:t;return"string"==typeof n?n:""},f=function(e,t,n){(function(e){var t=g(e);return(t?t.split(" "):[]).reduce((function(e,t){return t&&e.push(t),e}),[])})(n).length>0&&(null!=e.options.attrKeyForSavingElementOrigClass&&n.setAttribute(e.options.attrKeyForSavingElementOrigClass,g(n)),n.removeAttribute("class")),n.getAttribute("style")&&(null!=e.options.attrKeyForSavingElementOrigStyle&&n.setAttribute(e.options.attrKeyForSavingElementOrigStyle,n.getAttribute("style")||""),n.removeAttribute("style"));var o=function(){for(var n="".concat(e.options.prefixForNewGeneratedClasses,"0 "),o=getComputedStyle(t),r=0;r<o.length;r++){var a=o.item(r),l=o.getPropertyValue(a);if(l!==e.baseClass.get(a)){var s=a+":"+l,i=e.classMap.get(s)||"";i||(e.classCount++,i="".concat(e.options.prefixForNewGeneratedClasses).concat(e.classCount),e.classMap.set(s,i)),n+=i+" "}}return n}();o+=function(){for(var n="",o=0,r=["::before","::after"];o<r.length;o++){var a=r[o],l=getComputedStyle(t,a);if(!["none","normal"].includes(l.content)){e.pseudoClassCount++;var s="".concat(e.options.prefixForNewGeneratedPseudoClasses).concat(e.pseudoClassCount);n+=s+" ",e.pseudoStyles.push(".".concat(s).concat(a,"{"));for(var i=0;i<l.length;i++){var c=l.item(i),u=l.getPropertyValue(c);e.pseudoStyles.push("".concat(c,":").concat(u,";"))}e.pseudoStyles.push("}")}}return n}(),n.setAttribute("class",o.trim())},v=function(e,t){var n="";try{e.canvas||(e.canvas=e.doc.createElement("canvas")),e.canvas.width=t instanceof HTMLImageElement?t.naturalWidth:t.width,e.canvas.height=t instanceof HTMLImageElement?t.naturalHeight:t.height;var o=e.canvas.getContext("2d");o&&o.drawImage(t,0,0),n=e.canvas.toDataURL(e.options.imageFormatForDataUrl,e.options.imageQualityForDataUrl)}catch(e){c("getCanvasDataUrl() - ".concat(e.message))}return n},p=function(e,t){var n,o,r;if(e.ignoredElms.includes(t))return!0;var a=Object.entries(e.options.computedStyleKeyValuePairsOfIgnoredElements);if(e.isBody&&a.length>0)for(var l=getComputedStyle(t),s=0,i=a;s<i.length;s++){var c=i[s],u=c[0],d=c[1];if(l.getPropertyValue(u)===d)return!0}return null!==(r=null===(o=(n=e.options).ignoreElements)||void 0===o?void 0:o.call(n,t))&&void 0!==r&&r},m=function(e,t,n,o){if(e.isBody&&(t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement||t instanceof HTMLSelectElement?function(e,t){t.setAttribute("value",e.value);var n=e.getAttribute("type");if(e instanceof HTMLInputElement&&("checkbox"===n||"radio"===n))e.checked?t.setAttribute("checked","checked"):t.removeAttribute("checked");else if(e instanceof HTMLTextAreaElement&&e.value)t.innerText=e.value;else if(e instanceof HTMLSelectElement&&e.value&&e.children)for(var o=e.children.length-1;o>=0;o--)e.children[o].getAttribute("value")===e.value?t.children[o].setAttribute("selected",""):t.children[o].removeAttribute("selected")}(t,n):t instanceof HTMLImageElement?function(e,t,n){if(e.shouldHandleImgDataUrl){var o=v(e,t);o&&n.setAttribute("src",o)}}(e,t,n):t instanceof HTMLCanvasElement&&function(e,t,n){var o=v(e,t);o&&n.setAttribute("src",o),n.outerHTML=n.outerHTML.replace(/<canvas/g,"<img")}(e,t,n)),o&&(f(e,t,n),e.options.tagsOfSkippedElementsForChildTreeCssHandling.includes(t.tagName.toLowerCase())&&(o=!1)),t.children)for(var r=t.children.length-1;r>=0;r--)p(e,t.children[r])?n.removeChild(n.children[r]):m(e,t.children[r],n.children[r],o)},h=function(e){e.ignoredElms=function(e){if(!e.options.cssSelectorsOfIgnoredElements||!e.options.cssSelectorsOfIgnoredElements.length)return[];var t=[];return e.options.cssSelectorsOfIgnoredElements.forEach((function(n){e.doc.documentElement.querySelectorAll(n).forEach((function(e){t.push(e)}))})),t}(e);var t=function(){var t=e.doc.documentElement.cloneNode(!1);return f(e,e.doc.documentElement,t),t}();return function(t){var n=e.doc.head.cloneNode(!0);e.isBody=!1,m(e,e.doc.head,n,!1),t.appendChild(n)}(t),function(t){!function(e){var t=e.doc.createElement("div");t.style.display="none",e.doc.body.appendChild(t);for(var n=getComputedStyle(t),o=0;o<n.length;o++){var r=n.item(o),a=n.getPropertyValue(r);e.baseClass.set(r,a)}e.baseClass.set("display","block"),t.parentNode&&t.parentNode.removeChild(t)}(e);var n=e.doc.body.cloneNode(!0);e.isBody=!0,m(e,e.doc.body,n,!0),t.appendChild(n)}(t),function(t){var n=e.doc.createElement("style"),o=".".concat(e.options.prefixForNewGeneratedClasses,"0{");e.baseClass.forEach((function(e,t){o+="".concat(t,":").concat(e,";")})),o+="}",e.classMap.forEach((function(e,t){o+=".".concat(e,"{").concat(t,"}")})),o+=e.pseudoStyles.join(""),o+=e.options.rulesToAddToDocStyle.join(""),n.appendChild(e.doc.createTextNode(o)),t.children[0].appendChild(n)}(t),t},y=function(t,n){var o,r=null;if(n===e.OutputType.OBJECT)r=t;else{var l=(t?t.outerHTML:"")||"";l&&(n===e.OutputType.STRING?r=l:"uri"===n?r=((o=l)?encodeURI(o):"")||"":"base64"===n&&(r=d(l))),r=r||""}return a()&&s("output: ".concat(r instanceof HTMLElement?r.outerHTML:r)),r};e.capture=function(t,n,o){return function(t,n,o){var r={rulesToAddToDocStyle:(null==o?void 0:o.rulesToAddToDocStyle)||[],cssSelectorsOfIgnoredElements:(null==o?void 0:o.cssSelectorsOfIgnoredElements)||["script","link","style"],computedStyleKeyValuePairsOfIgnoredElements:{display:"none"},tagsOfSkippedElementsForChildTreeCssHandling:(null==o?void 0:o.tagsOfSkippedElementsForChildTreeCssHandling)||["svg"],attrKeyForSavingElementOrigClass:null==(null==o?void 0:o.attrKeyForSavingElementOrigClass)?null:o.attrKeyForSavingElementOrigClass||"_class",attrKeyForSavingElementOrigStyle:null==(null==o?void 0:o.attrKeyForSavingElementOrigStyle)?null:o.attrKeyForSavingElementOrigStyle||"_style",prefixForNewGeneratedClasses:(null==o?void 0:o.prefixForNewGeneratedClasses)||"c",prefixForNewGeneratedPseudoClasses:(null==o?void 0:o.prefixForNewGeneratedPseudoClasses)||"p",imageFormatForDataUrl:(null==o?void 0:o.imageFormatForDataUrl)||"image/png",imageQualityForDataUrl:(null==o?void 0:o.imageQualityForDataUrl)||.92,logLevel:(null==o?void 0:o.logLevel)||e.LogLevel.WARN,ignoreElements:null==o?void 0:o.ignoreElements},a={isBody:!1,baseClass:new Map,classMap:new Map,classCount:0,pseudoStyles:[],pseudoClassCount:0,shouldHandleImgDataUrl:!0,canvas:null,doc:n||document,ignoredElms:[],options:r},s=(new Date).getTime(),c=null;try{l(a.options.logLevel);var d=h(a);c=y(d,t||e.OutputType.OBJECT)}catch(e){u("goCapture() - error - ".concat(e.message))}finally{i("goCapture() - end - ".concat((new Date).getTime()-s,"ms"))}return c}(t,n,o)},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=html-screen-capture.min.js.map