{"version":3,"file":"print.mjs","sources":["../../../src/utils/print.js"],"sourcesContent":["const Print = function(dom, options) {\r\n  if (!(this instanceof Print)) return new Print(dom, options)\r\n  this.options = this.extend({\r\n    noPrint: '.no-print',\r\n  }, options)\r\n  if ((typeof dom) === 'string') {\r\n    try {\r\n      this.dom = document.querySelector(dom)\r\n    }\r\n    catch {\r\n      const createDom = document.createElement('div')\r\n      createDom.innerHTML = dom\r\n      this.dom = createDom\r\n    }\r\n  }\r\n  else {\r\n    this.isDOM(dom)\r\n    this.dom = this.isDOM(dom) ? dom : dom.$el\r\n  }\r\n  this.init()\r\n}\r\nPrint.prototype = {\r\n  init() {\r\n    const content = this.getStyle() + this.getHtml()\r\n    this.writeIframe(content)\r\n  },\r\n  extend(obj, obj2) {\r\n    for (const k in obj2) {\r\n      obj[k] = obj2[k]\r\n    }\r\n    return obj\r\n  },\r\n  getStyle() {\r\n    let str = ''\r\n    const styles = document.querySelectorAll('style,link')\r\n    for (let i = 0; i < styles.length; i++) {\r\n      str += styles[i].outerHTML\r\n    }\r\n    str += `<style>${ this.options.noPrint ? this.options.noPrint : '.no-print'\r\n\t\t\t }{display:none;}</style>`\r\n    str += '<style>html,body{background-color:#fff;}</style>'\r\n    return str\r\n  },\r\n  getHtml() {\r\n    const inputs = document.querySelectorAll('input')\r\n    const textareas = document.querySelectorAll('textarea')\r\n    const selects = document.querySelectorAll('select')\r\n    for (let k = 0; k < inputs.length; k++) {\r\n      if (inputs[k].type == 'checkbox' || inputs[k].type == 'radio') {\r\n        if (inputs[k].checked == true) {\r\n          inputs[k].setAttribute('checked', 'checked')\r\n        }\r\n        else {\r\n          inputs[k].removeAttribute('checked')\r\n        }\r\n      }\r\n      else if (inputs[k].type == 'text') {\r\n        inputs[k].setAttribute('value', inputs[k].value)\r\n      }\r\n      else {\r\n        inputs[k].setAttribute('value', inputs[k].value)\r\n      }\r\n    }\r\n    for (let k2 = 0; k2 < textareas.length; k2++) {\r\n      if (textareas[k2].type == 'textarea') {\r\n        textareas[k2].innerHTML = textareas[k2].value\r\n      }\r\n    }\r\n    for (let k3 = 0; k3 < selects.length; k3++) {\r\n      if (selects[k3].type == 'select-one') {\r\n        const child = selects[k3].children\r\n        for (const i in child) {\r\n          if (child[i].tagName == 'OPTION') {\r\n            if (child[i].selected == true) {\r\n              child[i].setAttribute('selected', 'selected')\r\n            }\r\n            else {\r\n              child[i].removeAttribute('selected')\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n    return this.dom.outerHTML\r\n  },\r\n  writeIframe(content) {\r\n    let w; let doc; const iframe = document.createElement('iframe')\r\n    const f = document.body.appendChild(iframe)\r\n    iframe.id = 'myIframe'\r\n    // iframe.style = \"position:absolute;width:0;height:0;top:-10px;left:-10px;\";\r\n    iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;')\r\n    w = f.contentWindow || f.contentDocument\r\n    doc = f.contentDocument || f.contentWindow.document\r\n    doc.open()\r\n    doc.write(content)\r\n    doc.close()\r\n    const _this = this\r\n    iframe.onload = function() {\r\n      _this.toPrint(w)\r\n      setTimeout(() => {\r\n        document.body.removeChild(iframe)\r\n      }, 100)\r\n    }\r\n  },\r\n  toPrint(frameWindow) {\r\n    try {\r\n      setTimeout(() => {\r\n        frameWindow.focus()\r\n        try {\r\n          if (!frameWindow.document.execCommand('print', false, null)) {\r\n            frameWindow.print()\r\n          }\r\n        }\r\n        catch (e) {\r\n          frameWindow.print()\r\n        }\r\n        frameWindow.close()\r\n      }, 10)\r\n    }\r\n    catch (err) {\r\n      console.log('err', err)\r\n    }\r\n  },\r\n  isDOM: (typeof HTMLElement === 'object')\r\n    ? function(obj) {\r\n      return obj instanceof HTMLElement\r\n    }\r\n    : function(obj) {\r\n      return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'\r\n    },\r\n}\r\nexport default Print\r\n"],"names":[],"mappings":"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"}