{"version":3,"file":"print-BQFyFhgi.js","sources":["../../../node_modules/print-js/dist/print.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"printJS\"] = factory();\n\telse\n\t\troot[\"printJS\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _sass_index_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sass/index.scss */ \"./src/sass/index.scss\");\n/* harmony import */ var _sass_index_scss__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_sass_index_scss__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _js_init__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./js/init */ \"./src/js/init.js\");\n\n\nvar printJS = _js_init__WEBPACK_IMPORTED_MODULE_1__[\"default\"].init;\n\nif (typeof window !== 'undefined') {\n window.printJS = printJS;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (printJS);\n\n/***/ }),\n\n/***/ \"./src/js/browser.js\":\n/*!***************************!*\\\n !*** ./src/js/browser.js ***!\n \\***************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\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 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/* harmony default export */ __webpack_exports__[\"default\"] = (Browser);\n\n/***/ }),\n\n/***/ \"./src/js/functions.js\":\n/*!*****************************!*\\\n !*** ./src/js/functions.js ***!\n \\*****************************/\n/*! exports provided: addWrapper, capitalizePrint, collectStyles, addHeader, cleanUp, isRawHTML */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addWrapper\", function() { return addWrapper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"capitalizePrint\", function() { return capitalizePrint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"collectStyles\", function() { return collectStyles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addHeader\", function() { return addHeader; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cleanUp\", function() { return cleanUp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isRawHTML\", function() { return isRawHTML; });\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modal */ \"./src/js/modal.js\");\n/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\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}\nfunction capitalizePrint(obj) {\n return obj.charAt(0).toUpperCase() + obj.slice(1);\n}\nfunction collectStyles(element, params) {\n var win = document.defaultView || window; // String variable to hold styling for each element\n\n var elementStyle = ''; // Loop over computed styles\n\n var styles = win.getComputedStyle(element, '');\n\n for (var key = 0; key < styles.length; 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 } // Print friendly defaults (deprecated)\n\n\n elementStyle += 'max-width: ' + params.maxWidth + 'px !important; font-size: ' + params.font_size + ' !important;';\n return elementStyle;\n}\n\nfunction targetStylesMatch(styles, value) {\n for (var i = 0; i < styles.length; i++) {\n if (_typeof(value) === 'object' && value.indexOf(styles[i]) !== -1) return true;\n }\n\n return false;\n}\n\nfunction addHeader(printElement, params) {\n // Create the header container div\n var headerContainer = document.createElement('div'); // Check if the header is text or raw html\n\n if (isRawHTML(params.header)) {\n headerContainer.innerHTML = params.header;\n } else {\n // Create header element\n var headerElement = document.createElement('h1'); // Create header text node\n\n var headerNode = document.createTextNode(params.header); // Build and style\n\n headerElement.appendChild(headerNode);\n headerElement.setAttribute('style', params.headerStyle);\n headerContainer.appendChild(headerElement);\n }\n\n printElement.insertBefore(headerContainer, printElement.childNodes[0]);\n}\nfunction cleanUp(params) {\n // If we are showing a feedback message to user, remove it\n if (params.showModal) _modal__WEBPACK_IMPORTED_MODULE_0__[\"default\"].close(); // Check for a finished loading hook function\n\n if (params.onLoadingEnd) params.onLoadingEnd(); // If preloading pdf files, clean blob url\n\n if (params.showModal || params.onLoadingStart) window.URL.revokeObjectURL(params.printable); // Run onPrintDialogClose callback\n\n var event = 'mouseover';\n\n if (_browser__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isChrome() || _browser__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isFirefox()) {\n // Ps.: Firefox will require an extra click in the document to fire the focus event.\n event = 'focus';\n }\n\n var handler = function handler() {\n // Make sure the event only happens once.\n window.removeEventListener(event, handler);\n params.onPrintDialogClose(); // Remove iframe from the DOM\n\n var iframe = document.getElementById(params.frameId);\n\n if (iframe) {\n iframe.remove();\n }\n };\n\n window.addEventListener(event, handler);\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/***/ }),\n\n/***/ \"./src/js/html.js\":\n/*!************************!*\\\n !*** ./src/js/html.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n print: function print(params, printFrame) {\n // Get the DOM printable element\n var printElement = isHtmlElement(params.printable) ? params.printable : document.getElementById(params.printable); // Check if the element exists\n\n if (!printElement) {\n window.console.error('Invalid HTML element id: ' + params.printable);\n return;\n } // Clone the target element including its children (if available)\n\n\n params.printableElement = cloneElement(printElement, params); // Add header\n\n if (params.header) {\n Object(_functions__WEBPACK_IMPORTED_MODULE_0__[\"addHeader\"])(params.printableElement, params);\n } // Print html element contents\n\n\n _print__WEBPACK_IMPORTED_MODULE_1__[\"default\"].send(params, printFrame);\n }\n});\n\nfunction cloneElement(element, params) {\n // Clone the main node (if not already inside the recursion process)\n var clone = element.cloneNode(); // Loop over and process the children elements / nodes (including text nodes)\n\n var childNodesArray = Array.prototype.slice.call(element.childNodes);\n\n for (var i = 0; i < childNodesArray.length; i++) {\n // Check if we are skipping the current element\n if (params.ignoreElements.indexOf(childNodesArray[i].id) !== -1) {\n continue;\n } // Clone the child element\n\n\n var clonedChild = cloneElement(childNodesArray[i], params); // Attach the cloned child to the cloned parent node\n\n clone.appendChild(clonedChild);\n } // Get all styling for print element (for nodes of type element only)\n\n\n if (params.scanStyles && element.nodeType === 1) {\n clone.setAttribute('style', Object(_functions__WEBPACK_IMPORTED_MODULE_0__[\"collectStyles\"])(element, params));\n } // Check if the element needs any state processing (copy user input data)\n\n\n switch (element.tagName) {\n case 'SELECT':\n // Copy the current selection value to its clone\n clone.value = element.value;\n break;\n\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\nfunction isHtmlElement(printable) {\n // Check if element is instance of HTMLElement or has nodeType === 1 (for elements in iframe)\n return _typeof(printable) === 'object' && printable && (printable instanceof HTMLElement || printable.nodeType === 1);\n}\n\n/***/ }),\n\n/***/ \"./src/js/image.js\":\n/*!*************************!*\\\n !*** ./src/js/image.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n\n\n\n/* harmony default export */ __webpack_exports__[\"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 } // Create printable element (container)\n\n\n params.printableElement = document.createElement('div'); // Create all image elements and append them to the printable container\n\n params.printable.forEach(function (src) {\n // Create the image element\n var img = document.createElement('img');\n img.setAttribute('style', params.imageStyle); // Set image src with the file url\n\n img.src = src; // The following block is for Firefox, which for some reason requires the image's src to be fully qualified in\n // order to print it\n\n if (_browser__WEBPACK_IMPORTED_MODULE_2__[\"default\"].isFirefox()) {\n var fullyQualifiedSrc = img.src;\n img.src = fullyQualifiedSrc;\n } // Create the image wrapper\n\n\n var imageWrapper = document.createElement('div'); // Append image to the wrapper element\n\n imageWrapper.appendChild(img); // Append wrapper to the printable element\n\n params.printableElement.appendChild(imageWrapper);\n }); // Check if we are adding a print header\n\n if (params.header) Object(_functions__WEBPACK_IMPORTED_MODULE_0__[\"addHeader\"])(params.printableElement, params); // Print image\n\n _print__WEBPACK_IMPORTED_MODULE_1__[\"default\"].send(params, printFrame);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/js/init.js\":\n/*!************************!*\\\n !*** ./src/js/init.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n/* harmony import */ var _modal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modal */ \"./src/js/modal.js\");\n/* harmony import */ var _pdf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pdf */ \"./src/js/pdf.js\");\n/* harmony import */ var _html__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./html */ \"./src/js/html.js\");\n/* harmony import */ var _raw_html__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./raw-html */ \"./src/js/raw-html.js\");\n/* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./image */ \"./src/js/image.js\");\n/* harmony import */ var _json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./json */ \"./src/js/json.js\");\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\nvar printTypes = ['pdf', 'html', 'image', 'json', 'raw-html'];\n/* harmony default export */ __webpack_exports__[\"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 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: function onPrintDialogClose() {},\n onIncompatibleBrowser: function onIncompatibleBrowser() {},\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 repeatTableHeader: true,\n css: null,\n style: null,\n scanStyles: true,\n base64: false,\n // Deprecated\n onPdfOpen: null,\n font: 'TimesNewRoman',\n font_size: '12pt',\n honorMarginPadding: true,\n honorColor: false,\n imageStyle: 'max-width: 100%;'\n }; // Check if a printable document or object was supplied\n\n var args = arguments[0];\n\n if (args === undefined) {\n throw new Error('printJS expects at least 1 attribute.');\n } // Process parameters\n\n\n switch (_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\n case 'object':\n params.printable = args.printable;\n params.fallbackPrintable = typeof args.fallbackPrintable !== 'undefined' ? args.fallbackPrintable : params.printable;\n params.fallbackPrintable = params.base64 ? \"data:application/pdf;base64,\".concat(params.fallbackPrintable) : params.fallbackPrintable;\n\n for (var k in params) {\n if (k === 'printable' || k === 'fallbackPrintable') continue;\n params[k] = typeof args[k] !== 'undefined' ? args[k] : params[k];\n }\n\n break;\n\n default:\n throw new Error('Unexpected argument type! Expected \"string\" or \"object\", got ' + _typeof(args));\n } // Validate printable\n\n\n if (!params.printable) throw new Error('Missing printable information.'); // Validate type\n\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 } // Check if we are showing a feedback message to the user (useful for large files)\n\n\n if (params.showModal) _modal__WEBPACK_IMPORTED_MODULE_1__[\"default\"].show(params); // Check for a print start hook function\n\n if (params.onLoadingStart) params.onLoadingStart(); // To prevent duplication and issues, remove any used printFrame from the DOM\n\n var usedFrame = document.getElementById(params.frameId);\n if (usedFrame) usedFrame.parentNode.removeChild(usedFrame); // Create a new iframe for the print job\n\n var printFrame = document.createElement('iframe');\n\n if (_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFirefox()) {\n // Set the iframe to be is visible on the page (guaranteed by fixed position) but hidden using opacity 0, because\n // this works in Firefox. The height needs to be sufficient for some part of the document other than the PDF\n // viewer's toolbar to be visible in the page\n printFrame.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0');\n } else {\n // Hide the iframe in other browsers\n printFrame.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0');\n } // Set iframe element id\n\n\n printFrame.setAttribute('id', params.frameId); // For non pdf printing, pass an html document string to srcdoc (force onload callback)\n\n if (params.type !== 'pdf') {\n printFrame.srcdoc = '' + params.documentTitle + ''; // Attach css files\n\n if (params.css) {\n // Add support for single file\n if (!Array.isArray(params.css)) params.css = [params.css]; // Create link tags for each css file\n\n params.css.forEach(function (file) {\n printFrame.srcdoc += '';\n });\n }\n\n printFrame.srcdoc += '';\n } // Check printable type\n\n\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 (_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isIE()) {\n try {\n console.info('Print.js doesn\\'t support PDF printing in Internet Explorer.');\n var win = window.open(params.fallbackPrintable, '_blank');\n win.focus();\n params.onIncompatibleBrowser();\n } catch (error) {\n params.onError(error);\n } finally {\n // Make sure there is no loading modal opened\n if (params.showModal) _modal__WEBPACK_IMPORTED_MODULE_1__[\"default\"].close();\n if (params.onLoadingEnd) params.onLoadingEnd();\n }\n } else {\n _pdf__WEBPACK_IMPORTED_MODULE_2__[\"default\"].print(params, printFrame);\n }\n\n break;\n\n case 'image':\n _image__WEBPACK_IMPORTED_MODULE_5__[\"default\"].print(params, printFrame);\n break;\n\n case 'html':\n _html__WEBPACK_IMPORTED_MODULE_3__[\"default\"].print(params, printFrame);\n break;\n\n case 'raw-html':\n _raw_html__WEBPACK_IMPORTED_MODULE_4__[\"default\"].print(params, printFrame);\n break;\n\n case 'json':\n _json__WEBPACK_IMPORTED_MODULE_6__[\"default\"].print(params, printFrame);\n break;\n }\n }\n});\n\n/***/ }),\n\n/***/ \"./src/js/json.js\":\n/*!************************!*\\\n !*** ./src/js/json.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/* harmony default export */ __webpack_exports__[\"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 } // Validate repeatTableHeader\n\n\n if (typeof params.repeatTableHeader !== 'boolean') {\n throw new Error('Invalid value for repeatTableHeader attribute (JSON).');\n } // Validate properties\n\n\n if (!params.properties || !Array.isArray(params.properties)) {\n throw new Error('Invalid properties array for your JSON data.');\n } // We will format the property objects to keep the JSON api compatible with older releases\n\n\n params.properties = params.properties.map(function (property) {\n return {\n field: _typeof(property) === 'object' ? property.field : property,\n displayName: _typeof(property) === 'object' ? property.displayName : property,\n columnSize: _typeof(property) === 'object' && property.columnSize ? property.columnSize + ';' : 100 / params.properties.length + '%;'\n };\n }); // Create a print container element\n\n params.printableElement = document.createElement('div'); // Check if we are adding a print header\n\n if (params.header) {\n Object(_functions__WEBPACK_IMPORTED_MODULE_0__[\"addHeader\"])(params.printableElement, params);\n } // Build the printable html data\n\n\n params.printableElement.innerHTML += jsonToHTML(params); // Print the json data\n\n _print__WEBPACK_IMPORTED_MODULE_1__[\"default\"].send(params, printFrame);\n }\n});\n\nfunction jsonToHTML(params) {\n // Get the row and column data\n var data = params.printable;\n var properties = params.properties; // Create a html table\n\n var htmlData = ''; // Check if the header should be repeated\n\n if (params.repeatTableHeader) {\n htmlData += '';\n } // Add the table header row\n\n\n htmlData += ''; // Add the table header columns\n\n for (var a = 0; a < properties.length; a++) {\n htmlData += '';\n } // Add the closing tag for the table header row\n\n\n htmlData += ''; // If the table header is marked as repeated, add the closing tag\n\n if (params.repeatTableHeader) {\n htmlData += '';\n } // Create the table body\n\n\n htmlData += ''; // Add the table data rows\n\n for (var i = 0; i < data.length; i++) {\n // Add the row starting tag\n htmlData += ''; // Print selected properties only\n\n for (var n = 0; n < properties.length; n++) {\n var stringData = data[i]; // Support nested objects\n\n var property = properties[n].field.split('.');\n\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 } // Add the row contents and styles\n\n\n htmlData += '';\n } // Add the row closing tag\n\n\n htmlData += '';\n } // Add the table and body closing tags\n\n\n htmlData += '
' + Object(_functions__WEBPACK_IMPORTED_MODULE_0__[\"capitalizePrint\"])(properties[a].displayName) + '
' + stringData + '
';\n return htmlData;\n}\n\n/***/ }),\n\n/***/ \"./src/js/modal.js\":\n/*!*************************!*\\\n !*** ./src/js/modal.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\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;'; // Create wrapper\n\n var printModal = document.createElement('div');\n printModal.setAttribute('style', modalStyle);\n printModal.setAttribute('id', 'printJS-Modal'); // Create content div\n\n var contentDiv = document.createElement('div');\n contentDiv.setAttribute('style', 'display:table-cell; vertical-align:middle; padding-bottom:100px;'); // Add close button (requires print.css)\n\n var closeButton = document.createElement('div');\n closeButton.setAttribute('class', 'printClose');\n closeButton.setAttribute('id', 'printClose');\n contentDiv.appendChild(closeButton); // Add spinner (requires print.css)\n\n var spinner = document.createElement('span');\n spinner.setAttribute('class', 'printSpinner');\n contentDiv.appendChild(spinner); // Add message\n\n var messageNode = document.createTextNode(params.modalMessage);\n contentDiv.appendChild(messageNode); // Add contentDiv to printModal\n\n printModal.appendChild(contentDiv); // Append print modal element to document body\n\n document.getElementsByTagName('body')[0].appendChild(printModal); // Add event listener to close button\n\n document.getElementById('printClose').addEventListener('click', function () {\n Modal.close();\n });\n },\n close: function close() {\n var printModal = document.getElementById('printJS-Modal');\n\n if (printModal) {\n printModal.parentNode.removeChild(printModal);\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Modal);\n\n/***/ }),\n\n/***/ \"./src/js/pdf.js\":\n/*!***********************!*\\\n !*** ./src/js/pdf.js ***!\n \\***********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"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 } // Format pdf url\n\n\n params.printable = /^(blob|http|\\/\\/)/i.test(params.printable) ? params.printable : window.location.origin + (params.printable.charAt(0) !== '/' ? '/' + params.printable : params.printable); // Get the file through a http request (Preload)\n\n var req = new window.XMLHttpRequest();\n req.responseType = 'arraybuffer';\n req.addEventListener('error', function () {\n Object(_functions__WEBPACK_IMPORTED_MODULE_1__[\"cleanUp\"])(params);\n params.onError(req.statusText, req); // Since we don't have a pdf document available, we will stop the print job\n });\n req.addEventListener('load', function () {\n // Check for errors\n if ([200, 201].indexOf(req.status) === -1) {\n Object(_functions__WEBPACK_IMPORTED_MODULE_1__[\"cleanUp\"])(params);\n params.onError(req.statusText, req); // Since we don't have a pdf document available, we will stop the print job\n\n return;\n } // Print requested document\n\n\n createBlobAndPrint(params, printFrame, req.response);\n });\n req.open('GET', params.printable, true);\n req.send();\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], {\n type: 'application/pdf'\n });\n localPdf = window.URL.createObjectURL(localPdf); // Set iframe src with pdf document url\n\n printFrame.setAttribute('src', localPdf);\n _print__WEBPACK_IMPORTED_MODULE_0__[\"default\"].send(params, printFrame);\n}\n\n/***/ }),\n\n/***/ \"./src/js/print.js\":\n/*!*************************!*\\\n !*** ./src/js/print.js ***!\n \\*************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./browser */ \"./src/js/browser.js\");\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./functions */ \"./src/js/functions.js\");\n\n\nvar Print = {\n send: function send(params, printFrame) {\n // Append iframe element to document body\n document.getElementsByTagName('body')[0].appendChild(printFrame); // Get iframe element\n\n var iframeElement = document.getElementById(params.frameId); // Wait for iframe to load all content\n\n iframeElement.onload = function () {\n if (params.type === 'pdf') {\n // Add a delay for Firefox. In my tests, 1000ms was sufficient but 100ms was not\n if (_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFirefox()) {\n setTimeout(function () {\n return performPrint(iframeElement, params);\n }, 1000);\n } else {\n performPrint(iframeElement, params);\n }\n\n return;\n } // Get iframe element document\n\n\n var printDocument = iframeElement.contentWindow || iframeElement.contentDocument;\n if (printDocument.document) printDocument = printDocument.document; // Append printable element to the iframe body\n\n printDocument.body.appendChild(params.printableElement); // Add custom style\n\n if (params.type !== 'pdf' && params.style) {\n // Create style element\n var style = document.createElement('style');\n style.innerHTML = params.style; // Append style element to iframe's head\n\n printDocument.head.appendChild(style);\n } // If printing images, wait for them to load inside the iframe\n\n\n var images = printDocument.getElementsByTagName('img');\n\n if (images.length > 0) {\n loadIframeImages(Array.from(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(); // If Edge or IE, try catch with execCommand\n\n if (_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isEdge() || _browser__WEBPACK_IMPORTED_MODULE_0__[\"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 if (_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"].isFirefox()) {\n // Move the iframe element off-screen and make it invisible\n iframeElement.style.visibility = 'hidden';\n iframeElement.style.left = '-1px';\n }\n\n Object(_functions__WEBPACK_IMPORTED_MODULE_1__[\"cleanUp\"])(params);\n }\n}\n\nfunction loadIframeImages(images) {\n var promises = images.map(function (image) {\n if (image.src && image.src !== window.location.href) {\n return loadIframeImage(image);\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\n pollImage();\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Print);\n\n/***/ }),\n\n/***/ \"./src/js/raw-html.js\":\n/*!****************************!*\\\n !*** ./src/js/raw-html.js ***!\n \\****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./print */ \"./src/js/print.js\");\n\n/* harmony default export */ __webpack_exports__[\"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%'); // Set our raw html as the printable element inner html content\n\n params.printableElement.innerHTML = params.printable; // Print html contents\n\n _print__WEBPACK_IMPORTED_MODULE_0__[\"default\"].send(params, printFrame);\n }\n});\n\n/***/ }),\n\n/***/ \"./src/sass/index.scss\":\n/*!*****************************!*\\\n !*** ./src/sass/index.scss ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ 0:\n/*!****************************!*\\\n !*** multi ./src/index.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ./src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=print.map"],"names":["root","factory","module","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","value","mode","ns","key","object","property","__webpack_exports__","_js_init__WEBPACK_IMPORTED_MODULE_1__","printJS","Browser","context","addWrapper","capitalizePrint","collectStyles","addHeader","cleanUp","isRawHTML","_modal__WEBPACK_IMPORTED_MODULE_0__","_browser__WEBPACK_IMPORTED_MODULE_1__","_typeof","obj","htmlData","params","bodyStyle","element","win","elementStyle","styles","targetStylesMatch","i","printElement","headerContainer","headerElement","headerNode","event","handler","iframe","raw","regexHtml","_functions__WEBPACK_IMPORTED_MODULE_0__","_print__WEBPACK_IMPORTED_MODULE_1__","printFrame","isHtmlElement","cloneElement","clone","childNodesArray","clonedChild","printable","_browser__WEBPACK_IMPORTED_MODULE_2__","src","img","fullyQualifiedSrc","imageWrapper","_browser__WEBPACK_IMPORTED_MODULE_0__","_modal__WEBPACK_IMPORTED_MODULE_1__","_pdf__WEBPACK_IMPORTED_MODULE_2__","_html__WEBPACK_IMPORTED_MODULE_3__","_raw_html__WEBPACK_IMPORTED_MODULE_4__","_image__WEBPACK_IMPORTED_MODULE_5__","_json__WEBPACK_IMPORTED_MODULE_6__","printTypes","error","args","k","usedFrame","file","jsonToHTML","data","properties","a","n","stringData","p","Modal","modalStyle","printModal","contentDiv","closeButton","spinner","messageNode","_print__WEBPACK_IMPORTED_MODULE_0__","_functions__WEBPACK_IMPORTED_MODULE_1__","bytesArray","c","createBlobAndPrint","req","localPdf","Print","iframeElement","performPrint","printDocument","style","images","loadIframeImages","promises","image","loadIframeImage","resolve","pollImage"],"mappings":"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","x_google_ignoreList":[0]}