UNPKG

rith-print-js-updated

Version:

A tiny javascript library to help printing from the web.

1 lines 48.4 kB
{"version":3,"sources":["webpack://printJS/webpack/universalModuleDefinition","webpack://printJS/webpack/bootstrap","webpack://printJS/./src/js/browser.js","webpack://printJS/./src/js/modal.js","webpack://printJS/./src/js/functions.js","webpack://printJS/./src/js/print.js","webpack://printJS/./src/js/pdf.js","webpack://printJS/./src/js/html.js","webpack://printJS/./src/js/raw-html.js","webpack://printJS/./src/js/image.js","webpack://printJS/./src/js/json.js","webpack://printJS/./src/js/init.js","webpack://printJS/./src/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Browser","isFirefox","InstallTrigger","getFirefoxMajorVersion","userAgent","match","navigator","toLowerCase","split","map","x","parseInt","isIE","indexOf","document","documentMode","isEdge","StyleMedia","isChrome","arguments","length","undefined","chrome","isSafari","toString","HTMLElement","isIOSChrome","others","Modal","show","params","printModal","createElement","setAttribute","contentDiv","closeButton","appendChild","spinner","messageNode","createTextNode","modalMessage","getElementsByTagName","getElementById","addEventListener","close","parentNode","removeChild","capitalizePrint","obj","charAt","toUpperCase","slice","targetStylesMatch","styles","_typeof","addHeader","printElement","headerContainer","isRawHTML","header","innerHTML","headerElement","headerNode","headerStyle","insertBefore","childNodes","addFooter","footerContainer","footer","footerElement","footerNode","footerStyle","lastChild","cleanUp","showModal","onLoadingEnd","onLoadingStart","URL","revokeObjectURL","printable","event","handler","removeEventListener","onPrintDialogClose","iframe","frameId","frameRemoveDelay","setTimeout","remove","raw","RegExp","test","performPrint","iframeElement","focus","contentWindow","execCommand","e","print","error","onError","style","visibility","left","Print","send","printFrame","onload","type","printDocument","contentDocument","body","printableElement","head","images","promises","image","src","location","href","Promise","resolve","pollImage","naturalWidth","complete","loadIframeImage","all","loadIframeImages","Array","from","then","base64","bytesArray","Uint8Array","atob","charCodeAt","createBlobAndPrint","origin","req","XMLHttpRequest","responseType","statusText","status","response","open","data","localPdf","Blob","createObjectURL","nodeType","cloneElement","console","element","clone","cloneNode","childNodesArray","ignoreElements","id","clonedChild","scanStyles","elementStyle","defaultView","getComputedStyle","targetStyles","targetStyle","getPropertyValue","maxWidth","font_size","collectStyles","tagName","getContext","drawImage","constructor","forEach","img","imageStyle","fullyQualifiedSrc","imageWrapper","Error","repeatTableHeader","properties","isArray","field","displayName","columnSize","htmlData","a","gridHeaderStyle","stringData","gridStyle","jsonToHTML","iterator","printTypes","fallbackPrintable","onIncompatibleBrowser","documentTitle","css","onPdfOpen","font","honorMarginPadding","honorColor","args","log","encodeURI","k","concat","usedFrame","srcdoc","file","info","Pdf","Image","Html","RawHtml","Json","printJS"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAiB,QAAID,IAErBD,EAAc,QAAIC,GACnB,CATD,CASGK,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,CAAC,GAUX,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,OACf,CAyDA,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGAV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,GACvD,EAOAnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,UAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,E,kGClF/CC,EAAU,CAEdC,UAAW,WACT,MAAiC,oBAAnBC,cAChB,EACAC,uBAAwB,SAACC,GAEvB,IACMC,GAFND,EAAYA,GAAaE,UAAUF,WAEXG,cAAcF,MADV,kBAE5B,GAAIA,EACF,OAAOA,EAAM,GAAGG,MAAM,KAAKC,KAAI,SAAAC,GAAC,OAAIC,SAASD,EAAE,IAAE,EAErD,EAEAE,KAAM,WACJ,OAAgD,IAAzCN,UAAUF,UAAUS,QAAQ,WAAoBC,SAASC,YAClE,EAEAC,OAAQ,WACN,OAAQhB,EAAQY,UAAYhD,OAAOqD,UACrC,EAEAC,SAAU,WACR,SADgBC,UAAAC,OAAA,GAAAD,UAAA,KAAAE,UAAAF,UAAA,GAAGvD,QACF0D,MACnB,EAEAC,SAAU,WACR,OAAO7C,OAAOkB,UAAU4B,SAASrD,KAAKP,OAAO6D,aAAaZ,QAAQ,eAAiB,IACtB,IAAzDP,UAAUF,UAAUG,cAAcM,QAAQ,SAChD,EAEAa,YAAa,WACX,OAA+D,IAAxDpB,UAAUF,UAAUG,cAAcM,QAAQ,QACnD,EACAc,OAAQ,WACN,OAAO,IACT,GAGa3B,ICvCT4B,EAAQ,CACZC,KAAI,SAAEC,GAEJ,IAeMC,EAAajB,SAASkB,cAAc,OAC1CD,EAAWE,aAAa,QAhBL,yPAiBnBF,EAAWE,aAAa,KAAM,iBAG9B,IAAMC,EAAapB,SAASkB,cAAc,OAC1CE,EAAWD,aAAa,QAAS,oEAGjC,IAAME,EAAcrB,SAASkB,cAAc,OAC3CG,EAAYF,aAAa,QAAS,cAClCE,EAAYF,aAAa,KAAM,cAC/BC,EAAWE,YAAYD,GAGvB,IAAME,EAAUvB,SAASkB,cAAc,QACvCK,EAAQJ,aAAa,QAAS,gBAC9BC,EAAWE,YAAYC,GAGvB,IAAMC,EAAcxB,SAASyB,eAAeT,EAAOU,cACnDN,EAAWE,YAAYE,GAGvBP,EAAWK,YAAYF,GAGvBpB,SAAS2B,qBAAqB,QAAQ,GAAGL,YAAYL,GAGrDjB,SAAS4B,eAAe,cAAcC,iBAAiB,SAAS,WAC9Df,EAAMgB,OACR,GACF,EACAA,MAAK,WACH,IAAMb,EAAajB,SAAS4B,eAAe,iBAEvCX,GACFA,EAAWc,WAAWC,YAAYf,EAEtC,GAGaH,I,sOCrDR,SAASmB,EAAiBC,GAC/B,OAAOA,EAAIC,OAAO,GAAGC,cAAgBF,EAAIG,MAAM,EACjD,CAwBA,SAASC,EAAmBC,EAAQpE,GAClC,IAAK,IAAIjB,EAAI,EAAGA,EAAIqF,EAAOjC,OAAQpD,IACjC,GAAqB,WAAjBsF,EAAOrE,KAAoD,IAA9BA,EAAM4B,QAAQwC,EAAOrF,IAAY,OAAO,EAE3E,OAAO,CACT,CAEO,SAASuF,EAAWC,EAAc1B,GAEvC,IAAM2B,EAAkB3C,SAASkB,cAAc,OAG/C,GAAI0B,EAAU5B,EAAO6B,QACnBF,EAAgBG,UAAY9B,EAAO6B,WAC9B,CAEL,IAAME,EAAgB/C,SAASkB,cAAc,MAGvC8B,EAAahD,SAASyB,eAAeT,EAAO6B,QAGlDE,EAAczB,YAAY0B,GAC1BD,EAAc5B,aAAa,QAASH,EAAOiC,aAC3CN,EAAgBrB,YAAYyB,EAC9B,CAEAL,EAAaQ,aAAaP,EAAiBD,EAAaS,WAAW,GACrE,CAEO,SAASC,EAAWV,EAAc1B,GAEvC,IAAIqC,EAAkBrD,SAASkB,cAAc,OAG7C,GAAI0B,EAAU5B,EAAOsC,QACnBD,EAAgBP,UAAY9B,EAAOsC,WAC9B,CAEL,IAAIC,EAAgBvD,SAASkB,cAAc,MAGvCsC,EAAaxD,SAASyB,eAAeT,EAAOsC,QAGhDC,EAAcjC,YAAYkC,GAC1BD,EAAcpC,aAAa,QAASH,EAAOyC,aAC3CJ,EAAgB/B,YAAYiC,EAC9B,CAEAb,EAAaQ,aAAaG,EAAiBX,EAAaS,WAAWO,UACrE,CAEO,SAASC,EAAS3C,GAEnBA,EAAO4C,WAAW9C,EAAMgB,QAGxBd,EAAO6C,cAAc7C,EAAO6C,gBAG5B7C,EAAO4C,WAAa5C,EAAO8C,iBAAgBhH,OAAOiH,IAAIC,gBAAgBhD,EAAOiD,WAGjF,IAAIC,EAAQ,aAERhF,EAAQkB,YAAclB,EAAQC,eAEhC+E,EAAQ,SAyBVpH,OAAO+E,iBAAiBqC,GAtBR,SAAVC,IAEJrH,OAAOsH,oBAAoBF,EAAOC,GAElCnD,EAAOqD,qBAGP,IAAMC,EAAStE,SAAS4B,eAAeZ,EAAOuD,SAE1CD,IACEtD,EAAOwD,iBACTC,YAAW,WACTH,EAAOI,QACT,GACA1D,EAAOwD,kBAGPF,EAAOI,SAGb,GAGF,CAEO,SAAS9B,EAAW+B,GAEzB,OADkB,IAAIC,OAAO,+CACZC,KAAKF,EACxB,CCjFA,SAASG,EAAcC,EAAe/D,GACpC,IAIE,GAHA+D,EAAcC,QAGV9F,EAAQgB,UAAYhB,EAAQY,OAC9B,IACEiF,EAAcE,cAAcjF,SAASkF,YAAY,SAAS,EAAO,KACnE,CAAE,MAAOC,GACPV,YAAW,WACTM,EAAcE,cAAcG,OAC9B,GAAE,IACJ,MAGAX,YAAW,WACTM,EAAcE,cAAcG,OAC9B,GAAE,IAEN,CAAE,MAAOC,GACPrE,EAAOsE,QAAQD,EACjB,CAAE,SACKnG,EAAQC,aAAeD,EAAQG,yBAA2B,KAAQH,EAAQuB,cAE7EsE,EAAcQ,MAAMC,WAAa,SACjCT,EAAcQ,MAAME,KAAO,QAG7B9B,EAAQ3C,EACV,CACF,CAuBe0E,MAtGD,CACZC,KAAM,SAAC3E,EAAQ4E,GAEb5F,SAAS2B,qBAAqB,QAAQ,GAAGL,YAAYsE,GAGrD,IAAMb,EAAgB/E,SAAS4B,eAAeZ,EAAOuD,SAGrDQ,EAAcc,OAAS,WACrB,GAAoB,QAAhB7E,EAAO8E,KAAX,CAWA,IAAIC,EAAiBhB,EAAcE,eAAiBF,EAAciB,gBAOlE,GANID,EAAc/F,WAAU+F,EAAgBA,EAAc/F,UAG1D+F,EAAcE,KAAK3E,YAAYN,EAAOkF,kBAGlB,QAAhBlF,EAAO8E,MAAkB9E,EAAOuE,MAAO,CAEzC,IAAMA,EAAQvF,SAASkB,cAAc,SACrCqE,EAAMzC,UAAY9B,EAAOuE,MAGzBQ,EAAcI,KAAK7E,YAAYiE,EACjC,CAGA,IAAMa,EAASL,EAAcpE,qBAAqB,OAE9CyE,EAAO9F,OAAS,EAyC1B,SAA2B8F,GACzB,IAAMC,EAAWD,EAAOzG,KAAI,SAAA2G,GAC1B,GAAIA,EAAMC,KAAOD,EAAMC,MAAQzJ,OAAO0J,SAASC,KAC7C,OAON,SAA0BH,GACxB,OAAO,IAAII,SAAQ,SAAAC,IACC,SAAZC,IACHN,GAAuC,oBAAvBA,EAAMO,cAAuD,IAAvBP,EAAMO,cAAuBP,EAAMQ,SAEtFH,IADAlC,WAAWmC,EAAW,IAE5B,EACAA,EACF,GACF,CAhBaG,CAAgBT,EAE3B,IAEA,OAAOI,QAAQM,IAAIX,EACrB,CAhDQY,CAAiBC,MAAMC,KAAKf,IAASgB,MAAK,kBAAMtC,EAAaC,EAAe/D,EAAO,IAEnF8D,EAAaC,EAAe/D,EAzB9B,MANO9B,EAAQC,aAAeD,EAAQG,yBAA2B,KAAQH,EAAQuB,WAC7EgE,YAAW,kBAAMK,EAAaC,EAAe/D,EAAO,GAAE,KAEtD8D,EAAaC,EAAe/D,EA8BlC,CACF,GC9Ca,EACN,SAACA,EAAQ4E,GAEd,GAAI5E,EAAOqG,OAAX,EAC2C,IAAnCrG,EAAOiD,UAAUlE,QAAQ,OAEzBiB,EAAOiD,UAAYjD,EAAOiD,UAAUvE,MAAM,KAAK,IAErD,IAAM4H,EAAaC,WAAWJ,KAAKK,KAAKxG,EAAOiD,YAAY,SAAA1G,GAAC,OAAIA,EAAEkK,WAAW,EAAE,IAC/EC,EAAmB1G,EAAQ4E,EAAY0B,EAEzC,KARA,CAWAtG,EAAOiD,UAAY,qBAAqBY,KAAK7D,EAAOiD,WAChDjD,EAAOiD,UACPnH,OAAO0J,SAASmB,QAAyC,MAA/B3G,EAAOiD,UAAU9B,OAAO,GAAa,IAAMnB,EAAOiD,UAAYjD,EAAOiD,WAGnG,IAAM2D,EAAM,IAAI9K,OAAO+K,eACvBD,EAAIE,aAAe,cAEnBF,EAAI/F,iBAAiB,SAAS,WAC5B8B,EAAQ3C,GACRA,EAAOsE,QAAQsC,EAAIG,WAAYH,EAGjC,IAEAA,EAAI/F,iBAAiB,QAAQ,WAE3B,IAAwC,IAApC,CAAC,IAAK,KAAK9B,QAAQ6H,EAAII,QAKzB,OAJArE,EAAQ3C,QACRA,EAAOsE,QAAQsC,EAAIG,WAAYH,GAOjCF,EAAmB1G,EAAQ4E,EAAYgC,EAAIK,SAC7C,IAEAL,EAAIM,KAAK,MAAOlH,EAAOiD,WAAW,GAClC2D,EAAIjC,MAjCJ,CAkCF,EAGF,SAAS+B,EAAoB1G,EAAQ4E,EAAYuC,GAE/C,IAAIC,EAAW,IAAItL,OAAOuL,KAAK,CAACF,GAAO,CAAErC,KAAM,oBAC/CsC,EAAWtL,OAAOiH,IAAIuE,gBAAgBF,GAGtCxC,EAAWzE,aAAa,MAAOiH,GAE/B1C,EAAMC,KAAK3E,EAAQ4E,EACrB,C,sOCzDe,MACN,SAAC5E,EAAQ4E,GAEd,IAiEoB3B,EAjEdvB,EAmEoB,WAArBF,EAFeyB,EAjEejD,EAAOiD,YAmEJA,IAAcA,aAAqBtD,aAAsC,IAAvBsD,EAAUsE,UAnE3CvH,EAAOiD,UAAYjE,SAAS4B,eAAeZ,EAAOiD,WAGpGvB,GAML1B,EAAOkF,iBAAmBsC,EAAa9F,EAAc1B,GAGjDA,EAAO6B,QACTJ,EAAUzB,EAAOkF,iBAAkBlF,GAIjCA,EAAOsC,QACTF,EAAUpC,EAAOkF,iBAAkBlF,GAIrC0E,EAAMC,KAAK3E,EAAQ4E,IAlBjB9I,OAAO2L,QAAQpD,MAAM,4BAA8BrE,EAAOiD,UAmB9D,EAGF,SAASuE,EAAcE,EAAS1H,GAM9B,IAJA,IAAM2H,EAAQD,EAAQE,YAGhBC,EAAkB3B,MAAMpI,UAAUuD,MAAMhF,KAAKqL,EAAQvF,YAClDjG,EAAI,EAAGA,EAAI2L,EAAgBvI,OAAQpD,IAE1C,IAA8D,IAA1D8D,EAAO8H,eAAe/I,QAAQ8I,EAAgB3L,GAAG6L,IAArD,CAKA,IAAMC,EAAcR,EAAaK,EAAgB3L,GAAI8D,GAGrD2H,EAAMrH,YAAY0H,EANlB,CAeF,OALIhI,EAAOiI,YAAmC,IAArBP,EAAQH,UAC/BI,EAAMxH,aAAa,QHzChB,SAAwBuH,EAAS1H,GAStC,IARA,IAGIkI,EAAe,GAGb3G,GANMvC,SAASmJ,aAAerM,QAMjBsM,iBAAiBV,EAAS,IAEpCjK,EAAM,EAAGA,EAAM8D,EAAOjC,OAAQ7B,MAEK,IAAtCuC,EAAOqI,aAAatJ,QAAQ,OAA4D,IAA7CiB,EAAOsI,YAAYvJ,QAAQwC,EAAO9D,KAAgB6D,EAAkBtB,EAAOqI,aAAc9G,EAAO9D,MACzI8D,EAAOgH,iBAAiBhH,EAAO9D,MAAOyK,GAAgB3G,EAAO9D,GAAO,IAAM8D,EAAOgH,iBAAiBhH,EAAO9D,IAAQ,KAOzH,OAFAyK,EAAgB,cAAgBlI,EAAOwI,SAAW,6BAA+BxI,EAAOyI,UAAY,cAGtG,CGqBgCC,CAAchB,EAAS1H,IAI7C0H,EAAQiB,SACd,IAAK,SAEHhB,EAAMxK,MAAQuK,EAAQvK,MACtB,MACF,IAAK,SAEHwK,EAAMiB,WAAW,MAAMC,UAAUnB,EAAS,EAAG,GAIjD,OAAOC,CACT,CClEe,MACN,SAAC3H,EAAQ4E,GAEd5E,EAAOkF,iBAAmBlG,SAASkB,cAAc,OACjDF,EAAOkF,iBAAiB/E,aAAa,QAAS,cAG9CH,EAAOkF,iBAAiBpD,UAAY9B,EAAOiD,UAGvCjD,EAAO6B,QACTJ,EAAUzB,EAAOkF,iBAAkBlF,GAIjCA,EAAOsC,QACTF,EAAUpC,EAAOkF,iBAAkBlF,GAIrC0E,EAAMC,KAAK3E,EAAQ4E,EACrB,ECpBa,EACN,SAAC5E,EAAQ4E,GAEV5E,EAAOiD,UAAU6F,cAAgB5C,QAEnClG,EAAOiD,UAAY,CAACjD,EAAOiD,YAI7BjD,EAAOkF,iBAAmBlG,SAASkB,cAAc,OAGjDF,EAAOiD,UAAU8F,SAAQ,SAAAxD,GAEvB,IAAMyD,EAAMhK,SAASkB,cAAc,OAQnC,GAPA8I,EAAI7I,aAAa,QAASH,EAAOiJ,YAGjCD,EAAIzD,IAAMA,EAINrH,EAAQC,YAAa,CACvB,IAAM+K,EAAoBF,EAAIzD,IAC9ByD,EAAIzD,IAAM2D,CACZ,CAGA,IAAMC,EAAenK,SAASkB,cAAc,OAG5CiJ,EAAa7I,YAAY0I,GAGzBhJ,EAAOkF,iBAAiB5E,YAAY6I,EACtC,IAGInJ,EAAO6B,QAAQJ,EAAUzB,EAAOkF,iBAAkBlF,GAGlDA,EAAOsC,QACTF,EAAUpC,EAAOkF,iBAAkBlF,GAIrC0E,EAAMC,KAAK3E,EAAQ4E,EACrB,E,sOChDa,MACN,SAAC5E,EAAQ4E,GAEd,GAAgC,WAA5BpD,EAAOxB,EAAOiD,WAChB,MAAM,IAAImG,MAAM,0CAIlB,GAAwC,kBAA7BpJ,EAAOqJ,kBAChB,MAAM,IAAID,MAAM,yDAIlB,IAAKpJ,EAAOsJ,aAAepD,MAAMqD,QAAQvJ,EAAOsJ,YAC9C,MAAM,IAAIF,MAAM,gDAIlBpJ,EAAOsJ,WAAatJ,EAAOsJ,WAAW3K,KAAI,SAAAd,GACxC,MAAO,CACL2L,MAA2B,WAApBhI,EAAO3D,GAAwBA,EAAS2L,MAAQ3L,EACvD4L,YAAiC,WAApBjI,EAAO3D,GAAwBA,EAAS4L,YAAc5L,EACnE6L,WAAgC,WAApBlI,EAAO3D,IAAyBA,EAAS6L,WAAa7L,EAAS6L,WAAa,IAAM,IAAM1J,EAAOsJ,WAAWhK,OAAS,KAEnI,IAGAU,EAAOkF,iBAAmBlG,SAASkB,cAAc,OAG7CF,EAAO6B,QACTJ,EAAUzB,EAAOkF,iBAAkBlF,GAIrCA,EAAOkF,iBAAiBpD,WAY5B,SAAqB9B,GAEnB,IAAMmH,EAAOnH,EAAOiD,UACdqG,EAAatJ,EAAOsJ,WAGtBK,EAAW,0DAGX3J,EAAOqJ,oBACTM,GAAY,WAIdA,GAAY,OAGZ,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAWhK,OAAQsK,IACrCD,GAAY,oBAAsBL,EAAWM,GAAGF,WAAa,IAAM1J,EAAO6J,gBAAkB,KAAO5I,EAAgBqI,EAAWM,GAAGH,aAAe,QAIlJE,GAAY,QAGR3J,EAAOqJ,oBACTM,GAAY,YAIdA,GAAY,UAGZ,IAAK,IAAIzN,EAAI,EAAGA,EAAIiL,EAAK7H,OAAQpD,IAAK,CAEpCyN,GAAY,OAGZ,IAAK,IAAIhM,EAAI,EAAGA,EAAI2L,EAAWhK,OAAQ3B,IAAK,CAC1C,IAAImM,EAAa3C,EAAKjL,GAGhB2B,EAAWyL,EAAW3L,GAAG6L,MAAM9K,MAAM,KAC3C,GAAIb,EAASyB,OAAS,EACpB,IAAK,IAAItB,EAAI,EAAGA,EAAIH,EAASyB,OAAQtB,IACnC8L,EAAaA,EAAWjM,EAASG,SAGnC8L,EAAaA,EAAWR,EAAW3L,GAAG6L,OAIxCG,GAAY,oBAAsBL,EAAW3L,GAAG+L,WAAa1J,EAAO+J,UAAY,KAAOD,EAAa,OACtG,CAGAH,GAAY,OACd,CAKA,OAFAA,GAAY,kBAGd,CA3EyCK,CAAWhK,GAG5CA,EAAOsC,QACTF,EAAUpC,EAAOkF,iBAAkBlF,GAIrC0E,EAAMC,KAAK3E,EAAQ4E,EACrB,EC/CU,SAAApD,EAAAN,GAAA,OAAAM,EAAA,mBAAAvE,QAAA,iBAAAA,OAAAgN,SAAA,SAAA/I,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAjE,QAAAiE,EAAA4H,cAAA7L,QAAAiE,IAAAjE,OAAAa,UAAA,gBAAAoD,CAAA,EAAAM,EAAAN,EAAA,CAUZ,IAAMgJ,EAAa,CAAC,MAAO,OAAQ,QAAS,OAAQ,YAErC,EACT,WACF,IAAMlK,EAAS,CACbiD,UAAW,KACXkH,kBAAmB,KACnBrF,KAAM,MACNjD,OAAQ,KACRI,YAAa,oBACbK,OAAQ,KACRG,YAAa,oBACb+F,SAAU,IACVc,WAAY,KACZO,gBAAiB,8DACjBE,UAAW,oDACXnH,WAAW,EACX0B,QAAS,SAACD,GAAY,MAAMA,CAAM,EAClCvB,eAAgB,KAChBD,aAAc,KACdQ,mBAAoB,WAAO,EAC3B+G,sBAAuB,WAAO,EAC9B1J,aAAc,yBACd6C,QAAS,UACTC,iBAAkB,KAClB0B,iBAAkB,KAClBmF,cAAe,WACf/B,YAAa,CAAC,QAAS,UAAW,QAAS,YAAa,SAAU,aAAc,cAChFD,aAAc,CAAC,SAAU,MAAO,QAAS,mBACzCP,eAAgB,GAChBuB,mBAAmB,EACnBiB,IAAK,KACL/F,MAAO,KACP0D,YAAY,EACZ5B,QAAQ,EAGRkE,UAAW,KACXC,KAAM,gBACN/B,UAAW,OACXgC,oBAAoB,EACpBC,YAAY,EACZzB,WAAY,oBAIR0B,EAAOtL,UAAU,GACvB,GAAIsL,IAASpL,UACX,MAAM,IAAI6J,MAAM,yCAMlB,OAFA3B,QAAQmD,IAAI,OAAQD,GAEpBnJ,EAAemJ,IACb,IAAK,SACH3K,EAAOiD,UAAY4H,UAAUF,GAC7B3K,EAAOmK,kBAAoBnK,EAAOiD,UAClCjD,EAAO8E,KAAOzF,UAAU,IAAMW,EAAO8E,KACrC,MACF,IAAK,SAIH,IAAK,IAAIgG,KAHT9K,EAAOiD,UAAY0H,EAAK1H,UACxBjD,EAAOmK,kBAAsD,oBAA3BQ,EAAKR,kBAAoCQ,EAAKR,kBAAoBnK,EAAOiD,UAC3GjD,EAAOmK,kBAAoBnK,EAAOqG,OAAS,+BAAH0E,OAAkC/K,EAAOmK,mBAAsBnK,EAAOmK,kBAChGnK,EACF,cAAN8K,GAA2B,sBAANA,IAEzB9K,EAAO8K,GAAwB,oBAAZH,EAAKG,GAAqBH,EAAKG,GAAK9K,EAAO8K,IAEhE,MACF,QACE,MAAM,IAAI1B,MAAM,gEAA+D5H,EAAUmJ,IAI7F,IAAK3K,EAAOiD,UAAW,MAAM,IAAImG,MAAM,kCAGvC,IAAKpJ,EAAO8E,MAA+B,iBAAhB9E,EAAO8E,OAAwE,IAAnDoF,EAAWnL,QAAQiB,EAAO8E,KAAKrG,eACpF,MAAM,IAAI2K,MAAM,uEAIdpJ,EAAO4C,WAAW9C,EAAMC,KAAKC,GAG7BA,EAAO8C,gBAAgB9C,EAAO8C,iBAGlC,IAAMkI,EAAYhM,SAAS4B,eAAeZ,EAAOuD,SAE7CyH,GAAWA,EAAUjK,WAAWC,YAAYgK,GAGhD,IAAMpG,EAAa5F,SAASkB,cAAc,UAkC1C,OAhCIhC,EAAQC,YAIVyG,EAAWzE,aAAa,QAAS,mHAGjCyE,EAAWzE,aAAa,QAAS,0EAInCyE,EAAWzE,aAAa,KAAMH,EAAOuD,SAGjB,QAAhBvD,EAAO8E,OACTF,EAAWqG,OAAS,sBAAwBjL,EAAOqK,cAAgB,WAG/DrK,EAAOsK,MAEJpE,MAAMqD,QAAQvJ,EAAOsK,OAAMtK,EAAOsK,IAAM,CAACtK,EAAOsK,MAGrDtK,EAAOsK,IAAIvB,SAAQ,SAAAmC,GACjBtG,EAAWqG,QAAU,gCAAkCC,EAAO,IAChE,KAGFtG,EAAWqG,QAAU,+BAIfjL,EAAO8E,MACb,IAAK,MAEH,GAAI5G,EAAQY,OACV,IACE2I,QAAQ0D,KAAK,+DACDrP,OAAOoL,KAAKlH,EAAOmK,kBAAmB,UAC9CnG,QACJhE,EAAOoK,uBACT,CAAE,MAAO/F,GACPrE,EAAOsE,QAAQD,EACjB,CAAE,QAEIrE,EAAO4C,WAAW9C,EAAMgB,QACxBd,EAAO6C,cAAc7C,EAAO6C,cAClC,MAEAuI,EAAUpL,EAAQ4E,GAEpB,MACF,IAAK,QACHyG,EAAYrL,EAAQ4E,GACpB,MACF,IAAK,OACH0G,EAAWtL,EAAQ4E,GACnB,MACF,IAAK,WACH2G,EAAcvL,EAAQ4E,GACtB,MACF,IAAK,OACH4G,EAAWxL,EAAQ4E,GAGzB,ECxKI6G,EAAUrH,EAEM,oBAAXtI,SACTA,OAAO2P,QAAUA,GAGJA,c","file":"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 "," \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","const Browser = {\r\n // Firefox 1.0+\r\n isFirefox: () => {\r\n return typeof InstallTrigger !== 'undefined'\r\n },\r\n getFirefoxMajorVersion: (userAgent) => {\r\n userAgent = userAgent || navigator.userAgent\r\n const firefoxVersionRegex = /firefox\\/(\\S+)/\r\n const match = userAgent.toLowerCase().match(firefoxVersionRegex)\r\n if (match) {\r\n return match[1].split('.').map(x => parseInt(x))[0]\r\n }\r\n },\r\n // Internet Explorer 6-11\r\n isIE: () => {\r\n return navigator.userAgent.indexOf('MSIE') !== -1 || !!document.documentMode\r\n },\r\n // Edge 20+\r\n isEdge: () => {\r\n return !Browser.isIE() && !!window.StyleMedia\r\n },\r\n // Chrome 1+\r\n isChrome: (context = window) => {\r\n return !!context.chrome\r\n },\r\n // At least Safari 3+: \"[object HTMLElementConstructor]\"\r\n isSafari: () => {\r\n return Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0 ||\r\n navigator.userAgent.toLowerCase().indexOf('safari') !== -1\r\n },\r\n // IOS Chrome\r\n isIOSChrome: () => {\r\n return navigator.userAgent.toLowerCase().indexOf('crios') !== -1\r\n },\r\n others: () => {\r\n return null\r\n }\r\n}\r\n\r\nexport default Browser\r\n","const Modal = {\r\n show (params) {\r\n // Build modal\r\n const modalStyle = 'font-family:sans-serif; ' +\r\n 'display:table; ' +\r\n 'text-align:center; ' +\r\n 'font-weight:300; ' +\r\n 'font-size:30px; ' +\r\n 'left:0; top:0;' +\r\n 'position:fixed; ' +\r\n 'z-index: 9990;' +\r\n 'color: #0460B5; ' +\r\n 'width: 100%; ' +\r\n 'height: 100%; ' +\r\n 'background-color:rgba(255,255,255,.9);' +\r\n 'transition: opacity .3s ease;'\r\n\r\n // Create wrapper\r\n const printModal = document.createElement('div')\r\n printModal.setAttribute('style', modalStyle)\r\n printModal.setAttribute('id', 'printJS-Modal')\r\n\r\n // Create content div\r\n const contentDiv = document.createElement('div')\r\n contentDiv.setAttribute('style', 'display:table-cell; vertical-align:middle; padding-bottom:100px;')\r\n\r\n // Add close button (requires print.css)\r\n const closeButton = document.createElement('div')\r\n closeButton.setAttribute('class', 'printClose')\r\n closeButton.setAttribute('id', 'printClose')\r\n contentDiv.appendChild(closeButton)\r\n\r\n // Add spinner (requires print.css)\r\n const spinner = document.createElement('span')\r\n spinner.setAttribute('class', 'printSpinner')\r\n contentDiv.appendChild(spinner)\r\n\r\n // Add message\r\n const messageNode = document.createTextNode(params.modalMessage)\r\n contentDiv.appendChild(messageNode)\r\n\r\n // Add contentDiv to printModal\r\n printModal.appendChild(contentDiv)\r\n\r\n // Append print modal element to document body\r\n document.getElementsByTagName('body')[0].appendChild(printModal)\r\n\r\n // Add event listener to close button\r\n document.getElementById('printClose').addEventListener('click', function () {\r\n Modal.close()\r\n })\r\n },\r\n close () {\r\n const printModal = document.getElementById('printJS-Modal')\r\n\r\n if (printModal) {\r\n printModal.parentNode.removeChild(printModal)\r\n }\r\n }\r\n}\r\n\r\nexport default Modal\r\n","import Modal from './modal'\r\nimport Browser from './browser'\r\n\r\nexport function addWrapper (htmlData, params) {\r\n const bodyStyle = 'font-family:' + params.font + ' !important; font-size: ' + params.font_size + ' !important; width:100%;'\r\n return '<div style=\"' + bodyStyle + '\">' + htmlData + '</div>'\r\n}\r\n\r\nexport function capitalizePrint (obj) {\r\n return obj.charAt(0).toUpperCase() + obj.slice(1)\r\n}\r\n\r\nexport function collectStyles (element, params) {\r\n const win = document.defaultView || window\r\n\r\n // String variable to hold styling for each element\r\n let elementStyle = ''\r\n\r\n // Loop over computed styles\r\n const styles = win.getComputedStyle(element, '')\r\n\r\n for (let key = 0; key < styles.length; key++) {\r\n // Check if style should be processed\r\n if (params.targetStyles.indexOf('*') !== -1 || params.targetStyle.indexOf(styles[key]) !== -1 || targetStylesMatch(params.targetStyles, styles[key])) {\r\n if (styles.getPropertyValue(styles[key])) elementStyle += styles[key] + ':' + styles.getPropertyValue(styles[key]) + ';'\r\n }\r\n }\r\n\r\n // Print friendly defaults (deprecated)\r\n elementStyle += 'max-width: ' + params.maxWidth + 'px !important; font-size: ' + params.font_size + ' !important;'\r\n\r\n return elementStyle\r\n}\r\n\r\nfunction targetStylesMatch (styles, value) {\r\n for (let i = 0; i < styles.length; i++) {\r\n if (typeof value === 'object' && value.indexOf(styles[i]) !== -1) return true\r\n }\r\n return false\r\n}\r\n\r\nexport function addHeader (printElement, params) {\r\n // Create the header container div\r\n const headerContainer = document.createElement('div')\r\n\r\n // Check if the header is text or raw html\r\n if (isRawHTML(params.header)) {\r\n headerContainer.innerHTML = params.header\r\n } else {\r\n // Create header element\r\n const headerElement = document.createElement('h1')\r\n\r\n // Create header text node\r\n const headerNode = document.createTextNode(params.header)\r\n\r\n // Build and style\r\n headerElement.appendChild(headerNode)\r\n headerElement.setAttribute('style', params.headerStyle)\r\n headerContainer.appendChild(headerElement)\r\n }\r\n\r\n printElement.insertBefore(headerContainer, printElement.childNodes[0])\r\n}\r\n\r\nexport function addFooter (printElement, params) {\r\n // Create the footer container div\r\n let footerContainer = document.createElement('div')\r\n\r\n // Check if the footer is text or raw html\r\n if (isRawHTML(params.footer)) {\r\n footerContainer.innerHTML = params.footer\r\n } else {\r\n // Create footer element\r\n let footerElement = document.createElement('h1')\r\n\r\n // Create footer text node\r\n let footerNode = document.createTextNode(params.footer)\r\n\r\n // Build and style\r\n footerElement.appendChild(footerNode)\r\n footerElement.setAttribute('style', params.footerStyle)\r\n footerContainer.appendChild(footerElement)\r\n }\r\n\r\n printElement.insertBefore(footerContainer, printElement.childNodes.lastChild)\r\n}\r\n\r\nexport function cleanUp (params) {\r\n // If we are showing a feedback message to user, remove it\r\n if (params.showModal) Modal.close()\r\n\r\n // Check for a finished loading hook function\r\n if (params.onLoadingEnd) params.onLoadingEnd()\r\n\r\n // If preloading pdf files, clean blob url\r\n if (params.showModal || params.onLoadingStart) window.URL.revokeObjectURL(params.printable)\r\n\r\n // Run onPrintDialogClose callback\r\n let event = 'mouseover'\r\n\r\n if (Browser.isChrome() || Browser.isFirefox()) {\r\n // Ps.: Firefox will require an extra click in the document to fire the focus event.\r\n event = 'focus'\r\n }\r\n\r\n const handler = () => {\r\n // Make sure the event only happens once.\r\n window.removeEventListener(event, handler)\r\n\r\n params.onPrintDialogClose()\r\n\r\n // Remove iframe from the DOM\r\n const iframe = document.getElementById(params.frameId)\r\n\r\n if (iframe) {\r\n if (params.frameRemoveDelay) {\r\n setTimeout(() => {\r\n iframe.remove()\r\n },\r\n params.frameRemoveDelay\r\n )\r\n } else {\r\n iframe.remove()\r\n }\r\n }\r\n }\r\n\r\n window.addEventListener(event, handler)\r\n}\r\n\r\nexport function isRawHTML (raw) {\r\n const regexHtml = new RegExp('<([A-Za-z][A-Za-z0-9]*)\\\\b[^>]*>(.*?)</\\\\1>')\r\n return regexHtml.test(raw)\r\n}\r\n","import Browser from './browser'\r\nimport { cleanUp } from './functions'\r\n\r\nconst Print = {\r\n send: (params, printFrame) => {\r\n // Append iframe element to document body\r\n document.getElementsByTagName('body')[0].appendChild(printFrame)\r\n\r\n // Get iframe element\r\n const iframeElement = document.getElementById(params.frameId)\r\n\r\n // Wait for iframe to load all content\r\n iframeElement.onload = () => {\r\n if (params.type === 'pdf') {\r\n // Add a delay for Firefox. In my tests, 1000ms was sufficient but 100ms was not\r\n if ((Browser.isFirefox() && Browser.getFirefoxMajorVersion() < 110) || Browser.isSafari()) {\r\n setTimeout(() => performPrint(iframeElement, params), 1000)\r\n } else {\r\n performPrint(iframeElement, params)\r\n }\r\n return\r\n }\r\n\r\n // Get iframe element document\r\n let printDocument = (iframeElement.contentWindow || iframeElement.contentDocument)\r\n if (printDocument.document) printDocument = printDocument.document\r\n\r\n // Append printable element to the iframe body\r\n printDocument.body.appendChild(params.printableElement)\r\n\r\n // Add custom style\r\n if (params.type !== 'pdf' && params.style) {\r\n // Create style element\r\n const style = document.createElement('style')\r\n style.innerHTML = params.style\r\n\r\n // Append style element to iframe's head\r\n printDocument.head.appendChild(style)\r\n }\r\n\r\n // If printing images, wait for them to load inside the iframe\r\n const images = printDocument.getElementsByTagName('img')\r\n\r\n if (images.length > 0) {\r\n loadIframeImages(Array.from(images)).then(() => performPrint(iframeElement, params))\r\n } else {\r\n performPrint(iframeElement, params)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction performPrint (iframeElement, params) {\r\n try {\r\n iframeElement.focus()\r\n\r\n // If Edge or IE, try catch with execCommand\r\n if (Browser.isEdge() || Browser.isIE()) {\r\n try {\r\n iframeElement.contentWindow.document.execCommand('print', false, null)\r\n } catch (e) {\r\n setTimeout(function(){\r\n iframeElement.contentWindow.print()\r\n },1000)\r\n }\r\n } else {\r\n // Other browsers\r\n setTimeout(function(){\r\n iframeElement.contentWindow.print()\r\n },1000)\r\n }\r\n } catch (error) {\r\n params.onError(error)\r\n } finally {\r\n if ((Browser.isFirefox() && Browser.getFirefoxMajorVersion() < 110) || Browser.isSafari()) {\r\n // Move the iframe element off-screen and make it invisible\r\n iframeElement.style.visibility = 'hidden'\r\n iframeElement.style.left = '-1px'\r\n }\r\n\r\n cleanUp(params)\r\n }\r\n}\r\n\r\nfunction loadIframeImages (images) {\r\n const promises = images.map(image => {\r\n if (image.src && image.src !== window.location.href) {\r\n return loadIframeImage(image)\r\n }\r\n })\r\n\r\n return Promise.all(promises)\r\n}\r\n\r\nfunction loadIframeImage (image) {\r\n return new Promise(resolve => {\r\n const pollImage = () => {\r\n !image || typeof image.naturalWidth === 'undefined' || image.naturalWidth === 0 || !image.complete\r\n ? setTimeout(pollImage, 500)\r\n : resolve()\r\n }\r\n pollImage()\r\n })\r\n}\r\n\r\nexport default Print\r\n","import Print from './print'\r\nimport { cleanUp } from './functions'\r\n\r\nexport default {\r\n print: (params, printFrame) => {\r\n // Check if we have base64 data\r\n if (params.base64) {\r\n if (params.printable.indexOf(',') !== -1) {\r\n //If pdf base64 start with `data:application/pdf;base64,`,Excute the atob function will throw an error.So we get the content after `,`\r\n params.printable = params.printable.split(',')[1];\r\n }\r\n const bytesArray = Uint8Array.from(atob(params.printable), c => c.charCodeAt(0))\r\n createBlobAndPrint(params, printFrame, bytesArray)\r\n return\r\n }\r\n\r\n // Format pdf url\r\n params.printable = /^(blob|http|\\/\\/)/i.test(params.printable)\r\n ? params.printable\r\n : window.location.origin + (params.printable.charAt(0) !== '/' ? '/' + params.printable : params.printable)\r\n\r\n // Get the file through a http request (Preload)\r\n const req = new window.XMLHttpRequest()\r\n req.responseType = 'arraybuffer'\r\n\r\n req.addEventListener('error', () => {\r\n cleanUp(params)\r\n params.onError(req.statusText, req)\r\n\r\n // Since we don't have a pdf document available, we will stop the print job\r\n })\r\n\r\n req.addEventListener('load', () => {\r\n // Check for errors\r\n if ([200, 201].indexOf(req.status) === -1) {\r\n cleanUp(params)\r\n params.onError(req.statusText, req)\r\n\r\n // Since we don't have a pdf document available, we will stop the print job\r\n return\r\n }\r\n\r\n // Print requested document\r\n createBlobAndPrint(params, printFrame, req.response)\r\n })\r\n\r\n req.open('GET', params.printable, true)\r\n req.send()\r\n }\r\n}\r\n\r\nfunction createBlobAndPrint (params, printFrame, data) {\r\n // Pass response or base64 data to a blob and create a local object url\r\n let localPdf = new window.Blob([data], { type: 'application/pdf' })\r\n localPdf = window.URL.createObjectURL(localPdf)\r\n\r\n // Set iframe src with pdf document url\r\n printFrame.setAttribute('src', localPdf)\r\n\r\n Print.send(params, printFrame)\r\n}\r\n","import { collectStyles, addHeader, addFooter } from './functions'\r\nimport Print from './print'\r\n\r\nexport default {\r\n print: (params, printFrame) => {\r\n // Get the DOM printable element\r\n const printElement = isHtmlElement(params.printable) ? params.printable : document.getElementById(params.printable)\r\n\r\n // Check if the element exists\r\n if (!printElement) {\r\n window.console.error('Invalid HTML element id: ' + params.printable)\r\n return\r\n }\r\n\r\n // Clone the target element including its children (if available)\r\n params.printableElement = cloneElement(printElement, params)\r\n\r\n // Add header\r\n if (params.header) {\r\n addHeader(params.printableElement, params)\r\n }\r\n\r\n // Add footer\r\n if (params.footer) {\r\n addFooter(params.printableElement, params)\r\n }\r\n\r\n // Print html element contents\r\n Print.send(params, printFrame)\r\n }\r\n}\r\n\r\nfunction cloneElement (element, params) {\r\n // Clone the main node (if not already inside the recursion process)\r\n const clone = element.cloneNode()\r\n\r\n // Loop over and process the children elements / nodes (including text nodes)\r\n const childNodesArray = Array.prototype.slice.call(element.childNodes)\r\n for (let i = 0; i < childNodesArray.length; i++) {\r\n // Check if we are skipping the current element\r\n if (params.ignoreElements.indexOf(childNodesArray[i].id) !== -1) {\r\n continue\r\n }\r\n\r\n // Clone the child element\r\n const clonedChild = cloneElement(childNodesArray[i], params)\r\n\r\n // Attach the cloned child to the cloned parent node\r\n clone.appendChild(clonedChild)\r\n }\r\n\r\n // Get all styling for print element (for nodes of type element only)\r\n if (params.scanStyles && element.nodeType === 1) {\r\n clone.setAttribute('style', collectStyles(element, params))\r\n }\r\n\r\n // Check if the element needs any state processing (copy user input data)\r\n switch (element.tagName) {\r\n case 'SELECT':\r\n // Copy the current selection value to its clone\r\n clone.value = element.value\r\n break\r\n case 'CANVAS':\r\n // Copy the canvas content to its clone\r\n clone.getContext('2d').drawImage(element, 0, 0)\r\n break\r\n }\r\n\r\n return clone\r\n}\r\n\r\nfunction isHtmlElement (printable) {\r\n // Check if element is instance of HTMLElement or has nodeType === 1 (for elements in iframe)\r\n return typeof printable === 'object' && printable && (printable instanceof HTMLElement || printable.nodeType === 1)\r\n}\r\n","import Print from './print'\r\nimport { addHeader, addFooter } from './functions'\r\n\r\nexport default {\r\n print: (params, printFrame) => {\r\n // Create printable element (container)\r\n params.printableElement = document.createElement('div')\r\n params.printableElement.setAttribute('style', 'width:100%')\r\n\r\n // Set our raw html as the printable element inner html content\r\n params.printableElement.innerHTML = params.printable\r\n\r\n // Add header\r\n if (params.header) {\r\n addHeader(params.printableElement, params)\r\n }\r\n\r\n // Add footer\r\n if (params.footer) {\r\n addFooter(params.printableElement, params)\r\n }\r\n\r\n // Print html contents\r\n Print.send(params, printFrame)\r\n }\r\n}\r\n","import { addHeader, addFooter } from './functions'\r\nimport Print from './print'\r\nimport Browser from './browser'\r\n\r\nexport default {\r\n print: (params, printFrame) => {\r\n // Check if we are printing one image or multiple images\r\n if (params.printable.constructor !== Array) {\r\n // Create array with one image\r\n params.printable = [params.printable]\r\n }\r\n\r\n // Create printable element (container)\r\n params.printableElement = document.createElement('div')\r\n\r\n // Create all image elements and append them to the printable container\r\n params.printable.forEach(src => {\r\n // Create the image element\r\n const img = document.createElement('img')\r\n img.setAttribute('style', params.imageStyle)\r\n\r\n // Set image src with the file url\r\n img.src = src\r\n\r\n // The following block is for Firefox, which for some reason requires the image's src to be fully qualified in\r\n // order to print it\r\n if (Browser.isFirefox()) {\r\n const fullyQualifiedSrc = img.src\r\n img.src = fullyQualifiedSrc\r\n }\r\n\r\n // Create the image wrapper\r\n const imageWrapper = document.createElement('div')\r\n\r\n // Append image to the wrapper element\r\n imageWrapper.appendChild(img)\r\n\r\n // Append wrapper to the printable element\r\n params.printableElement.appendChild(imageWrapper)\r\n })\r\n\r\n // Check if we are adding a print header\r\n if (params.header) addHeader(params.printableElement, params)\r\n\r\n // Check if we are adding a print footer\r\n if (params.footer) {\r\n addFooter(params.printableElement, params)\r\n }\r\n\r\n // Print image\r\n Print.send(params, printFrame)\r\n }\r\n}\r\n","import { capitalizePrint, addHeader, addFooter } from './functions'\r\nimport Print from './print'\r\n\r\nexport default {\r\n print: (params, printFrame) => {\r\n // Check if we received proper data\r\n if (typeof params.printable !== 'object') {\r\n throw new Error('Invalid javascript data object (JSON).')\r\n }\r\n\r\n // Validate repeatTableHeader\r\n if (typeof params.repeatTableHeader !== 'boolean') {\r\n throw new Error('Invalid value for repeatTableHeader attribute (JSON).')\r\n }\r\n\r\n // Validate properties\r\n if (!params.properties || !Array.isArray(params.properties)) {\r\n throw new Error('Invalid properties array for your JSON data.')\r\n }\r\n\r\n // We will format the property objects to keep the JSON api compatible with older releases\r\n params.properties = params.properties.map(property => {\r\n return {\r\n field: typeof property === 'object' ? property.field : property,\r\n displayName: typeof property === 'object' ? property.displayName : property,\r\n columnSize: typeof property === 'object' && property.columnSize ? property.columnSize + ';' : 100 / params.properties.length + '%;'\r\n }\r\n })\r\n\r\n // Create a print container element\r\n params.printableElement = document.createElement('div')\r\n\r\n // Check if we are adding a print header\r\n if (params.header) {\r\n addHeader(params.printableElement, params)\r\n }\r\n\r\n // Build the printable html data\r\n params.printableElement.innerHTML += jsonToHTML(params)\r\n\r\n // Check if we are adding a print footer\r\n if (params.footer) {\r\n addFooter(params.printableElement, params)\r\n }\r\n\r\n // Print the json data\r\n Print.send(params, printFrame)\r\n }\r\n}\r\n\r\nfunction jsonToHTML (params) {\r\n // Get the row and column data\r\n const data = params.printable\r\n const properties = params.properties\r\n\r\n // Create a html table\r\n let htmlData = '<table style=\"border-collapse: collapse; width: 100%;\">'\r\n\r\n // Check if the header should be repeated\r\n if (params.repeatTableHeader) {\r\n htmlData += '<thead>'\r\n }\r\n\r\n // Add the table header row\r\n htmlData += '<tr>'\r\n\r\n // Add the table header columns\r\n for (let a = 0; a < properties.length; a++) {\r\n htmlData += '<th style=\"width:' + properties[a].columnSize + ';' + params.gridHeaderStyle + '\">' + capitalizePrint(properties[a].displayName) + '</th>'\r\n }\r\n\r\n // Add the closing tag for the table header row\r\n htmlData += '</tr>'\r\n\r\n // If the table header is marked as repeated, add the closing tag\r\n if (params.repeatTableHeader) {\r\n htmlData += '</thead>'\r\n }\r\n\r\n // Create the table body\r\n htmlData += '<tbody>'\r\n\r\n // Add the table data rows\r\n for (let i = 0; i < data.length; i++) {\r\n // Add the row starting tag\r\n htmlData += '<tr>'\r\n\r\n // Print selected properties only\r\n for (let n = 0; n < properties.length; n++) {\r\n let stringData = data[i]\r\n\r\n // Support nested objects\r\n const property = properties[n].field.split('.')\r\n if (property.length > 1) {\r\n for (let p = 0; p < property.length; p++) {\r\n stringData = stringData[property[p]]\r\n }\r\n } else {\r\n stringData = stringData[properties[n].field]\r\n }\r\n\r\n // Add the row contents and styles\r\n htmlData += '<td style=\"width:' + properties[n].columnSize + params.gridStyle + '\">' + stringData + '</td>'\r\n }\r\n\r\n // Add the row closing tag\r\n htmlData += '</tr>'\r\n }\r\n\r\n // Add the table and body closing tags\r\n htmlData += '</tbody></table>'\r\n\r\n return htmlData\r\n}\r\n","'use strict'\r\n\r\nimport Browser from './browser'\r\nimport Modal from './modal'\r\nimport Pdf from './pdf'\r\nimport Html from './html'\r\nimport RawHtml from './raw-html'\r\nimport Image from './image'\r\nimport Json from './json'\r\n\r\nconst printTypes = ['pdf', 'html', 'image', 'json', 'raw-html']\r\n\r\nexport default {\r\n init () {\r\n const params = {\r\n printable: null,\r\n fallbackPrintable: null,\r\n type: 'pdf',\r\n header: null,\r\n headerStyle: 'font-weight: 300;',\r\n footer: null,\r\n footerStyle: 'font-weight: 300;',\r\n maxWidth: 800,\r\n properties: null,\r\n gridHeaderStyle: 'font-weight: bold; padding: 5px; border: 1px solid #dddddd;',\r\n gridStyle: 'border: 1px solid lightgray; margin-bottom: -1px;',\r\n showModal: false,\r\n onError: (error) => { throw error },\r\n onLoadingStart: null,\r\n onLoadingEnd: null,\r\n onPrintDialogClose: () => {},\r\n onIncompatibleBrowser: () => {},\r\n modalMessage: 'Retrieving Document...',\r\n frameId: 'printJS',\r\n frameRemoveDelay: null,\r\n printableElement: null,\r\n documentTitle: 'Document',\r\n targetStyle: ['clear', 'display', 'width', 'min-width', 'height', 'min-height', 'max-height'],\r\n targetStyles: ['border', 'box', 'break', 'text-decoration'],\r\n ignoreElements: [],\r\n repeatTableHeader: true,\r\n css: null,\r\n style: null,\r\n scanStyles: true,\r\n base64: false,\r\n\r\n // Deprecated\r\n onPdfOpen: null,\r\n font: 'TimesNewRoman',\r\n font_size: '12pt',\r\n honorMarginPadding: true,\r\n honorColor: false,\r\n imageStyle: 'max-width: 100%;'\r\n }\r\n\r\n // Check if a printable document or object was supplied\r\n const args = arguments[0]\r\n if (args === undefined) {\r\n throw new Error('printJS expects at least 1 attribute.')\r\n }\r\n\r\n // Process parameters\r\n console.log('args', args)\r\n \r\n switch (typeof args) {\r\n case 'string':\r\n params.printable = encodeURI(args)\r\n params.fallbackPrintable = params.printable\r\n params.type = arguments[1] || params.type\r\n break\r\n case 'object':\r\n params.printable = args.printable\r\n params.fallbackPrintable = typeof args.fallbackPrintable !== 'undefined' ? args.fallbackPrintable : params.printable\r\n params.fallbackPrintable = params.base64 ? `data:application/pdf;base64,${params.fallbackPrintable}` : params.fallbackPrintable\r\n for (var k in params) {\r\n if (k === 'printable' || k === 'fallbackPrintable') continue\r\n\r\n params[k] = typeof args[k] !== 'undefined' ? args[k] : params[k]\r\n }\r\n break\r\n default:\r\n throw new Error('Unexpected argument type! Expected \"string\" or \"object\", got ' + typeof args)\r\n }\r\n\r\n // Validate printable\r\n if (!params.printable) throw new Error('Missing printable information.')\r\n\r\n // Validate type\r\n if (!params.type || typeof params.type !== 'string' || printTypes.indexOf(params.type.toLowerCase()) === -1) {\r\n throw new Error('Invalid print type. Available types are: pdf, html, image and json.')\r\n }\r\n\r\n // Check if we are showing a feedback message to the user (useful for large files)\r\n if (params.showModal) Modal.show(params)\r\n\r\n // Check for a print start hook function\r\n if (params.onLoadingStart) params.onLoadingStart()\r\n\r\n // To prevent duplication and issues, remove any used printFrame from the DOM\r\n const usedFrame = document.getElementById(params.frameId)\r\n\r\n if (usedFrame) usedFrame.parentNode.removeChild(usedFrame)\r\n\r\n // Create a new iframe for the print job\r\n const printFrame = document.createElement('iframe')\r\n\r\n if (Browser.isFirefox()) {\r\n // Set the iframe to be is visible on the page (guaranteed by fixed position) but hidden using opacity 0, because\r\n // this works in Firefox. The height needs to be sufficient for some part of the document other than the PDF\r\n // viewer's toolbar to be visible in the page\r\n printFrame.setAttribute('style', 'width: 1px; height: 100px; position: fixed; left: 0; top: 0; opacity: 0; border-width: 0; margin: 0; padding: 0')\r\n } else {\r\n // Hide the iframe in other browsers\r\n printFrame.setAttribute('style', 'visibility: hidden; height: 0; width: 0; position: absolute; border: 0')\r\n }\r\n\r\n // Set iframe element id\r\n printFrame.setAttribute('id', params.frameId)\r\n\r\n // For non pdf printing, pass an html document string to srcdoc (force onload callback)\r\n if (params.type !== 'pdf') {\r\n printFrame.srcdoc = '<html><head><title>' + params.documentTitle + '</title>'\r\n\r\n // Attach css files\r\n if (params.css) {\r\n // Add support for single file\r\n if (!Array.isArray(params.css)) params.css = [params.css]\r\n\r\n // Create link tags for each css file\r\n params.css.forEach(file => {\r\n printFrame.srcdoc += '<link rel=\"stylesheet\" href=\"' + file + '\">'\r\n })\r\n }\r\n\r\n printFrame.srcdoc += '</head><body></body></html>'\r\n }\r\n\r\n // Check printable type\r\n switch (params.type) {\r\n case 'pdf':\r\n // Check browser support for pdf and if not supported we will just open the pdf file instead\r\n if (Browser.isIE()) {\r\n try {\r\n console.info('Print.js doesn\\'t support PDF printing in Internet Explorer.')\r\n const win = window.open(params.fallbackPrintable, '_blank')\r\n win.focus()\r\n params.onIncompatibleBrowser()\r\n } catch (error) {\r\n params.onError(error)\r\n } finally {\r\n // Make sure there is no loading modal opened\r\n if (params.showModal) Modal.close()\r\n if (params.onLoadingEnd) params.onLoadingEnd()\r\n }\r\n } else {\r\n Pdf.print(params, printFrame)\r\n }\r\n break\r\n case 'image':\r\n Image.print(params, printFrame)\r\n break\r\n case 'html':\r\n Html.print(params, printFrame)\r\n break\r\n case 'raw-html':\r\n RawHtml.print(params, printFrame)\r\n break\r\n case 'json':\r\n Json.print(params, printFrame)\r\n break\r\n }\r\n }\r\n}\r\n","import './sass/index.scss'\r\nimport print from './js/init'\r\n\r\nconst printJS = print.init\r\n\r\nif (typeof window !== 'undefined') {\r\n window.printJS = printJS\r\n}\r\n\r\nexport default printJS\r\n"],"sourceRoot":""}