{"version":3,"sources":["elements/archive/product-qr-print.ts"],"names":["PrintHtml","ProductQrPrint","HTMLElement","constructor","super","this","getFileUrl","layout","toString","_sort","imageTag","url","printHtml","productIds","_productIds","value","setAttribute","join","sort","print","type","blobUrl","await","downloadAndGetBlobUrl","top","location","assign","response","fetch","method","headers","Content-Type","body","JSON","stringify","blob","get","URL","createObjectURL","readAttributes","getAttribute","length","split","map","parseInt","i","connectedCallback","appendChild","QrCodeLayout","customElements","define"],"mappings":"OAASA,SAAmC,KAAlB,yBAEbC,uBAAuBC,YAChCC,cACIC,MAAK,EAmDFC,KAAAC,WAAa,0CACuBC,EAAOC,SAAQ,UAAWH,KAAKI,MASlEJ,KAAAK,SAAW,gBAA8BC,QA5D7CN,KAAKO,UAAY,IAAIZ,SACzB,CAIAa,iBACI,OAAOR,KAAKS,WAChB,CAEAD,eAAsBE,GAClBV,KAAKS,YAAcC,EACnBV,KAAKW,aAAa,cAAeD,EAAME,KAAK,GAAG,CAAC,CACpD,CAEAC,WACI,OAAOb,KAAKI,KAChB,CAEAS,SAAgBH,GACZV,KAAKI,MAAQM,EACbV,KAAKW,aAAa,OAAQD,CAAK,CACnC,CAEOI,YAAYZ,GACf,GAAM,CAACa,EAAMC,GAAWC,MAAMjB,KAAKkB,sBAAsBhB,CAAM,EAGlD,oBAATa,EACAI,IAAIC,SAASC,OAAOL,CAAO,EAE3BC,MAAMjB,KAAKO,UAAUO,MAAMd,KAAKK,SAASW,CAAO,CAAC,CAEzD,CAEQE,4BAA4BhB,GAChC,IAAMI,EAAMN,KAAKC,WAAWC,CAAM,EAC5BoB,EAAWL,MAAMM,MAAMjB,EAAK,CAC9BkB,OAAQ,OACRC,QAAS,CACLC,eAAgB,kB,EAEpBC,KAAMC,KAAKC,UAAU7B,KAAKS,WAAW,C,CACxC,EAEKqB,EAAOb,MAAMK,EAASQ,KAAI,EAGhC,MAAO,CAFMR,EAASG,QAAQM,IAAI,cAAc,EAElCC,IAAIC,gBAAgBH,CAAI,EAC1C,CAcQI,iBACAlC,KAAKmC,aAAa,aAAa,EAAEC,OACjCpC,KAAKS,YAAcT,KAAKmC,aAAa,aAAa,EAC7CE,MAAM,GAAG,EACTC,IAAI,GAAOC,SAASC,CAAC,CAAC,EAE3BxC,KAAKS,YAAc,EAE3B,CAIAgC,oBACIzC,KAAKkC,eAAc,EACnBlC,KAAK0C,YAAY1C,KAAKO,SAAS,CACnC,C,CAGJ,IAAYoC,cAAAA,IACRA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,GAAA,GAAA,KACAA,EAAAA,EAAA,MAAA,GAAA,OACH,GAJWA,aAAAA,cAAY,EAAA,EAMxBC,eAAeC,OAAO,mBAAoBjD,cAAc,SAzF3CA,eAmFD+C,YAM6C","file":"product-qr-print.js","sourcesContent":["import { PrintHtml } from \"../print-html.js\";\r\n\r\nexport class ProductQrPrint extends HTMLElement {\r\n constructor() {\r\n super();\r\n this.printHtml = new PrintHtml();\r\n }\r\n\r\n /* #region Public */\r\n\r\n public get productIds(): number[] {\r\n return this._productIds;\r\n }\r\n\r\n public set productIds(value: number[]) {\r\n this._productIds = value;\r\n this.setAttribute(\"product-ids\", value.join(\",\"));\r\n }\r\n\r\n public get sort(): string {\r\n return this._sort;\r\n }\r\n\r\n public set sort(value: string) {\r\n this._sort = value;\r\n this.setAttribute(\"sort\", value);\r\n }\r\n\r\n public async print(layout: QrCodeLayout) {\r\n const [type, blobUrl] = await this.downloadAndGetBlobUrl(layout);\r\n\r\n // If type is PDF assign the blob to the window location\r\n if (type === \"application/pdf\") {\r\n top.location.assign(blobUrl);\r\n } else {\r\n await this.printHtml.print(this.imageTag(blobUrl));\r\n }\r\n }\r\n\r\n private async downloadAndGetBlobUrl(layout: QrCodeLayout): Promise<[string, string]> {\r\n const url = this.getFileUrl(layout);\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(this._productIds),\r\n });\r\n\r\n const blob = await response.blob();\r\n const type = response.headers.get(\"Content-Type\");\r\n\r\n return [type, URL.createObjectURL(blob)];\r\n }\r\n\r\n public getFileUrl = (layout: QrCodeLayout) =>\r\n `/api/website/qrcode/products?layout=${layout.toString()}&sort=${this._sort}`;\r\n\r\n /* #endregion */\r\n\r\n /* #region Private */\r\n\r\n private printHtml: PrintHtml;\r\n private _productIds: number[];\r\n private _sort: string;\r\n private imageTag = (url: string) => ``;\r\n\r\n private readAttributes() {\r\n if (this.getAttribute(\"product-ids\").length) {\r\n this._productIds = this.getAttribute(\"product-ids\")\r\n .split(\",\")\r\n .map((i) => parseInt(i));\r\n } else {\r\n this._productIds = [];\r\n }\r\n }\r\n\r\n /* #endregion */\r\n\r\n connectedCallback() {\r\n this.readAttributes();\r\n this.appendChild(this.printHtml);\r\n }\r\n}\r\n\r\nexport enum QrCodeLayout {\r\n Roll,\r\n A4,\r\n Image\r\n}\r\n\r\ncustomElements.define(\"product-qr-print\", ProductQrPrint);\r\n"]}