/*! For license information please see 8.js.LICENSE.txt */ (window.webpackJsonp=window.webpackJsonp||[]).push([[8],{186:function(e,n,t){var r;r=function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(r,a,(function(n){return e[n]}).bind(null,a));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=6)}([function(e,n){function t(e){var n;if("SELECT"===e.nodeName)e.focus(),n=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var t=e.hasAttribute("readonly");t||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),t||e.removeAttribute("readonly"),n=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var r=window.getSelection(),a=document.createRange();a.selectNodeContents(e),r.removeAllRanges(),r.addRange(a),n=r.toString()}return n}e.exports=t},function(e,n){function t(){}t.prototype={on:function(e,n,t){var r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:n,ctx:t}),this},once:function(e,n,t){var r=this;function a(){r.off(e,a),n.apply(t,arguments)}return a._=n,this.on(e,a,t)},emit:function(e){for(var n=[].slice.call(arguments,1),t=((this.e||(this.e={}))[e]||[]).slice(),r=0,a=t.length;r0&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var t=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=a()(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=a()(this.target),this.copyText()}},{key:"copyText",value:function(){var e=void 0;try{e=document.execCommand(this.action)}catch(n){e=!1}this.handleResult(e)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":o(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),e}(),p=t(1),c=t.n(p),u=t(2),d=t.n(u),f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},m=function(){function e(e,n){for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===f(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var n=this;this.listener=d()(e,"click",(function(e){return n.onClick(e)}))}},{key:"onClick",value:function(e){var n=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l({action:this.action(n),target:this.target(n),text:this.text(n),container:this.container,trigger:n,emitter:this})}},{key:"defaultAction",value:function(e){return v("action",e)}},{key:"defaultTarget",value:function(e){var n=v("target",e);if(n)return document.querySelector(n)}},{key:"defaultText",value:function(e){return v("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof e?[e]:e,t=!!document.queryCommandSupported;return n.forEach((function(e){t=t&&!!document.queryCommandSupported(e)})),t}}]),n}(c.a);function v(e,n){var t="data-clipboard-"+e;if(n.hasAttribute(t))return n.getAttribute(t)}n.default=_}]).default},e.exports=r()},723:function(module,exports,__webpack_require__){var factory;window,factory=function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var a in e)t.d(r,a,(function(n){return e[n]}).bind(null,a));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="",t(t.s=0)}({"./src/index.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\n__webpack_require__(/*! ./sass/index.scss */ "./src/sass/index.scss");\n\nvar _init = __webpack_require__(/*! ./js/init */ "./src/js/init.js");\n\nvar _init2 = _interopRequireDefault(_init);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar printJS = _init2.default.init;\n\nif (typeof window !== \'undefined\') {\n window.printJS = printJS;\n}\n\nexports.default = printJS;\n\n//# sourceURL=webpack://printJS/./src/index.js?')},"./src/js/browser.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Browser = {\n // Firefox 1.0+\n isFirefox: function isFirefox() {\n return typeof InstallTrigger !== 'undefined';\n },\n // Internet Explorer 6-11\n isIE: function isIE() {\n return navigator.userAgent.indexOf('MSIE') !== -1 || !!document.documentMode;\n },\n // Edge 20+\n isEdge: function isEdge() {\n return !Browser.isIE() && !!window.StyleMedia;\n },\n // Chrome 1+\n isChrome: function isChrome() {\n var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n\n return !!context.chrome;\n },\n // At least Safari 3+: \"[object HTMLElementConstructor]\"\n isSafari: function isSafari() {\n return Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 || navigator.userAgent.toLowerCase().indexOf('safari') !== -1;\n },\n // IOS Chrome\n isIOSChrome: function isIOSChrome() {\n return navigator.userAgent.toLowerCase().indexOf('crios') !== -1;\n }\n};\n\nexports.default = Browser;\n\n//# sourceURL=webpack://printJS/./src/js/browser.js?")},"./src/js/functions.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.addWrapper = addWrapper;\nexports.capitalizePrint = capitalizePrint;\nexports.collectStyles = collectStyles;\nexports.addHeader = addHeader;\nexports.cleanUp = cleanUp;\nexports.isRawHTML = isRawHTML;\n\nvar _modal = __webpack_require__(/*! ./modal */ \"./src/js/modal.js\");\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _browser = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addWrapper(htmlData, params) {\n var bodyStyle = 'font-family:' + params.font + ' !important; font-size: ' + params.font_size + ' !important; width:100%;';\n return '
' + htmlData + '
';\n}\n\nfunction capitalizePrint(obj) {\n return obj.charAt(0).toUpperCase() + obj.slice(1);\n}\n\nfunction collectStyles(element, params) {\n var win = document.defaultView || window;\n\n // String variable to hold styling for each element\n var elementStyle = '';\n\n // Loop over computed styles\n var styles = win.getComputedStyle(element, '');\n\n Object.keys(styles).map(function (key) {\n // Check if style should be processed\n if (params.targetStyles.indexOf('*') !== -1 || params.targetStyle.indexOf(styles[key]) !== -1 || targetStylesMatch(params.targetStyles, styles[key])) {\n if (styles.getPropertyValue(styles[key])) elementStyle += styles[key] + ':' + styles.getPropertyValue(styles[key]) + ';';\n }\n });\n\n // Print friendly defaults (deprecated)\n elementStyle += 'max-width: ' + params.maxWidth + 'px !important;' + params.font_size + ' !important;';\n\n return elementStyle;\n}\n\nfunction targetStylesMatch(styles, value) {\n for (var i = 0; i < styles.length; i++) {\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.indexOf(styles[i]) !== -1) return true;\n }\n return false;\n}\n\nfunction addHeader(printElement, params) {\n // Create the header container div\n var headerContainer = document.createElement('div');\n\n // Check if the header is text or raw html\n if (isRawHTML(params.header)) {\n headerContainer.innerHTML = params.header;\n } else {\n // Create header element\n var headerElement = document.createElement('h1');\n\n // Create header text node\n var headerNode = document.createTextNode(params.header);\n\n // Build and style\n headerElement.appendChild(headerNode);\n headerElement.setAttribute('style', params.headerStyle);\n headerContainer.appendChild(headerElement);\n }\n\n printElement.insertBefore(headerContainer, printElement.childNodes[0]);\n}\n\nfunction cleanUp(params) {\n // If we are showing a feedback message to user, remove it\n if (params.showModal) _modal2.default.close();\n\n // Check for a finished loading hook function\n if (params.onLoadingEnd) params.onLoadingEnd();\n\n // If preloading pdf files, clean blob url\n if (params.showModal || params.onLoadingStart) window.URL.revokeObjectURL(params.printable);\n\n // If a onPrintDialogClose callback is given, execute it\n if (params.onPrintDialogClose) {\n var event = 'mouseover';\n\n if (_browser2.default.isChrome() || _browser2.default.isFirefox()) {\n // Ps.: Firefox will require an extra click in the document to fire the focus event.\n event = 'focus';\n }\n var handler = function handler() {\n // Make sure the event only happens once.\n window.removeEventListener(event, handler);\n\n params.onPrintDialogClose();\n };\n\n window.addEventListener(event, handler);\n }\n}\n\nfunction isRawHTML(raw) {\n var regexHtml = new RegExp('<([A-Za-z][A-Za-z0-9]*)\\\\b[^>]*>(.*?)');\n return regexHtml.test(raw);\n}\n\n//# sourceURL=webpack://printJS/./src/js/functions.js?")},"./src/js/html.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _functions = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\nvar _print = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\nvar _print2 = _interopRequireDefault(_print);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n print: function print(params, printFrame) {\n // Get the DOM printable element\n var printElement = document.getElementById(params.printable);\n\n // Check if the element exists\n if (!printElement) {\n window.console.error('Invalid HTML element id: ' + params.printable);\n return;\n }\n\n // Clone the target element including its children (if available)\n params.printableElement = cloneElement(printElement, params);\n\n // Add header\n if (params.header) {\n (0, _functions.addHeader)(params.printableElement, params);\n }\n\n // Print html element contents\n _print2.default.send(params, printFrame);\n }\n};\n\n\nfunction cloneElement(element, params) {\n // Clone the main node (if not already inside the recursion process)\n var clone = element.cloneNode();\n\n // Loop over and process the children elements / nodes (including text nodes)\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = element.childNodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var child = _step.value;\n\n // Check if we are skiping the current element\n if (params.ignoreElements.indexOf(child.id) !== -1) {\n continue;\n }\n\n // Clone the child element\n var clonedChild = cloneElement(child, params);\n\n // Attach the cloned child to the cloned parent node\n clone.appendChild(clonedChild);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n console.log(element.nodeType);\n // Get all styling for print element (for nodes of type element only)\n if (params.scanStyles && element.nodeType === 1) {\n clone.setAttribute('style', (0, _functions.collectStyles)(element, params));\n }\n\n // Check if the element needs any state processing (copy user input data)\n switch (element.tagName) {\n case 'SELECT':\n // Copy the current selection value to its clone\n clone.value = element.value;\n break;\n case 'CANVAS':\n // Copy the canvas content to its clone\n clone.getContext('2d').drawImage(element, 0, 0);\n break;\n }\n\n return clone;\n}\n\n//# sourceURL=webpack://printJS/./src/js/html.js?")},"./src/js/image.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _functions = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\nvar _print = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\nvar _print2 = _interopRequireDefault(_print);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n print: function print(params, printFrame) {\n // Check if we are printing one image or multiple images\n if (params.printable.constructor !== Array) {\n // Create array with one image\n params.printable = [params.printable];\n }\n\n // Create printable element (container)\n params.printableElement = document.createElement('div');\n\n // Create all image elements and append them to the printable container\n params.printable.forEach(function (src) {\n // Create the image element\n var img = document.createElement('img');\n img.setAttribute('style', params.imageStyle);\n\n // Set image src with the file url\n img.src = src;\n\n // Create the image wrapper\n var imageWrapper = document.createElement('div');\n\n // Append image to the wrapper element\n imageWrapper.appendChild(img);\n\n // Append wrapper to the printable element\n params.printableElement.appendChild(imageWrapper);\n });\n\n // Check if we are adding a print header\n if (params.header) (0, _functions.addHeader)(params.printableElement, params);\n\n // Print image\n _print2.default.send(params, printFrame);\n }\n};\n\n//# sourceURL=webpack://printJS/./src/js/image.js?")},"./src/js/init.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _browser = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _modal = __webpack_require__(/*! ./modal */ \"./src/js/modal.js\");\n\nvar _modal2 = _interopRequireDefault(_modal);\n\nvar _pdf = __webpack_require__(/*! ./pdf */ \"./src/js/pdf.js\");\n\nvar _pdf2 = _interopRequireDefault(_pdf);\n\nvar _html = __webpack_require__(/*! ./html */ \"./src/js/html.js\");\n\nvar _html2 = _interopRequireDefault(_html);\n\nvar _rawHtml = __webpack_require__(/*! ./raw-html */ \"./src/js/raw-html.js\");\n\nvar _rawHtml2 = _interopRequireDefault(_rawHtml);\n\nvar _image = __webpack_require__(/*! ./image */ \"./src/js/image.js\");\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _json = __webpack_require__(/*! ./json */ \"./src/js/json.js\");\n\nvar _json2 = _interopRequireDefault(_json);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar printTypes = ['pdf', 'html', 'image', 'json', 'raw-html'];\n\nexports.default = {\n init: function init() {\n var params = {\n printable: null,\n fallbackPrintable: null,\n type: 'pdf',\n header: null,\n headerStyle: 'font-weight: 300;',\n maxWidth: 800,\n font: 'TimesNewRoman',\n font_size: '12pt',\n honorMarginPadding: true,\n honorColor: false,\n properties: null,\n gridHeaderStyle: 'font-weight: bold; padding: 5px; border: 1px solid #dddddd;',\n gridStyle: 'border: 1px solid lightgray; margin-bottom: -1px;',\n showModal: false,\n onError: function onError(error) {\n throw error;\n },\n onLoadingStart: null,\n onLoadingEnd: null,\n onPrintDialogClose: null,\n onPdfOpen: null,\n onBrowserIncompatible: function onBrowserIncompatible() {\n return true;\n },\n modalMessage: 'Retrieving Document...',\n frameId: 'printJS',\n printableElement: null,\n documentTitle: 'Document',\n targetStyle: ['clear', 'display', 'width', 'min-width', 'height', 'min-height', 'max-height'],\n targetStyles: ['border', 'box', 'break', 'text-decoration'],\n ignoreElements: [],\n imageStyle: 'max-width: 100%;',\n repeatTableHeader: true,\n css: null,\n style: null,\n scanStyles: true,\n base64: false\n\n // Check if a printable document or object was supplied\n };var args = arguments[0];\n if (args === undefined) throw new Error('printJS expects at least 1 attribute.');\n\n // Process parameters\n switch (typeof args === 'undefined' ? 'undefined' : _typeof(args)) {\n case 'string':\n params.printable = encodeURI(args);\n params.fallbackPrintable = params.printable;\n params.type = arguments[1] || params.type;\n break;\n case 'object':\n params.printable = args.printable;\n params.base64 = typeof args.base64 !== 'undefined';\n params.fallbackPrintable = typeof args.fallbackPrintable !== 'undefined' ? args.fallbackPrintable : params.printable;\n params.fallbackPrintable = params.base64 ? 'data:application/pdf;base64,' + params.fallbackPrintable : params.fallbackPrintable;\n for (var k in params) {\n if (k === 'printable' || k === 'fallbackPrintable' || k === 'base64') continue;\n\n params[k] = typeof args[k] !== 'undefined' ? args[k] : params[k];\n }\n break;\n default:\n throw new Error('Unexpected argument type! Expected \"string\" or \"object\", got ' + (typeof args === 'undefined' ? 'undefined' : _typeof(args)));\n }\n\n // Validate printable\n if (!params.printable) throw new Error('Missing printable information.');\n\n // Validate type\n if (!params.type || typeof params.type !== 'string' || printTypes.indexOf(params.type.toLowerCase()) === -1) {\n throw new Error('Invalid print type. Available types are: pdf, html, image and json.');\n }\n\n // Check if we are showing a feedback message to the user (useful for large files)\n if (params.showModal) _modal2.default.show(params);\n\n // Check for a print start hook function\n if (params.onLoadingStart) params.onLoadingStart();\n\n // To prevent duplication and issues, remove any used printFrame from the DOM\n var usedFrame = document.getElementById(params.frameId);\n\n if (usedFrame) usedFrame.parentNode.removeChild(usedFrame);\n\n // Create a new iframe or embed element (IE prints blank pdf's if we use iframe)\n var printFrame = void 0;\n\n // Create iframe element\n printFrame = document.createElement('iframe');\n\n // Hide iframe\n printFrame.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute;');\n\n // Set iframe element id\n printFrame.setAttribute('id', params.frameId);\n\n // For non pdf printing, pass an html document string to srcdoc (force onload callback)\n if (params.type !== 'pdf') {\n printFrame.srcdoc = '' + params.documentTitle + '';\n\n // Attach css files\n if (params.css) {\n // Add support for single file\n if (!Array.isArray(params.css)) params.css = [params.css];\n\n // Create link tags for each css file\n params.css.forEach(function (file) {\n printFrame.srcdoc += '';\n });\n }\n\n printFrame.srcdoc += '';\n }\n\n // Check printable type\n switch (params.type) {\n case 'pdf':\n // Check browser support for pdf and if not supported we will just open the pdf file instead\n if (_browser2.default.isFirefox() || _browser2.default.isEdge() || _browser2.default.isIE()) {\n try {\n console.info('PrintJS currently doesn\\'t support PDF printing in Firefox, Internet Explorer and Edge.');\n if (params.onBrowserIncompatible() === true) {\n var win = window.open(params.fallbackPrintable, '_blank');\n win.focus();\n if (params.onPdfOpen) params.onPdfOpen();\n }\n } catch (e) {\n params.onError(e);\n } finally {\n // Make sure there is no loading modal opened\n if (params.showModal) _modal2.default.close();\n if (params.onLoadingEnd) params.onLoadingEnd();\n }\n } else {\n _pdf2.default.print(params, printFrame);\n }\n break;\n case 'image':\n _image2.default.print(params, printFrame);\n break;\n case 'html':\n _html2.default.print(params, printFrame);\n break;\n case 'raw-html':\n _rawHtml2.default.print(params, printFrame);\n break;\n case 'json':\n _json2.default.print(params, printFrame);\n break;\n }\n }\n};\n\n//# sourceURL=webpack://printJS/./src/js/init.js?")},"./src/js/json.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _functions = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\nvar _print = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\nvar _print2 = _interopRequireDefault(_print);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n print: function print(params, printFrame) {\n // Check if we received proper data\n if (_typeof(params.printable) !== 'object') {\n throw new Error('Invalid javascript data object (JSON).');\n }\n\n // Validate repeatTableHeader\n if (typeof params.repeatTableHeader !== 'boolean') {\n throw new Error('Invalid value for repeatTableHeader attribute (JSON).');\n }\n\n // Validate properties\n if (!params.properties || !Array.isArray(params.properties)) {\n throw new Error('Invalid properties array for your JSON data.');\n }\n\n // We will format the property objects to keep the JSON api compatible with older releases\n params.properties = params.properties.map(function (property) {\n return {\n field: (typeof property === 'undefined' ? 'undefined' : _typeof(property)) === 'object' ? property.field : property,\n displayName: (typeof property === 'undefined' ? 'undefined' : _typeof(property)) === 'object' ? property.displayName : property,\n columnSize: (typeof property === 'undefined' ? 'undefined' : _typeof(property)) === 'object' && property.columnSize ? property.columnSize + ';' : 100 / params.properties.length + '%;'\n };\n });\n\n // Create a print container element\n params.printableElement = document.createElement('div');\n\n // Check if we are adding a print header\n if (params.header) {\n (0, _functions.addHeader)(params.printableElement, params);\n }\n\n // Build the printable html data\n params.printableElement.innerHTML += jsonToHTML(params);\n\n // Print the json data\n _print2.default.send(params, printFrame);\n }\n};\n\n\nfunction jsonToHTML(params) {\n // Get the row and column data\n var data = params.printable;\n var properties = params.properties;\n\n // Create a html table\n var htmlData = '';\n\n // Check if the header should be repeated\n if (params.repeatTableHeader) {\n htmlData += '';\n }\n\n // Add the table header row\n htmlData += '';\n\n // Add the table header columns\n for (var a = 0; a < properties.length; a++) {\n htmlData += '';\n }\n\n // Add the closing tag for the table header row\n htmlData += '';\n\n // If the table header is marked as repeated, add the closing tag\n if (params.repeatTableHeader) {\n htmlData += '';\n }\n\n // Create the table body\n htmlData += '';\n\n // Add the table data rows\n for (var i = 0; i < data.length; i++) {\n // Add the row starting tag\n htmlData += '';\n\n // Print selected properties only\n for (var n = 0; n < properties.length; n++) {\n var stringData = data[i];\n\n // Support nested objects\n var property = properties[n].field.split('.');\n if (property.length > 1) {\n for (var p = 0; p < property.length; p++) {\n stringData = stringData[property[p]];\n }\n } else {\n stringData = stringData[properties[n].field];\n }\n\n // Add the row contents and styles\n htmlData += '';\n }\n\n // Add the row closing tag\n htmlData += '';\n }\n\n // Add the table and body closing tags\n htmlData += '
' + (0, _functions.capitalizePrint)(properties[a].displayName) + '
' + stringData + '
';\n\n return htmlData;\n}\n\n//# sourceURL=webpack://printJS/./src/js/json.js?")},"./src/js/modal.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar Modal = {\n show: function show(params) {\n // Build modal\n var modalStyle = 'font-family:sans-serif; ' + 'display:table; ' + 'text-align:center; ' + 'font-weight:300; ' + 'font-size:30px; ' + 'left:0; top:0;' + 'position:fixed; ' + 'z-index: 9990;' + 'color: #0460B5; ' + 'width: 100%; ' + 'height: 100%; ' + 'background-color:rgba(255,255,255,.9);' + 'transition: opacity .3s ease;';\n\n // Create wrapper\n var printModal = document.createElement('div');\n printModal.setAttribute('style', modalStyle);\n printModal.setAttribute('id', 'printJS-Modal');\n\n // Create content div\n var contentDiv = document.createElement('div');\n contentDiv.setAttribute('style', 'display:table-cell; vertical-align:middle; padding-bottom:100px;');\n\n // Add close button (requires print.css)\n var closeButton = document.createElement('div');\n closeButton.setAttribute('class', 'printClose');\n closeButton.setAttribute('id', 'printClose');\n contentDiv.appendChild(closeButton);\n\n // Add spinner (requires print.css)\n var spinner = document.createElement('span');\n spinner.setAttribute('class', 'printSpinner');\n contentDiv.appendChild(spinner);\n\n // Add message\n var messageNode = document.createTextNode(params.modalMessage);\n contentDiv.appendChild(messageNode);\n\n // Add contentDiv to printModal\n printModal.appendChild(contentDiv);\n\n // Append print modal element to document body\n document.getElementsByTagName('body')[0].appendChild(printModal);\n\n // Add event listener to close button\n document.getElementById('printClose').addEventListener('click', function () {\n Modal.close();\n });\n },\n close: function close() {\n var printFrame = document.getElementById('printJS-Modal');\n\n printFrame.parentNode.removeChild(printFrame);\n }\n};\n\nexports.default = Modal;\n\n//# sourceURL=webpack://printJS/./src/js/modal.js?")},"./src/js/pdf.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _print = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\nvar _print2 = _interopRequireDefault(_print);\n\nvar _functions = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n print: function print(params, printFrame) {\n // Check if we have base64 data\n if (params.base64) {\n var bytesArray = Uint8Array.from(atob(params.printable), function (c) {\n return c.charCodeAt(0);\n });\n createBlobAndPrint(params, printFrame, bytesArray);\n return;\n }\n\n // Format pdf url\n params.printable = /^(blob|http)/i.test(params.printable) ? params.printable : window.location.origin + (params.printable.charAt(0) !== '/' ? '/' + params.printable : params.printable);\n\n // Get the file through a http request (Preload)\n var req = new window.XMLHttpRequest();\n req.responseType = 'arraybuffer';\n\n req.addEventListener('load', function () {\n // Check for errors\n if ([200, 201].indexOf(req.status) === -1) {\n (0, _functions.cleanUp)(params);\n params.onError(req.statusText);\n\n // Since we don't have a pdf document available, we will stop the print job\n return;\n }\n\n // Print requested document\n createBlobAndPrint(params, printFrame, req.response);\n });\n\n req.open('GET', params.printable, true);\n req.send();\n }\n};\n\n\nfunction createBlobAndPrint(params, printFrame, data) {\n // Pass response or base64 data to a blob and create a local object url\n var localPdf = new window.Blob([data], { type: 'application/pdf' });\n localPdf = window.URL.createObjectURL(localPdf);\n\n // Set iframe src with pdf document url\n printFrame.setAttribute('src', localPdf);\n\n _print2.default.send(params, printFrame);\n}\n\n//# sourceURL=webpack://printJS/./src/js/pdf.js?")},"./src/js/print.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _browser = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n\nvar _browser2 = _interopRequireDefault(_browser);\n\nvar _functions = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Print = {\n send: function send(params, printFrame) {\n // Append iframe element to document body\n document.getElementsByTagName('body')[0].appendChild(printFrame);\n\n // Get iframe element\n var iframeElement = document.getElementById(params.frameId);\n\n // Wait for iframe to load all content\n iframeElement.onload = function () {\n if (params.type === 'pdf') {\n performPrint(iframeElement, params);\n return;\n }\n\n // Get iframe element document\n var printDocument = iframeElement.contentWindow || iframeElement.contentDocument;\n if (printDocument.document) printDocument = printDocument.document;\n\n // Append printable element to the iframe body\n printDocument.body.appendChild(params.printableElement);\n\n // Add custom style\n if (params.type !== 'pdf' && params.style) {\n // Create style element\n var style = document.createElement('style');\n style.innerHTML = params.style;\n\n // Append style element to iframe's head\n printDocument.head.appendChild(style);\n }\n\n // If printing images, wait for them to load inside the iframe\n var images = printDocument.getElementsByTagName('img');\n\n if (images.length > 0) {\n loadIframeImages(images).then(function () {\n return performPrint(iframeElement, params);\n });\n } else {\n performPrint(iframeElement, params);\n }\n };\n }\n};\n\nfunction performPrint(iframeElement, params) {\n try {\n iframeElement.focus();\n\n // If Edge or IE, try catch with execCommand\n if (_browser2.default.isEdge() || _browser2.default.isIE()) {\n try {\n iframeElement.contentWindow.document.execCommand('print', false, null);\n } catch (e) {\n iframeElement.contentWindow.print();\n }\n } else {\n // Other browsers\n iframeElement.contentWindow.print();\n }\n } catch (error) {\n params.onError(error);\n } finally {\n (0, _functions.cleanUp)(params);\n }\n}\n\nfunction loadIframeImages(images) {\n var promises = [];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = images[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var image = _step.value;\n\n promises.push(loadIframeImage(image));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return Promise.all(promises);\n}\n\nfunction loadIframeImage(image) {\n return new Promise(function (resolve) {\n var pollImage = function pollImage() {\n !image || typeof image.naturalWidth === 'undefined' || image.naturalWidth === 0 || !image.complete ? setTimeout(pollImage, 500) : resolve();\n };\n pollImage();\n });\n}\n\nexports.default = Print;\n\n//# sourceURL=webpack://printJS/./src/js/print.js?")},"./src/js/raw-html.js":function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _print = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\nvar _print2 = _interopRequireDefault(_print);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n print: function print(params, printFrame) {\n // Create printable element (container)\n params.printableElement = document.createElement('div');\n params.printableElement.setAttribute('style', 'width:100%');\n\n // Set our raw html as the printable element inner html content\n params.printableElement.innerHTML = params.printable;\n\n // Print html contents\n _print2.default.send(params, printFrame);\n }\n};\n\n//# sourceURL=webpack://printJS/./src/js/raw-html.js?")},"./src/sass/index.scss":function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack://printJS/./src/sass/index.scss?")},0:function(module,exports,__webpack_require__){eval('module.exports = __webpack_require__(/*! ./src/index.js */"./src/index.js");\n\n\n//# sourceURL=webpack://printJS/multi_./src/index.js?')}}).default},module.exports=factory()},728:function(e,n,t){var r;r=function(){"use strict";var e=Object.prototype.toString,n=Array.isArray||function(n){return"[object Array]"===e.call(n)};function t(e){return"function"==typeof e}function r(e){return n(e)?"array":typeof e}function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function o(e,n){return null!=e&&"object"==typeof e&&n in e}function i(e,n){return null!=e&&"object"!=typeof e&&e.hasOwnProperty&&e.hasOwnProperty(n)}var s=RegExp.prototype.test;function l(e,n){return s.call(e,n)}var p=/\S/;function c(e){return!l(p,e)}var u={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function d(e){return String(e).replace(/[&<>"'`=\/]/g,(function(e){return u[e]}))}var f=/\s*/,m=/\s+/,h=/\s*=/,b=/\s*\}/,y=/#|\^|\/|>|\{|&|=|!/;function _(e,t){if(!e)return[];var r,o,i,s=!1,l=[],p=[],u=[],d=!1,_=!1,j="",k=0;function x(){if(d&&!_)for(;u.length;)delete p[u.pop()];else u=[];d=!1,_=!1}function S(e){if("string"==typeof e&&(e=e.split(m,2)),!n(e)||2!==e.length)throw new Error("Invalid tags: "+e);r=new RegExp(a(e[0])+"\\s*"),o=new RegExp("\\s*"+a(e[1])),i=new RegExp("\\s*"+a("}"+e[1]))}S(t||E.tags);for(var C,A,T,P,q,M,O=new w(e);!O.eos();){if(C=O.pos,T=O.scanUntil(r))for(var D=0,L=T.length;D0?a[a.length-1][4]:t;break;default:r.push(n)}return t}function w(e){this.string=e,this.tail=e,this.pos=0}function j(e,n){this.view=e,this.cache={".":this.view},this.parent=n}function k(){this.cache={}}w.prototype.eos=function(){return""===this.tail},w.prototype.scan=function(e){var n=this.tail.match(e);if(!n||0!==n.index)return"";var t=n[0];return this.tail=this.tail.substring(t.length),this.pos+=t.length,t},w.prototype.scanUntil=function(e){var n,t=this.tail.search(e);switch(t){case-1:n=this.tail,this.tail="";break;case 0:n="";break;default:n=this.tail.substring(0,t),this.tail=this.tail.substring(t)}return this.pos+=n.length,n},j.prototype.push=function(e){return new j(e,this)},j.prototype.lookup=function(e){var n,r=this.cache;if(r.hasOwnProperty(e))n=r[e];else{for(var a,s,l,p=this,c=!1;p;){if(e.indexOf(".")>0)for(a=p.view,s=e.split("."),l=0;null!=a&&l"===i?s=this.renderPartial(o,n,t,a):"&"===i?s=this.unescapedValue(o,n):"name"===i?s=this.escapedValue(o,n):"text"===i&&(s=this.rawValue(o)),void 0!==s&&(l+=s);return l},k.prototype.renderSection=function(e,r,a,o){var i=this,s="",l=r.lookup(e[1]);function p(e){return i.render(e,r,a)}if(l){if(n(l))for(var c=0,u=l.length;c0||!t)&&(a[o]=r+a[o]);return a.join("\n")},k.prototype.renderPartial=function(e,n,r,a){if(r){var o=t(r)?r(e[1]):r[e[1]];if(null!=o){var i=e[6],s=e[5],l=e[4],p=o;return 0==s&&l&&(p=this.indentPartial(o,l,i)),this.renderTokens(this.parse(p,a),n,r,p)}}},k.prototype.unescapedValue=function(e,n){var t=n.lookup(e[1]);if(null!=t)return t},k.prototype.escapedValue=function(e,n){var t=n.lookup(e[1]);if(null!=t)return E.escape(t)},k.prototype.rawValue=function(e){return e[1]};var E={name:"mustache.js",version:"3.2.1",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,to_html:void 0,Scanner:void 0,Context:void 0,Writer:void 0},x=new k;return E.clearCache=function(){return x.clearCache()},E.parse=function(e,n){return x.parse(e,n)},E.render=function(e,n,t,a){if("string"!=typeof e)throw new TypeError('Invalid template! Template should be a "string" but "'+r(e)+'" was given as the first argument for mustache#render(template, view, partials)');return x.render(e,n,t,a)},E.to_html=function(e,n,r,a){var o=E.render(e,n,r);if(!t(a))return o;a(o)},E.escape=d,E.Scanner=w,E.Context=j,E.Writer=k,E},e.exports=r()}}]);