{"version":3,"sources":["webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/vue-html2pdf/dist/vue-html2pdf.esm.js","webpack:///./node_modules/vue-html2pdf/node_modules/html2pdf.js/dist/html2pdf.js"],"names":["module","exports","Error","__webpack_amd_options__","script","props","showLayout","type","Boolean","default","floatLayout","enableDownload","previewModal","paginateElementsByHeight","Number","filename","String","Date","getTime","pdfQuality","pdfFormat","pdfOrientation","pdfContentWidth","htmlToPdfOptions","Object","manualPagination","data","hasAlreadyParsed","progress","pdfWindow","pdfFile","watch","val","this","$emit","resetPagination","$props","handler","validateProps","deep","immediate","methods","undefined","console","error","parentElement","$refs","pdfContent","firstChild","pageBreaks","getElementsByClassName","pageBreakLength","length","x","parentNode","removeChild","generatePdf","paginationOfElements","downloadPdf","ArrOfContentChildren","Array","from","children","childrenHeight","childElement","elementFirstClass","classList","isPageBreakClass","elementHeight","clientHeight","elementComputedStyle","currentStyle","window","getComputedStyle","elementMarginTopBottom","parseInt","marginTop","marginBottom","elementHeightWithMargin","section","document","createElement","add","insertBefore","async","options","setOptions","html2pdf","html2PdfSetup","set","pdfBlobUrl","output","save","res","fetch","blobFile","blob","margin","image","quality","enableLinks","html2canvas","scale","useCORS","jsPDF","unit","format","orientation","closePreview","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","HEAD","isOldIE","navigator","test","userAgent","toLowerCase","id","addStyle","styles","css","group","media","ids","Set","has","code","source","map","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","setAttribute","head","getElementsByTagName","appendChild","push","styleSheet","cssText","filter","join","index","size","textNode","createTextNode","nodes","childNodes","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","staticClass","class","ref","_t","_v","attrs","on","$event","target","currentTarget","_e","__vue_staticRenderFns__","__vue_inject_styles__","inject","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","install","Vue","installed","component","plugin","GlobalVue","global","use","factory","hasOwnProperty","_typeof","Symbol","iterator","obj","constructor","prototype","_extends","assign","i","arguments","key","objType","Function","nodeType","tagName","opt","el","className","innerHTML","scripts","cloneNode","node","javascriptEnabled","clone","nodeValue","child","nextSibling","nodeName","width","height","getContext","drawImage","value","addEventListener","scrollTop","scrollLeft","unitConvert","k","newObj","toPx","Math","floor","commonjsGlobal","self","commonjsRequire","createCommonjsModule","fn","es6Promise","objectOrFunction","isFunction","_isArray","isArray","toString","len","vertxNext","customSchedulerFn","asap","callback","arg","queue","flush","scheduleFlush","setScheduler","scheduleFn","setAsap","asapFn","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useNextTick","nextTick","useVertxTimer","useSetTimeout","useMutationObserver","iterations","observer","observe","characterData","useMessageChannel","channel","port1","onmessage","port2","postMessage","globalSetTimeout","setTimeout","attemptVertx","vertx","require","runOnLoop","runOnContext","e","then","onFulfillment","onRejection","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","object","Constructor","promise","resolve","random","substring","PENDING","FULFILLED","REJECTED","TRY_CATCH_ERROR","selfFulfillment","TypeError","cannotReturnOwn","getThen","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","reject","_label","handleOwnThenable","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","tryCatch","hasCallback","succeeded","failed","initializePromise","resolver","nextId","validationError","Enumerator","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","c","resolve$$1","_then","_settledAt","Promise$1","_willSettleAt","state","enumerator","all","entries","race","_","reject$1","needsResolver","needsNew","Promise","catch","finally","polyfill","local","P","promiseToString","cast","_setScheduler","_setAsap","_asap","Worker","root","convert","parse","setProgress","create","inherit","__proto__","prop","src","container","overlay","canvas","img","pdf","pageSize","n","stack","getType","to","toContainer","toCanvas","toImg","toPdf","prereqs","setPageSize","thenList","overlayCSS","position","overflow","zIndex","left","right","bottom","top","backgroundColor","containerCSS","inner","opacity","body","contains","onrendered","onRendered","imgData","toDataURL","pxFullHeight","pxPageHeight","ratio","nPages","ceil","pageHeight","pageCanvas","pageCtx","page","w","fillStyle","fillRect","addPage","addImage","outputImg","outputPdf","location","href","fns","keys","setMargin","bind","get","cbk","getPageSize","px","updateProgress","onFulfilled","onRejected","thenCore","thenBase","isNative","indexOf","name","selfPromise","returnVal","thenExternal","forEach","catchExternal","msg","using","saveAs","export","run","format_as_string","pageFormats","pageWidth","err","tmp","info","orig","pagebreak","mode","before","after","avoid","modeSrc","avoidAll","legacy","select","slice","querySelectorAll","legacyEls","els","rules","breakOpt","avoidOpt","breakBefore","pageBreakBefore","breakAfter","pageBreakAfter","breakInside","pageBreakInside","clientRect","getBoundingClientRect","startPage","endPage","abs","pad","display","linkInfo","orig$1","links","containerRect","link","clientRects","getClientRects","l","setPage","url","internal","getNumberOfPages","worker"],"mappings":"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","file":"js/Accounting~Finance~HTMLTemplate~Inventory~Purchasing~Reporting~Transaction~fdc6512a.cc7f2906.js","sourcesContent":["module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","import html2pdf from 'html2pdf.js';\n\n//\n\r\nvar script = {\r\n\tprops: {\r\n\t\tshowLayout: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\r\n\t\tfloatLayout: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true\r\n\t\t},\r\n\r\n\t\tenableDownload: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true\r\n\t\t},\r\n\r\n\t\tpreviewModal: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t},\r\n\r\n\t\tpaginateElementsByHeight: {\r\n\t\t\ttype: Number\r\n\t\t},\r\n\r\n\t\tfilename: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: (\"\" + (new Date().getTime()))\r\n\t\t},\r\n\r\n\t\tpdfQuality: {\r\n\t\t\ttype: Number,\r\n\t\t\tdefault: 2,\r\n\t\t},\r\n\r\n\t\tpdfFormat: {\r\n\t\t\tdefault: 'a4',\r\n\t\t},\r\n\r\n\t\tpdfOrientation: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: 'portrait'\r\n\t\t},\r\n\r\n\t\tpdfContentWidth: {\r\n\t\t\tdefault: '800px'\r\n\t\t},\r\n\r\n\t\thtmlToPdfOptions: {\r\n\t\t\ttype: Object\r\n\t\t},\r\n\r\n\t\tmanualPagination: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false\r\n\t\t}\r\n\t},\r\n\r\n\tdata: function data () {\r\n\t\treturn {\r\n\t\t\thasAlreadyParsed: false,\r\n\t\t\tprogress: 0,\r\n\t\t\tpdfWindow: null,\r\n\t\t\tpdfFile: null\r\n\t\t}\r\n\t},\r\n\r\n\twatch: {\r\n\t\tprogress: function progress (val) {\r\n\t\t\tthis.$emit('progress', val);\r\n\t\t},\r\n\r\n\t\tpaginateElementsByHeight: function paginateElementsByHeight () {\r\n\t\t\tthis.resetPagination();\r\n\t\t},\r\n\r\n\t\t$props: {\r\n\t\t\thandler: function handler () {\r\n\t\t\t\tthis.validateProps();\r\n\t\t\t},\r\n\r\n\t\t\tdeep: true,\r\n\t\t\timmediate: true\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\t\tvalidateProps: function validateProps () {\r\n\t\t\t// If manual-pagination is false, paginate-elements-by-height props is required\r\n\t\t\tif (!this.manualPagination) {\r\n\t\t\t\tif (this.paginateElementsByHeight === undefined) {\r\n\t\t\t\t\tconsole.error('Error: paginate-elements-by-height is required if manual-pagination is false');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tresetPagination: function resetPagination () {\r\n\t\t\tvar parentElement = this.$refs.pdfContent.firstChild;\r\n\t\t\tvar pageBreaks = parentElement.getElementsByClassName('html2pdf__page-break');\r\n\t\t\tvar pageBreakLength = pageBreaks.length - 1;\r\n\t\t\t\r\n\t\t\tif (pageBreakLength === -1) { return }\r\n\r\n\t\t\tthis.hasAlreadyParsed = false;\r\n\r\n\t\t\t// Remove All Page Break (For Pagination)\r\n\t\t\tfor (var x = pageBreakLength; x >= 0; x--) {\r\n\t\t\t\tpageBreaks[x].parentNode.removeChild(pageBreaks[x]);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgeneratePdf: function generatePdf () {\r\n\t\t\tthis.$emit('startPagination');\r\n\t\t\tthis.progress = 0;\r\n\t\t\tthis.paginationOfElements();\r\n\t\t},\r\n\r\n\t\tpaginationOfElements: function paginationOfElements () {\r\n\t\t\tthis.progress = 25;\r\n\r\n\t\t\t/*\r\n\t\t\t\tWhen this props is true, \r\n\t\t\t\tthe props paginate-elements-by-height will not be used.\r\n\t\t\t\tInstead the pagination process will rely on the elements with a class \"html2pdf__page-break\"\r\n\t\t\t\tto know where to page break, which is automatically done by html2pdf.js\r\n\t\t\t*/\r\n\t\t\tif (this.manualPagination) {\r\n\t\t\t\tthis.progress = 70;\r\n\t\t\t\tthis.$emit('hasPaginated');\r\n\t\t\t\tthis.downloadPdf();\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.hasAlreadyParsed) {\r\n\t\t\t\tvar parentElement = this.$refs.pdfContent.firstChild;\r\n\t\t\t\tvar ArrOfContentChildren = Array.from(parentElement.children);\r\n\t\t\t\tvar childrenHeight = 0;\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t\tLoop through Elements and add there height with childrenHeight variable.\r\n\t\t\t\t\tOnce the childrenHeight is >= this.paginateElementsByHeight, create a div with\r\n\t\t\t\t\ta class named 'html2pdf__page-break' and insert the element before the element\r\n\t\t\t\t\tthat will be in the next page\r\n\t\t\t\t*/\r\n\t\t\t\tfor (var childElement of ArrOfContentChildren) {\r\n\t\t\t\t\t// Get The First Class of the element\r\n\t\t\t\t\tvar elementFirstClass = childElement.classList[0];\r\n\t\t\t\t\tvar isPageBreakClass = elementFirstClass === 'html2pdf__page-break';\r\n\t\t\t\t\tif (isPageBreakClass) {\r\n\t\t\t\t\t\tchildrenHeight = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Get Element Height\r\n\t\t\t\t\t\tvar elementHeight = childElement.clientHeight;\r\n\r\n\t\t\t\t\t\t// Get Computed Margin Top and Bottom\r\n\t\t\t\t\t\tvar elementComputedStyle = childElement.currentStyle || window.getComputedStyle(childElement);\r\n\t\t\t\t\t\tvar elementMarginTopBottom = parseInt(elementComputedStyle.marginTop) + parseInt(elementComputedStyle.marginBottom);\r\n\r\n\t\t\t\t\t\t// Add Both Element Height with the Elements Margin Top and Bottom\r\n\t\t\t\t\t\tvar elementHeightWithMargin = elementHeight + elementMarginTopBottom;\r\n\r\n\t\t\t\t\t\tif ((childrenHeight + elementHeight) < this.paginateElementsByHeight) {\r\n\t\t\t\t\t\t\tchildrenHeight += elementHeightWithMargin;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar section = document.createElement('div');\r\n\t\t\t\t\t\t\tsection.classList.add('html2pdf__page-break');\r\n\t\t\t\t\t\t\tparentElement.insertBefore(section, childElement);\r\n\r\n\t\t\t\t\t\t\t// Reset Variables made the upper condition false\r\n\t\t\t\t\t\t\tchildrenHeight = elementHeightWithMargin;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.progress = 70;\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t\tSet to true so that if would generate again we wouldn't need\r\n\t\t\t\t\tto parse the HTML to paginate the elements\r\n\t\t\t\t*/\r\n\t\t\t\tthis.hasAlreadyParsed = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.progress = 70;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$emit('hasPaginated');\r\n\t\t\tthis.downloadPdf();\r\n\t\t},\r\n\r\n\t\tdownloadPdf: async function downloadPdf () {\r\n\t\t\t// Set Element and Html2pdf.js Options\r\n\t\t\tvar pdfContent = this.$refs.pdfContent;\r\n\t\t\tvar options = this.setOptions();\r\n\r\n\t\t\tthis.$emit('beforeDownload', { html2pdf: html2pdf, options: options, pdfContent: pdfContent });\r\n\r\n\t\t\tvar html2PdfSetup = html2pdf().set(options).from(pdfContent);\r\n\t\t\tvar pdfBlobUrl = null;\r\n\r\n\t\t\tif (this.previewModal) {\r\n\t\t\t\tthis.pdfFile = await html2PdfSetup.output('bloburl');\r\n\t\t\t\tpdfBlobUrl = this.pdfFile;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.enableDownload) {\r\n\t\t\t\tpdfBlobUrl = await html2PdfSetup.save().output('bloburl');\r\n\t\t\t}\r\n\r\n\t\t\tif (pdfBlobUrl) {\r\n\t\t\t\tvar res = await fetch(pdfBlobUrl);\r\n\t\t\t\tvar blobFile = await res.blob();\r\n\t\t\t\tthis.$emit('hasDownloaded', blobFile);\r\n\t\t\t}\r\n\r\n\t\t\tthis.progress = 100;\r\n\t\t},\r\n\r\n\t\tsetOptions: function setOptions () {\r\n\t\t\tif (this.htmlToPdfOptions !== undefined && this.htmlToPdfOptions !== null) {\r\n\t\t\t\treturn this.htmlToPdfOptions\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tmargin: 0,\r\n\r\n\t\t\t\tfilename: ((this.filename) + \".pdf\"),\r\n\r\n\t\t\t\timage: {\r\n\t\t\t\t\ttype: 'jpeg', \r\n\t\t\t\t\tquality: 0.98\r\n\t\t\t\t},\r\n\r\n\t\t\t\tenableLinks: false,\r\n\r\n\t\t\t\thtml2canvas: {\r\n\t\t\t\t\tscale: this.pdfQuality,\r\n\t\t\t\t\tuseCORS: true\r\n\t\t\t\t},\r\n\r\n\t\t\t\tjsPDF: {\r\n\t\t\t\t\tunit: 'in',\r\n\t\t\t\t\tformat: this.pdfFormat,\r\n\t\t\t\t\torientation: this.pdfOrientation\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclosePreview: function closePreview () {\r\n\t\t\tthis.pdfFile = null;\r\n\t\t}\r\n\t}\r\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nvar isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return function (id, style) { return addStyle(id, style); };\r\n}\r\nvar HEAD;\r\nvar styles = {};\r\nfunction addStyle(id, css) {\r\n var group = isOldIE ? css.media || 'default' : id;\r\n var style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n var code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n { style.element.setAttribute('media', css.media); }\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n var index = style.ids.size - 1;\r\n var textNode = document.createTextNode(code);\r\n var nodes = style.element.childNodes;\r\n if (nodes[index])\r\n { style.element.removeChild(nodes[index]); }\r\n if (nodes.length)\r\n { style.element.insertBefore(textNode, nodes[index]); }\r\n else\r\n { style.element.appendChild(textNode); }\r\n }\r\n }\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-html2pdf\"},[_c('section',{staticClass:\"layout-container\",class:{\n\t\t\t\t'show-layout' : _vm.showLayout,\n\t\t\t\t'unset-all' : !_vm.floatLayout\n\t\t\t}},[_c('section',{ref:\"pdfContent\",staticClass:\"content-wrapper\",style:((\"width: \" + _vm.pdfContentWidth + \";\"))},[_vm._t(\"pdf-content\")],2)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"transition-anim\"}},[(_vm.pdfFile)?_c('section',{staticClass:\"pdf-preview\"},[_c('button',{on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.closePreview()}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t×\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('iframe',{attrs:{\"src\":_vm.pdfFile,\"width\":\"100%\",\"height\":\"100%\"}})]):_vm._e()])],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n var __vue_inject_styles__ = function (inject) {\n if (!inject) { return }\n inject(\"data-v-1fd3ad26_0\", { source: \".vue-html2pdf .layout-container[data-v-1fd3ad26]{position:fixed;width:100vw;height:100vh;left:-100vw;top:0;z-index:-9999;background:rgba(95,95,95,.8);display:flex;justify-content:center;align-items:flex-start;overflow:auto}.vue-html2pdf .layout-container.show-layout[data-v-1fd3ad26]{left:0;z-index:9999}.vue-html2pdf .layout-container.unset-all[data-v-1fd3ad26]{all:unset;width:auto;height:auto}.vue-html2pdf .pdf-preview[data-v-1fd3ad26]{position:fixed;width:65%;min-width:600px;height:80vh;top:100px;z-index:9999999;left:50%;transform:translateX(-50%);border-radius:5px;box-shadow:0 0 10px #00000048}.vue-html2pdf .pdf-preview button[data-v-1fd3ad26]{position:absolute;top:-20px;left:-15px;width:35px;height:35px;background:#555;border:0;box-shadow:0 0 10px #00000048;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer}.vue-html2pdf .pdf-preview iframe[data-v-1fd3ad26]{border:0}.vue-html2pdf .transition-anim-enter-active[data-v-1fd3ad26],.vue-html2pdf .transition-anim-leave-active[data-v-1fd3ad26]{transition:opacity .3s ease-in}.vue-html2pdf .transition-anim-enter[data-v-1fd3ad26],.vue-html2pdf .transition-anim-leave-to[data-v-1fd3ad26]{opacity:0}\", map: undefined, media: undefined });\n\n };\n /* scoped */\n var __vue_scope_id__ = \"data-v-1fd3ad26\";\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n createInjector,\n undefined,\n undefined\n );\n\n// Import vue component\r\n\r\n// install function executed by Vue.use()\r\nfunction install(Vue) {\r\n if (install.installed) { return; }\r\n install.installed = true;\r\n Vue.component('VueHtml2pdf', __vue_component__);\r\n}\r\n\r\n// Create module definition for Vue.use()\r\nvar plugin = {\r\n install: install,\r\n};\r\n\r\n// To auto-install when vue is found\r\n/* global window global */\r\nvar GlobalVue = null;\r\nif (typeof window !== 'undefined') {\r\n GlobalVue = window.Vue;\r\n} else if (typeof global !== 'undefined') {\r\n GlobalVue = global.Vue;\r\n}\r\nif (GlobalVue) {\r\n GlobalVue.use(plugin);\r\n}\r\n\r\n// Inject install function into component - allows component\r\n// to be registered via Vue.use() as well as Vue.component()\r\n__vue_component__.install = install;\r\n\r\n// It's possible to expose named exports when writing components that can\r\n// also be used as directives, etc. - eg. import { RollupDemoDirective } from 'rollup-demo';\r\n// export const RollupDemoDirective = component;\n\nexport default __vue_component__;\n","/**\n * html2pdf.js v0.9.3\n * Copyright (c) 2021 Erik Koopmans\n * Released under the MIT License.\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jspdf'), require('html2canvas')) :\n\ttypeof define === 'function' && define.amd ? define(['jspdf', 'html2canvas'], factory) :\n\t(global.html2pdf = factory(global.jsPDF,global.html2canvas));\n}(this, (function (jsPDF,html2canvas) { 'use strict';\n\njsPDF = jsPDF && jsPDF.hasOwnProperty('default') ? jsPDF['default'] : jsPDF;\nhtml2canvas = html2canvas && html2canvas.hasOwnProperty('default') ? html2canvas['default'] : html2canvas;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n// Determine the type of a variable/object.\nvar objType = function objType(obj) {\n var type = typeof obj === 'undefined' ? 'undefined' : _typeof(obj);\n if (type === 'undefined') return 'undefined';else if (type === 'string' || obj instanceof String) return 'string';else if (type === 'number' || obj instanceof Number) return 'number';else if (type === 'function' || obj instanceof Function) return 'function';else if (!!obj && obj.constructor === Array) return 'array';else if (obj && obj.nodeType === 1) return 'element';else if (type === 'object') return 'object';else return 'unknown';\n};\n\n// Create an HTML element with optional className, innerHTML, and style.\nvar createElement = function createElement(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML) {\n el.innerHTML = opt.innerHTML;\n var scripts = el.getElementsByTagName('script');\n for (var i = scripts.length; i-- > 0; null) {\n scripts[i].parentNode.removeChild(scripts[i]);\n }\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n};\n\n// Deep-clone a node and preserve contents/properties.\nvar cloneNode = function cloneNode(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone = node.nodeType === 3 ? document.createTextNode(node.nodeValue) : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (javascriptEnabled === true || child.nodeType !== 1 || child.nodeName !== 'SCRIPT') {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === 'CANVAS') {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext('2d').drawImage(node, 0, 0);\n } else if (node.nodeName === 'TEXTAREA' || node.nodeName === 'SELECT') {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener('load', function () {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n }, true);\n }\n\n // Return the cloned node.\n return clone;\n};\n\n// Convert units from px using the conversion value 'k' from jsPDF.\nvar unitConvert = function unitConvert(obj, k) {\n if (objType(obj) === 'number') {\n return obj * 72 / 96 / k;\n } else {\n var newObj = {};\n for (var key in obj) {\n newObj[key] = obj[key] * 72 / 96 / k;\n }\n return newObj;\n }\n};\n\n// Convert units to px using the conversion value 'k' from jsPDF.\nvar toPx = function toPx(val, k) {\n return Math.floor(val * k / 72 * 96);\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar es6Promise = createCommonjsModule(function (module, exports) {\n/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.5+7f2b526d\n */\n\n(function (global, factory) {\n\tmodule.exports = factory();\n}(commonjsGlobal, (function () { function objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof commonjsRequire === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof commonjsGlobal !== 'undefined') {\n local = commonjsGlobal;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n\n});\n\nvar Promise$1 = es6Promise.Promise;\n\n/* ----- CONSTRUCTOR ----- */\n\nvar Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = _extends(Worker.convert(Promise$1.resolve()), JSON.parse(JSON.stringify(Worker.template)));\n var self = Worker.convert(Promise$1.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n};\n\n// Boilerplate for subclassing Promise.\nWorker.prototype = Object.create(Promise$1.prototype);\nWorker.prototype.constructor = Worker;\n\n// Converts/casts promises into Workers.\nWorker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n};\n\nWorker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: 'file.pdf',\n margin: [0, 0, 0, 0],\n image: { type: 'jpeg', quality: 0.95 },\n enableLinks: true,\n html2canvas: {},\n jsPDF: {}\n }\n};\n\n/* ----- FROM / TO ----- */\n\nWorker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case 'string':\n return 'string';\n case 'element':\n return src.nodeName.toLowerCase === 'canvas' ? 'canvas' : 'element';\n default:\n return 'unknown';\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case 'string':\n return this.set({ src: createElement('div', { innerHTML: src }) });\n case 'element':\n return this.set({ src: src });\n case 'canvas':\n return this.set({ canvas: src });\n case 'img':\n return this.set({ img: src });\n default:\n return this.error('Unknown source type.');\n }\n });\n};\n\nWorker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case 'container':\n return this.toContainer();\n case 'canvas':\n return this.toCanvas();\n case 'img':\n return this.toImg();\n case 'pdf':\n return this.toPdf();\n default:\n return this.error('Invalid target.');\n }\n};\n\nWorker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [function checkSrc() {\n return this.prop.src || this.error('Cannot duplicate - no source HTML.');\n }, function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }];\n\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: 'fixed', overflow: 'hidden', zIndex: 1000,\n left: 0, right: 0, bottom: 0, top: 0,\n backgroundColor: 'rgba(0,0,0,0.8)'\n };\n var containerCSS = {\n position: 'absolute', width: this.prop.pageSize.inner.width + this.prop.pageSize.unit,\n left: 0, right: 0, top: 0, height: 'auto', margin: 'auto',\n backgroundColor: 'white'\n };\n\n // Set the overlay to hidden (could be changed in the future to provide a print preview).\n overlayCSS.opacity = 0;\n\n // Create and attach the elements.\n var source = cloneNode(this.prop.src, this.opt.html2canvas.javascriptEnabled);\n this.prop.overlay = createElement('div', { className: 'html2pdf__overlay', style: overlayCSS });\n this.prop.container = createElement('div', { className: 'html2pdf__container', style: containerCSS });\n this.prop.container.appendChild(source);\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n });\n};\n\nWorker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [function checkContainer() {\n return document.body.contains(this.prop.container) || this.toContainer();\n }];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs).then(function toCanvas_main() {\n // Handle old-fashioned 'onrendered' argument.\n var options = _extends({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n }).then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function () {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n};\n\nWorker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL('image/' + this.opt.image.type, this.opt.image.quality);\n this.prop.img = document.createElement('img');\n this.prop.img.src = imgData;\n });\n};\n\nWorker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n var canvas = this.prop.canvas;\n var opt = this.opt;\n\n // Calculate the number of pages.\n var pxFullHeight = canvas.height;\n var pxPageHeight = Math.floor(canvas.width * this.prop.pageSize.inner.ratio);\n var nPages = Math.ceil(pxFullHeight / pxPageHeight);\n\n // Define pageHeight separately so it can be trimmed on the final page.\n var pageHeight = this.prop.pageSize.inner.height;\n\n // Create a one-page canvas to split up the full image.\n var pageCanvas = document.createElement('canvas');\n var pageCtx = pageCanvas.getContext('2d');\n pageCanvas.width = canvas.width;\n pageCanvas.height = pxPageHeight;\n\n // Initialize the PDF.\n this.prop.pdf = this.prop.pdf || new jsPDF(opt.jsPDF);\n\n for (var page = 0; page < nPages; page++) {\n // Trim the final page to reduce file size.\n if (page === nPages - 1 && pxFullHeight % pxPageHeight !== 0) {\n pageCanvas.height = pxFullHeight % pxPageHeight;\n pageHeight = pageCanvas.height * this.prop.pageSize.inner.width / pageCanvas.width;\n }\n\n // Display the page.\n var w = pageCanvas.width;\n var h = pageCanvas.height;\n pageCtx.fillStyle = 'white';\n pageCtx.fillRect(0, 0, w, h);\n pageCtx.drawImage(canvas, 0, page * pxPageHeight, w, h, 0, 0, w, h);\n\n // Add the page to the PDF.\n if (page) this.prop.pdf.addPage();\n var imgData = pageCanvas.toDataURL('image/' + opt.image.type, opt.image.quality);\n this.prop.pdf.addImage(imgData, opt.image.type, opt.margin[1], opt.margin[0], this.prop.pageSize.inner.width, pageHeight);\n }\n });\n};\n\n/* ----- OUTPUT / SAVE ----- */\n\nWorker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || 'pdf';\n if (src.toLowerCase() === 'img' || src.toLowerCase() === 'image') {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n};\n\nWorker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n};\n\nWorker.prototype.outputImg = function outputImg(type, options) {\n // Set up function prerequisites.\n var prereqs = [function checkImg() {\n return this.prop.img || this.toImg();\n }];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case 'img':\n return this.prop.img;\n case 'datauristring':\n case 'dataurlstring':\n return this.prop.img.src;\n case 'datauri':\n case 'dataurl':\n return document.location.href = this.prop.img.src;\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n};\n\nWorker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).set(filename ? { filename: filename } : null).then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n};\n\n/* ----- SET / GET ----- */\n\nWorker.prototype.set = function set$$1(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== 'object') {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function (key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case 'margin':\n return this.setMargin.bind(this, opt.margin);\n case 'jsPDF':\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;return this.setPageSize();\n };\n case 'pageSize':\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n};\n\nWorker.prototype.get = function get$$1(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n};\n\nWorker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property: [top, left, bottom, right].\n switch (objType(margin)) {\n case 'number':\n margin = [margin, margin, margin, margin];\n case 'array':\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n default:\n return this.error('Invalid margin array.');\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n};\n\nWorker.prototype.setPageSize = function setPageSize(pageSize) {\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty('inner')) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n};\n\nWorker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n};\n\nWorker.prototype.updateProgress = function updateProgress(val, state, n, stack) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(val ? this.progress.val + val : null, state ? state : null, n ? this.progress.n + n : null, stack ? this.progress.stack.concat(stack) : null);\n};\n\n/* ----- PROMISE MAPPING ----- */\n\nWorker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(onFulfilled, onRejected) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise$1.prototype.then.call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n }).then(onFulfilled, onRejected).then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n};\n\nWorker.prototype.thenCore = function thenCore(onFulfilled, onRejected, thenBase) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise$1.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative = Promise$1.toString().indexOf('[native code]') !== -1 && Promise$1.name === 'Promise';\n var selfPromise = isNative ? self : Worker.convert(_extends({}, self), Promise$1.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n};\n\nWorker.prototype.thenExternal = function thenExternal(onFulfilled, onRejected) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise$1.prototype.then.call(this, onFulfilled, onRejected);\n};\n\nWorker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n};\n\nWorker.prototype['catch'] = function (onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise$1.prototype['catch'].call(this, onRejected);\n return Worker.convert(returnVal, this);\n};\n\nWorker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise$1.prototype['catch'].call(this, onRejected);\n};\n\nWorker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n};\n\n/* ----- ALIASES ----- */\n\nWorker.prototype.using = Worker.prototype.set;\nWorker.prototype.saveAs = Worker.prototype.save;\nWorker.prototype.export = Worker.prototype.output;\nWorker.prototype.run = Worker.prototype.then;\n\n// Import dependencies.\n// Get dimensions of a PDF page, as determined by jsPDF.\njsPDF.getPageSize = function (orientation, unit, format) {\n // Decode options object\n if ((typeof orientation === 'undefined' ? 'undefined' : _typeof(orientation)) === 'object') {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || 'mm';\n format = format || 'a4';\n orientation = ('' + (orientation || 'P')).toLowerCase();\n var format_as_string = ('' + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n 'a0': [2383.94, 3370.39], 'a1': [1683.78, 2383.94],\n 'a2': [1190.55, 1683.78], 'a3': [841.89, 1190.55],\n 'a4': [595.28, 841.89], 'a5': [419.53, 595.28],\n 'a6': [297.64, 419.53], 'a7': [209.76, 297.64],\n 'a8': [147.40, 209.76], 'a9': [104.88, 147.40],\n 'a10': [73.70, 104.88], 'b0': [2834.65, 4008.19],\n 'b1': [2004.09, 2834.65], 'b2': [1417.32, 2004.09],\n 'b3': [1000.63, 1417.32], 'b4': [708.66, 1000.63],\n 'b5': [498.90, 708.66], 'b6': [354.33, 498.90],\n 'b7': [249.45, 354.33], 'b8': [175.75, 249.45],\n 'b9': [124.72, 175.75], 'b10': [87.87, 124.72],\n 'c0': [2599.37, 3676.54], 'c1': [1836.85, 2599.37],\n 'c2': [1298.27, 1836.85], 'c3': [918.43, 1298.27],\n 'c4': [649.13, 918.43], 'c5': [459.21, 649.13],\n 'c6': [323.15, 459.21], 'c7': [229.61, 323.15],\n 'c8': [161.57, 229.61], 'c9': [113.39, 161.57],\n 'c10': [79.37, 113.39], 'dl': [311.81, 623.62],\n 'letter': [612, 792],\n 'government-letter': [576, 756],\n 'legal': [612, 1008],\n 'junior-legal': [576, 360],\n 'ledger': [1224, 792],\n 'tabloid': [792, 1224],\n 'credit-card': [153, 243]\n };\n\n // Unit conversion\n switch (unit) {\n case 'pt':\n var k = 1;break;\n case 'mm':\n var k = 72 / 25.4;break;\n case 'cm':\n var k = 72 / 2.54;break;\n case 'in':\n var k = 72;break;\n case 'px':\n var k = 72 / 96;break;\n case 'pc':\n var k = 12;break;\n case 'em':\n var k = 12;break;\n case 'ex':\n var k = 6;break;\n default:\n throw 'Invalid unit: ' + unit;\n }\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n var pageHeight = pageFormats[format_as_string][1] / k;\n var pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n var pageHeight = format[1];\n var pageWidth = format[0];\n } catch (err) {\n throw new Error('Invalid format: ' + format);\n }\n }\n\n // Handle page orientation\n if (orientation === 'p' || orientation === 'portrait') {\n orientation = 'p';\n if (pageWidth > pageHeight) {\n var tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === 'l' || orientation === 'landscape') {\n orientation = 'l';\n if (pageHeight > pageWidth) {\n var tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw 'Invalid orientation: ' + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = { 'width': pageWidth, 'height': pageHeight, 'unit': unit, 'k': k };\n return info;\n};\n\n/* Pagebreak plugin:\n\n Adds page-break functionality to the html2pdf library. Page-breaks can be\n enabled by CSS styles, set on individual elements using selectors, or\n avoided from breaking inside all elements.\n\n Options on the `opt.pagebreak` object:\n\n mode: String or array of strings: 'avoid-all', 'css', and/or 'legacy'\n Default: ['css', 'legacy']\n\n before: String or array of CSS selectors for which to add page-breaks\n before each element. Can be a specific element with an ID\n ('#myID'), all elements of a type (e.g. 'img'), all of a class\n ('.myClass'), or even '*' to match every element.\n\n after: Like 'before', but adds a page-break immediately after the element.\n\n avoid: Like 'before', but avoids page-breaks on these elements. You can\n enable this feature on every element using the 'avoid-all' mode.\n*/\n\n// Refs to original functions.\nvar orig = {\n toContainer: Worker.prototype.toContainer\n};\n\n// Add pagebreak default options to the Worker template.\nWorker.template.opt.pagebreak = {\n mode: ['css', 'legacy'],\n before: [],\n after: [],\n avoid: []\n};\n\nWorker.prototype.toContainer = function toContainer() {\n return orig.toContainer.call(this).then(function toContainer_pagebreak() {\n // Setup root element and inner page height.\n var root = this.prop.container;\n var pxPageHeight = this.prop.pageSize.inner.px.height;\n\n // Check all requested modes.\n var modeSrc = [].concat(this.opt.pagebreak.mode);\n var mode = {\n avoidAll: modeSrc.indexOf('avoid-all') !== -1,\n css: modeSrc.indexOf('css') !== -1,\n legacy: modeSrc.indexOf('legacy') !== -1\n };\n\n // Get arrays of all explicitly requested elements.\n var select = {};\n var self = this;\n ['before', 'after', 'avoid'].forEach(function (key) {\n var all = mode.avoidAll && key === 'avoid';\n select[key] = all ? [] : [].concat(self.opt.pagebreak[key] || []);\n if (select[key].length > 0) {\n select[key] = Array.prototype.slice.call(root.querySelectorAll(select[key].join(', ')));\n }\n });\n\n // Get all legacy page-break elements.\n var legacyEls = root.querySelectorAll('.html2pdf__page-break');\n legacyEls = Array.prototype.slice.call(legacyEls);\n\n // Loop through all elements.\n var els = root.querySelectorAll('*');\n Array.prototype.forEach.call(els, function pagebreak_loop(el) {\n // Setup pagebreak rules based on legacy and avoidAll modes.\n var rules = {\n before: false,\n after: mode.legacy && legacyEls.indexOf(el) !== -1,\n avoid: mode.avoidAll\n };\n\n // Add rules for css mode.\n if (mode.css) {\n // TODO: Check if this is valid with iFrames.\n var style = window.getComputedStyle(el);\n // TODO: Handle 'left' and 'right' correctly.\n // TODO: Add support for 'avoid' on breakBefore/After.\n var breakOpt = ['always', 'page', 'left', 'right'];\n var avoidOpt = ['avoid', 'avoid-page'];\n rules = {\n before: rules.before || breakOpt.indexOf(style.breakBefore || style.pageBreakBefore) !== -1,\n after: rules.after || breakOpt.indexOf(style.breakAfter || style.pageBreakAfter) !== -1,\n avoid: rules.avoid || avoidOpt.indexOf(style.breakInside || style.pageBreakInside) !== -1\n };\n }\n\n // Add rules for explicit requests.\n Object.keys(rules).forEach(function (key) {\n rules[key] = rules[key] || select[key].indexOf(el) !== -1;\n });\n\n // Get element position on the screen.\n // TODO: Subtract the top of the container from clientRect.top/bottom?\n var clientRect = el.getBoundingClientRect();\n\n // Avoid: Check if a break happens mid-element.\n if (rules.avoid && !rules.before) {\n var startPage = Math.floor(clientRect.top / pxPageHeight);\n var endPage = Math.floor(clientRect.bottom / pxPageHeight);\n var nPages = Math.abs(clientRect.bottom - clientRect.top) / pxPageHeight;\n\n // Turn on rules.before if the el is broken and is at most one page long.\n if (endPage !== startPage && nPages <= 1) {\n rules.before = true;\n }\n }\n\n // Before: Create a padding div to push the element to the next page.\n if (rules.before) {\n var pad = createElement('div', { style: {\n display: 'block',\n height: pxPageHeight - clientRect.top % pxPageHeight + 'px'\n } });\n el.parentNode.insertBefore(pad, el);\n }\n\n // After: Create a padding div to fill the remaining page.\n if (rules.after) {\n var pad = createElement('div', { style: {\n display: 'block',\n height: pxPageHeight - clientRect.bottom % pxPageHeight + 'px'\n } });\n el.parentNode.insertBefore(pad, el.nextSibling);\n }\n });\n });\n};\n\n// Add hyperlink functionality to the PDF creation.\n\n// Main link array, and refs to original functions.\nvar linkInfo = [];\nvar orig$1 = {\n toContainer: Worker.prototype.toContainer,\n toPdf: Worker.prototype.toPdf\n};\n\nWorker.prototype.toContainer = function toContainer() {\n return orig$1.toContainer.call(this).then(function toContainer_hyperlink() {\n // Retrieve hyperlink info if the option is enabled.\n if (this.opt.enableLinks) {\n // Find all anchor tags and get the container's bounds for reference.\n var container = this.prop.container;\n var links = container.querySelectorAll('a');\n var containerRect = unitConvert(container.getBoundingClientRect(), this.prop.pageSize.k);\n linkInfo = [];\n\n // Loop through each anchor tag.\n Array.prototype.forEach.call(links, function (link) {\n // Treat each client rect as a separate link (for text-wrapping).\n var clientRects = link.getClientRects();\n for (var i = 0; i < clientRects.length; i++) {\n var clientRect = unitConvert(clientRects[i], this.prop.pageSize.k);\n clientRect.left -= containerRect.left;\n clientRect.top -= containerRect.top;\n\n var page = Math.floor(clientRect.top / this.prop.pageSize.inner.height) + 1;\n var top = this.opt.margin[0] + clientRect.top % this.prop.pageSize.inner.height;\n var left = this.opt.margin[1] + clientRect.left;\n\n linkInfo.push({ page: page, top: top, left: left, clientRect: clientRect, link: link });\n }\n }, this);\n }\n });\n};\n\nWorker.prototype.toPdf = function toPdf() {\n return orig$1.toPdf.call(this).then(function toPdf_hyperlink() {\n // Add hyperlinks if the option is enabled.\n if (this.opt.enableLinks) {\n // Attach each anchor tag based on info from toContainer().\n linkInfo.forEach(function (l) {\n this.prop.pdf.setPage(l.page);\n this.prop.pdf.link(l.left, l.top, l.clientRect.width, l.clientRect.height, { url: l.link.href });\n }, this);\n\n // Reset the active page of the PDF to the final page.\n var nPages = this.prop.pdf.internal.getNumberOfPages();\n this.prop.pdf.setPage(nPages);\n }\n });\n};\n\n/**\n * Generate a PDF from an HTML element or string using html2canvas and jsPDF.\n *\n * @param {Element|string} source The source element or HTML string.\n * @param {Object=} opt An object of optional settings: 'margin', 'filename',\n * 'image' ('type' and 'quality'), and 'html2canvas' / 'jspdf', which are\n * sent as settings to their corresponding functions.\n */\nvar html2pdf = function html2pdf(src, opt) {\n // Create a new worker with the given options.\n var worker = new html2pdf.Worker(opt);\n\n if (src) {\n // If src is specified, perform the traditional 'simple' operation.\n return worker.from(src).save();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n};\nhtml2pdf.Worker = Worker;\n\nreturn html2pdf;\n\n})));\n"],"sourceRoot":""}