1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6289],{6289:(t,e,a)=>{a.d(e,{generateReceiptPdf:()=>c,receiptFilename:()=>f});var r=a(7403),n=a(8949),i=a(57494);let l={latin:"/pdfjs-viewer/standard_fonts/LiberationSans-Regular.ttf",cjk:"/fonts/ReceiptCJK-Regular.ttf",arabic:"/fonts/NotoSansArabic-Regular.ttf"},o=new Map,u=72/25.4;async function s(t){let e=o.get(t);return e||(e=(async()=>{try{let e=await fetch(l[t]);if(!e.ok)throw Error("font");return new Uint8Array(await e.arrayBuffer())}catch(e){throw o.delete(t),new i.x("font_load_failed","fonts")}})(),o.set(t,e)),e}async function c(t,e,l){(0,r.Rs)(t);try{let r=(0,n.m)(t,e,l),o=JSON.stringify(r),c=["latin"];RegExp("[\\u2e80-\\ua4cf\\uac00-\\ud7af\\uf900-\\ufaff]|\\p{Script=Han}","u").test(o)&&c.push("cjk"),/[\u0600-\u06ff]/.test(o)&&c.push("arabic");let[{PDFDocument:f,rgb:p},h,{jsPDF:d},g]=await Promise.all([Promise.resolve().then(a.bind(a,57814)),a.e(5897).then(a.bind(a,16625)),Promise.all([a.e(293),a.e(3930),a.e(6241)]).then(a.bind(a,55172)),Promise.all(c.map(s))]),w="thermal"===t.layout,m=w?80:210,b=w?5:15,y=m-2*b,x=w?9:10,v=w?4.5:5.5,R=await f.create();R.registerFontkit({create:t=>{let e=h.default.create(t),a=e.layout.bind(e);return e.layout=(t,e)=>a(t,e,void 0,void 0,"ltr"),e}});let _=await Promise.all(c.map(async(t,e)=>{let a=await R.embedFont(g[e],{subset:!0});return{name:t,font:a,characters:new Set(a.getCharacterSet())}})),S=R.addPage([m*u,297*u]),P=d.__bidiEngine__,k={ltr:new P({isInputVisual:!1,isOutputVisual:!0,isInputRtl:!1,isOutputRtl:!1,isSymmetricSwapping:!0}
1),rtl:new P({isInputVisual:!1,isOutputVisual:!0,isInputRtl:!0,isOutputRtl:!1,isSymmetricSwapping:!0})},O=new d,M=function(t,e,a,r){let n=t=>/[\u0600-\u06ff\ufb50-\ufdff\ufe70-\ufeff]/.test(t),l=r=>{let l=[];for(let u of(t=>{var r;let i=t.replace(/[\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,"");return n(i)?(n((null==(r=i.match(RegExp("\\p{Letter}","u")))?void 0:r[0])||"")?e.rtl:e.ltr).doBidiReorder(a(i)):i})(r)){var o;let e=u.codePointAt(0),a=null==(o=t.find(t=>t.characters.has(e)))?void 0:o.font;if(!a)throw new i.x("unsupported_text","layout");let r=l[l.length-1];(null==r?void 0:r.font)===a?r.text+=u:l.push({font:a,text:u})}return l},o=(t,e)=>l(t).reduce((t,a)=>t+a.font.widthOfTextAtSize(a.text,e)/u,0);return{draw:function(t,e,a,n){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"left",s="right"===i?e-o(t,n):e;for(let e of l(t))r().drawText(e.text,{x:s*u,y:r().getHeight()-a*u,size:n,font:e.font}),s+=e.font.widthOfTextAtSize(e.text,n)/u},width:o,wrap:(t,e,a)=>{let r=[];for(let n of t.replace(/\r\n?/g,"\n").split("\n")){let t="";for(let i of n)if(t&&o(t+i,a)>e){let e=t.lastIndexOf(" ");e>0?(r.push(t.slice(0,e)),t=t.slice(e+1)+i):(r.push(t),t=i)}else t+=i;r.push(t)}return r}}}(_,k,t=>O.processArabic(t),()=>S),A="ar"===e,E=A?m-b:b,C=A?"right":"left",I=b+6,T=()=>{S.drawLine({start:{x:b*u,y:S.getHeight()-I*u},end:{x:(m-b)*u,y:S.getHeight()-I*u},thickness:.5,color:p(.84,.84,.84)}),I+=v},H=e=>{I+e<=297-b-8||(S=R.addPage([m*u,297*u]),I=b+5,M.draw("".concat(r.title," \xb7 ").concat(t.number),E,I,x,C),I+=v,T())},L=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:x;for(let a of M.wrap(t,y,e))H(v),M.draw(a,E,I,e,C),I+=v};if(L(r.title,w?17:23),I+=3,L(r.status,10),I+=3,r.logo){let t=r.logo.startsWith("data:image/png")?await R.embedPng(r.logo):await R.embedJpg(r.logo),e=Math.min(w?22:30,y),a=Math.min(e*t.height/t.width,25),n=a*t.width/t.height;S.drawImage(t,{x:(A?m-b-n:b)*u,y:S.getHeight()-(I+a)*u,width:n*u,height:a*u}),I+=a+v}for(let t of r.business)L(t);for(let t of(I+=2,T(),r.details))L("".concat(t.label,": ").concat(t.value));if(r.payer.length)for(let t of(I+=v,L(r.payerLabel),r.payer))L(t);I+=2,T();let j=[.44*y,.12*y,.22*y,.22*y],N=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:x,a=t.map((t,a)=>M.wrap(t,j[a]-3,e));for(let t=0;t<Math.max(...a.map(t=>t.length));t++){H(v);let r=0;a.forEach((a,n)=>{let i=A?m-b-r:b+r;M.draw(a[t]||"",0===n||A?i:i+j[n]-2,I,e,0===n?C:"right"),r+=j[n]}),I+=v}};for(let t of(w||N(r.columns,9),r.items)){let e=w?(M.wrap(t.description,y,x).length+1)*v+3:Math.max(...[t.description,t.quantity,t.price,t.amount].map((t,e)=>M.wrap(t,j[e]-3,x).length))*v+3;H(Math.min(e,297-2*b-25)),w?(L(t.description),L("".concat(t.quantity," \xd7 ").concat(t.price)),L("".concat(r.columns[3],": ").concat(t.amount))):N([t.description,t.quantity,t.price,t.amount]),I+=3}for(let t of(H(r.totals.length*v*2+6),T(),r.totals))if(w)L("".concat(t.label,": ").concat(t.value),t.emphasis?11:x);else{let e=M.wrap(t.label,.6*y,x),a=M.wrap(t.value,.35*y,x);for(let t=0;t<Math.max(e.length,a.length);t++)H(v),M.draw(e[t]||"",E,I,x,C),M.draw(a[t]||"",A?b+.35*y:m-b,I,x,"right"),I+=v}r.notes&&(I+=v,H(3*v),L(r.notesLabel),L(r.notes));let V=R.getPages();for(let t=0;t<V.length;t++)S=V[t],M.draw("".concat(t+1," / ").concat(V.length),m-b,292,8,"right");R.setTitle("".concat(r.title," ").concat(t.number)),R.setCreator("iTextMaster");let q=await R.save({useObjectStreams:!1});return new Blob([new Uint8Array(q)],{type:"application/pdf"})}catch(t){if(t instanceof i.x)throw t;throw new i.x("pdf_export_failed","export")}}function f(t){return"receipt-".concat(t.trim().replace(/[\\/:*?"<>|\u0000-\u001f]/g,"-").slice(0,100)||"RCPT-001",".pdf")}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.