@agile-team/mach-report 2.17.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +18 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +100 -41
  24. package/dist/analytics.d.ts +100 -41
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +108 -102
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/designer--TKECSEc.cjs +2 -0
  48. package/dist/designer-d6hJS41w.js +5683 -0
  49. package/dist/designer.cjs +1 -1
  50. package/dist/designer.d.cts +710 -42
  51. package/dist/designer.d.ts +710 -42
  52. package/dist/designer.js +23 -20
  53. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  54. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  55. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  56. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  57. package/dist/index-CPh6tqge.js +1575 -0
  58. package/dist/index-CUNw7dL9.cjs +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +361 -15
  61. package/dist/index.d.ts +361 -15
  62. package/dist/index.js +876 -835
  63. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  64. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  65. package/dist/matrix-0hywp0-F.cjs +1 -0
  66. package/dist/matrix-Dy-tyY7E.js +381 -0
  67. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  68. package/dist/param-validation-CnDEd2l-.js +333 -0
  69. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  70. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  71. package/dist/pdf.cjs +1 -1
  72. package/dist/pdf.d.cts +54 -0
  73. package/dist/pdf.d.ts +54 -0
  74. package/dist/pdf.js +2 -2
  75. package/dist/{plugin-BBp74CQZ.js → plugin-ByjF2kiV.js} +5 -5
  76. package/dist/{plugin-CtFX9PFG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  77. package/dist/prefill-B8H9qwE4.js +371 -0
  78. package/dist/prefill-D7EswyTI.cjs +1 -0
  79. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  80. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  81. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  82. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  83. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  84. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  85. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  86. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  87. package/dist/report-encoding-worker.cjs +1 -1
  88. package/dist/report-encoding-worker.js +1 -1
  89. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  90. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  91. package/dist/runtime-CDA6d263.cjs +1 -0
  92. package/dist/runtime-CEMvybO7.js +170 -0
  93. package/dist/sbom.cdx.json +1 -1
  94. package/dist/server/node.d.cts +75 -7
  95. package/dist/server/node.d.ts +75 -7
  96. package/dist/server-node.cjs +4 -4
  97. package/dist/server-node.js +2692 -1990
  98. package/dist/server.cjs +1 -1
  99. package/dist/server.d.cts +243 -28
  100. package/dist/server.d.ts +243 -28
  101. package/dist/server.js +28 -28
  102. package/dist/sha256-BDQ1Qk7A.js +158 -0
  103. package/dist/sha256-DgZAKXqI.cjs +1 -0
  104. package/dist/style.css +1 -1
  105. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  106. package/dist/template-bindings-TKnXM7ll.js +62 -0
  107. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  108. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  109. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  110. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  111. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  112. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  113. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  114. package/dist/template-registry-DzWswQI5.cjs +1 -0
  115. package/dist/vue/async.d.cts +528 -33
  116. package/dist/vue/async.d.ts +528 -33
  117. package/dist/vue/index.d.cts +616 -64
  118. package/dist/vue/index.d.ts +616 -64
  119. package/dist/vue-async.cjs +1 -1
  120. package/dist/vue-async.js +3 -3
  121. package/dist/vue.cjs +1 -1
  122. package/dist/vue.js +94 -89
  123. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  124. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  125. package/dist/worker.cjs +1 -1
  126. package/dist/worker.d.cts +75 -7
  127. package/dist/worker.d.ts +75 -7
  128. package/dist/worker.js +4 -4
  129. package/dist/xlsx.cjs +4 -4
  130. package/dist/xlsx.d.cts +120 -13
  131. package/dist/xlsx.d.ts +120 -13
  132. package/dist/xlsx.js +313 -279
  133. package/package.json +1 -1
  134. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  135. package/dist/ParamEditor-DNNARyeB.js +0 -594
  136. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  137. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  138. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  139. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  140. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  141. package/dist/assets-BIMVwjQe.js +0 -231
  142. package/dist/assets-Dfs2ElxI.cjs +0 -1
  143. package/dist/component-tree-Ca6YYfHq.js +0 -61
  144. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  145. package/dist/computed-BW5a8QFk.js +0 -612
  146. package/dist/computed-C2GD3XcE.cjs +0 -1
  147. package/dist/config-Dg_o8e7m.cjs +0 -1
  148. package/dist/config-XQ4qrQ7Q.js +0 -844
  149. package/dist/designer-D9XAxqSc.js +0 -5178
  150. package/dist/designer-uCDo5XSK.cjs +0 -2
  151. package/dist/drill-ByN8COs_.cjs +0 -1
  152. package/dist/drill-CKW3Xtfa.js +0 -145
  153. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  154. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  155. package/dist/matrix-JLAXlux-.js +0 -302
  156. package/dist/matrix-gTHpDTGm.cjs +0 -1
  157. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  158. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  159. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  160. package/dist/runtime-DakRXui3.js +0 -170
  161. package/dist/runtime-dL5ygIfa.cjs +0 -1
  162. package/dist/sha256-BshdOkCC.cjs +0 -1
  163. package/dist/sha256-DTG-Gq8i.js +0 -157
  164. package/dist/template-bindings-C2SpvsMU.js +0 -58
  165. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  166. package/dist/template-registry-CpysHAxy.cjs +0 -1
  167. package/dist/tree-CLpxYbKa.cjs +0 -1
  168. package/dist/tree-DNJorJUf.js +0 -172
@@ -0,0 +1 @@
1
+ "use strict";function Ht(t,i="utf8"){return new TextDecoder(i).decode(t)}const Ie=new TextEncoder;function Re(t){return Ie.encode(t)}const Oe=1024*8,Be=(()=>{const t=new Uint8Array(4),i=new Uint32Array(t.buffer);return!((i[0]=1)&t[0])})(),bt={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class st{buffer;byteLength;byteOffset;length;offset;lastWrittenByte;littleEndian;_data;_mark;_marks;constructor(i=Oe,e={}){let n=!1;typeof i=="number"?i=new ArrayBuffer(i):(n=!0,this.lastWrittenByte=i.byteLength);const a=e.offset?e.offset>>>0:0,r=i.byteLength-a;let l=a;(ArrayBuffer.isView(i)||i instanceof st)&&(i.byteLength!==i.buffer.byteLength&&(l=i.byteOffset+a),i=i.buffer),n?this.lastWrittenByte=r:this.lastWrittenByte=0,this.buffer=i,this.length=r,this.byteLength=r,this.byteOffset=l,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,l,r),this._mark=0,this._marks=[]}available(i=1){return this.offset+i<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(i=1){return this.offset+=i,this}back(i=1){return this.offset-=i,this}seek(i){return this.offset=i,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const i=this._marks.pop();if(i===void 0)throw new Error("Mark stack empty");return this.seek(i),this}rewind(){return this.offset=0,this}ensureAvailable(i=1){if(!this.available(i)){const n=(this.offset+i)*2,a=new Uint8Array(n);a.set(new Uint8Array(this.buffer)),this.buffer=a.buffer,this.length=n,this.byteLength=n,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(i=1){return this.readArray(i,"uint8")}readArray(i,e){const n=bt[e].BYTES_PER_ELEMENT*i,a=this.byteOffset+this.offset,r=this.buffer.slice(a,a+n);if(this.littleEndian===Be&&e!=="uint8"&&e!=="int8"){const h=new Uint8Array(this.buffer.slice(a,a+n));h.reverse();const o=new bt[e](h.buffer);return this.offset+=n,o.reverse(),o}const l=new bt[e](r);return this.offset+=n,l}readInt16(){const i=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,i}readUint16(){const i=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,i}readInt32(){const i=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,i}readUint32(){const i=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat32(){const i=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,i}readFloat64(){const i=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,i}readBigInt64(){const i=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,i}readBigUint64(){const i=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,i}readChar(){return String.fromCharCode(this.readInt8())}readChars(i=1){let e="";for(let n=0;n<i;n++)e+=this.readChar();return e}readUtf8(i=1){return Ht(this.readBytes(i))}decodeText(i=1,e="utf8"){return Ht(this.readBytes(i),e)}writeBoolean(i){return this.writeUint8(i?255:0),this}writeInt8(i){return this.ensureAvailable(1),this._data.setInt8(this.offset++,i),this._updateLastWrittenByte(),this}writeUint8(i){return this.ensureAvailable(1),this._data.setUint8(this.offset++,i),this._updateLastWrittenByte(),this}writeByte(i){return this.writeUint8(i)}writeBytes(i){this.ensureAvailable(i.length);for(let e=0;e<i.length;e++)this._data.setUint8(this.offset++,i[e]);return this._updateLastWrittenByte(),this}writeInt16(i){return this.ensureAvailable(2),this._data.setInt16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(i){return this.ensureAvailable(2),this._data.setUint16(this.offset,i,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(i){return this.ensureAvailable(4),this._data.setInt32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(i){return this.ensureAvailable(4),this._data.setUint32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(i){return this.ensureAvailable(4),this._data.setFloat32(this.offset,i,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(i){return this.ensureAvailable(8),this._data.setFloat64(this.offset,i,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigInt64(i){return this.ensureAvailable(8),this._data.setBigInt64(this.offset,i,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigUint64(i){return this.ensureAvailable(8),this._data.setBigUint64(this.offset,i,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(i){return this.writeUint8(i.charCodeAt(0))}writeChars(i){for(let e=0;e<i.length;e++)this.writeUint8(i.charCodeAt(e));return this}writeUtf8(i){return this.writeBytes(Re(i))}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this.lastWrittenByte)}getWrittenByteLength(){return this.lastWrittenByte-this.byteOffset}_updateLastWrittenByte(){this.offset>this.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}const Ne=4,Pt=0,Wt=1,Ce=2;function Y(t){let i=t.length;for(;--i>=0;)t[i]=0}const Ze=0,ie=1,Fe=2,Me=3,$e=258,Ot=29,lt=256,et=lt+1+Ot,P=30,Bt=19,ne=2*et+1,B=15,yt=16,He=7,Nt=256,ae=16,re=17,le=18,Tt=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),_t=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Pe=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),oe=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),We=512,S=new Array((et+2)*2);Y(S);const Q=new Array(P*2);Y(Q);const it=new Array(We);Y(it);const nt=new Array($e-Me+1);Y(nt);const Ct=new Array(Ot);Y(Ct);const ft=new Array(P);Y(ft);function xt(t,i,e,n,a){this.static_tree=t,this.extra_bits=i,this.extra_base=e,this.elems=n,this.max_length=a,this.has_stree=t&&t.length}let he,_e,se;function Et(t,i){this.dyn_tree=t,this.max_code=0,this.stat_desc=i}const fe=t=>t<256?it[t]:it[256+(t>>>7)],at=(t,i)=>{t.pending_buf[t.pending++]=i&255,t.pending_buf[t.pending++]=i>>>8&255},w=(t,i,e)=>{t.bi_valid>yt-e?(t.bi_buf|=i<<t.bi_valid&65535,at(t,t.bi_buf),t.bi_buf=i>>yt-t.bi_valid,t.bi_valid+=e-yt):(t.bi_buf|=i<<t.bi_valid&65535,t.bi_valid+=e)},A=(t,i,e)=>{w(t,e[i*2],e[i*2+1])},de=(t,i)=>{let e=0;do e|=t&1,t>>>=1,e<<=1;while(--i>0);return e>>>1},Ke=t=>{t.bi_valid===16?(at(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)},Ye=(t,i)=>{const e=i.dyn_tree,n=i.max_code,a=i.stat_desc.static_tree,r=i.stat_desc.has_stree,l=i.stat_desc.extra_bits,h=i.stat_desc.extra_base,o=i.stat_desc.max_length;let _,u,c,d,E,k,z=0;for(d=0;d<=B;d++)t.bl_count[d]=0;for(e[t.heap[t.heap_max]*2+1]=0,_=t.heap_max+1;_<ne;_++)u=t.heap[_],d=e[e[u*2+1]*2+1]+1,d>o&&(d=o,z++),e[u*2+1]=d,!(u>n)&&(t.bl_count[d]++,E=0,u>=h&&(E=l[u-h]),k=e[u*2],t.opt_len+=k*(d+E),r&&(t.static_len+=k*(a[u*2+1]+E)));if(z!==0){do{for(d=o-1;t.bl_count[d]===0;)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[o]--,z-=2}while(z>0);for(d=o;d!==0;d--)for(u=t.bl_count[d];u!==0;)c=t.heap[--_],!(c>n)&&(e[c*2+1]!==d&&(t.opt_len+=(d-e[c*2+1])*e[c*2],e[c*2+1]=d),u--)}},ce=(t,i,e)=>{const n=new Array(B+1);let a=0,r,l;for(r=1;r<=B;r++)a=a+e[r-1]<<1,n[r]=a;for(l=0;l<=i;l++){let h=t[l*2+1];h!==0&&(t[l*2]=de(n[h]++,h))}},Xe=()=>{let t,i,e,n,a;const r=new Array(B+1);for(e=0,n=0;n<Ot-1;n++)for(Ct[n]=e,t=0;t<1<<Tt[n];t++)nt[e++]=n;for(nt[e-1]=n,a=0,n=0;n<16;n++)for(ft[n]=a,t=0;t<1<<_t[n];t++)it[a++]=n;for(a>>=7;n<P;n++)for(ft[n]=a<<7,t=0;t<1<<_t[n]-7;t++)it[256+a++]=n;for(i=0;i<=B;i++)r[i]=0;for(t=0;t<=143;)S[t*2+1]=8,t++,r[8]++;for(;t<=255;)S[t*2+1]=9,t++,r[9]++;for(;t<=279;)S[t*2+1]=7,t++,r[7]++;for(;t<=287;)S[t*2+1]=8,t++,r[8]++;for(ce(S,et+1,r),t=0;t<P;t++)Q[t*2+1]=5,Q[t*2]=de(t,5);he=new xt(S,Tt,lt+1,et,B),_e=new xt(Q,_t,0,P,B),se=new xt(new Array(0),Pe,0,Bt,He)},ue=t=>{let i;for(i=0;i<et;i++)t.dyn_ltree[i*2]=0;for(i=0;i<P;i++)t.dyn_dtree[i*2]=0;for(i=0;i<Bt;i++)t.bl_tree[i*2]=0;t.dyn_ltree[Nt*2]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},ge=t=>{t.bi_valid>8?at(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Kt=(t,i,e,n)=>{const a=i*2,r=e*2;return t[a]<t[r]||t[a]===t[r]&&n[i]<=n[e]},vt=(t,i,e)=>{const n=t.heap[e];let a=e<<1;for(;a<=t.heap_len&&(a<t.heap_len&&Kt(i,t.heap[a+1],t.heap[a],t.depth)&&a++,!Kt(i,n,t.heap[a],t.depth));)t.heap[e]=t.heap[a],e=a,a<<=1;t.heap[e]=n},Yt=(t,i,e)=>{let n,a,r=0,l,h;if(t.sym_next!==0)do n=t.pending_buf[t.sym_buf+r++]&255,n+=(t.pending_buf[t.sym_buf+r++]&255)<<8,a=t.pending_buf[t.sym_buf+r++],n===0?A(t,a,i):(l=nt[a],A(t,l+lt+1,i),h=Tt[l],h!==0&&(a-=Ct[l],w(t,a,h)),n--,l=fe(n),A(t,l,e),h=_t[l],h!==0&&(n-=ft[l],w(t,n,h)));while(r<t.sym_next);A(t,Nt,i)},kt=(t,i)=>{const e=i.dyn_tree,n=i.stat_desc.static_tree,a=i.stat_desc.has_stree,r=i.stat_desc.elems;let l,h,o=-1,_;for(t.heap_len=0,t.heap_max=ne,l=0;l<r;l++)e[l*2]!==0?(t.heap[++t.heap_len]=o=l,t.depth[l]=0):e[l*2+1]=0;for(;t.heap_len<2;)_=t.heap[++t.heap_len]=o<2?++o:0,e[_*2]=1,t.depth[_]=0,t.opt_len--,a&&(t.static_len-=n[_*2+1]);for(i.max_code=o,l=t.heap_len>>1;l>=1;l--)vt(t,e,l);_=r;do l=t.heap[1],t.heap[1]=t.heap[t.heap_len--],vt(t,e,1),h=t.heap[1],t.heap[--t.heap_max]=l,t.heap[--t.heap_max]=h,e[_*2]=e[l*2]+e[h*2],t.depth[_]=(t.depth[l]>=t.depth[h]?t.depth[l]:t.depth[h])+1,e[l*2+1]=e[h*2+1]=_,t.heap[1]=_++,vt(t,e,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],Ye(t,i),ce(e,o,t.bl_count)},Xt=(t,i,e)=>{let n,a=-1,r,l=i[1],h=0,o=7,_=4;for(l===0&&(o=138,_=3),i[(e+1)*2+1]=65535,n=0;n<=e;n++)r=l,l=i[(n+1)*2+1],!(++h<o&&r===l)&&(h<_?t.bl_tree[r*2]+=h:r!==0?(r!==a&&t.bl_tree[r*2]++,t.bl_tree[ae*2]++):h<=10?t.bl_tree[re*2]++:t.bl_tree[le*2]++,h=0,a=r,l===0?(o=138,_=3):r===l?(o=6,_=3):(o=7,_=4))},Gt=(t,i,e)=>{let n,a=-1,r,l=i[1],h=0,o=7,_=4;for(l===0&&(o=138,_=3),n=0;n<=e;n++)if(r=l,l=i[(n+1)*2+1],!(++h<o&&r===l)){if(h<_)do A(t,r,t.bl_tree);while(--h!==0);else r!==0?(r!==a&&(A(t,r,t.bl_tree),h--),A(t,ae,t.bl_tree),w(t,h-3,2)):h<=10?(A(t,re,t.bl_tree),w(t,h-3,3)):(A(t,le,t.bl_tree),w(t,h-11,7));h=0,a=r,l===0?(o=138,_=3):r===l?(o=6,_=3):(o=7,_=4)}},Ge=t=>{let i;for(Xt(t,t.dyn_ltree,t.l_desc.max_code),Xt(t,t.dyn_dtree,t.d_desc.max_code),kt(t,t.bl_desc),i=Bt-1;i>=3&&t.bl_tree[oe[i]*2+1]===0;i--);return t.opt_len+=3*(i+1)+5+5+4,i},je=(t,i,e,n)=>{let a;for(w(t,i-257,5),w(t,e-1,5),w(t,n-4,4),a=0;a<n;a++)w(t,t.bl_tree[oe[a]*2+1],3);Gt(t,t.dyn_ltree,i-1),Gt(t,t.dyn_dtree,e-1)},Ve=t=>{let i=4093624447,e;for(e=0;e<=31;e++,i>>>=1)if(i&1&&t.dyn_ltree[e*2]!==0)return Pt;if(t.dyn_ltree[18]!==0||t.dyn_ltree[20]!==0||t.dyn_ltree[26]!==0)return Wt;for(e=32;e<lt;e++)if(t.dyn_ltree[e*2]!==0)return Wt;return Pt};let jt=!1;const qe=t=>{jt||(Xe(),jt=!0),t.l_desc=new Et(t.dyn_ltree,he),t.d_desc=new Et(t.dyn_dtree,_e),t.bl_desc=new Et(t.bl_tree,se),t.bi_buf=0,t.bi_valid=0,ue(t)},pe=(t,i,e,n)=>{w(t,(Ze<<1)+(n?1:0),3),ge(t),at(t,e),at(t,~e),e&&t.pending_buf.set(t.window.subarray(i,i+e),t.pending),t.pending+=e},Je=t=>{w(t,ie<<1,3),A(t,Nt,S),Ke(t)},Qe=(t,i,e,n)=>{let a,r,l=0;t.level>0?(t.strm.data_type===Ce&&(t.strm.data_type=Ve(t)),kt(t,t.l_desc),kt(t,t.d_desc),l=Ge(t),a=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=a&&(a=r)):a=r=e+5,e+4<=a&&i!==-1?pe(t,i,e,n):t.strategy===Ne||r===a?(w(t,(ie<<1)+(n?1:0),3),Yt(t,S,Q)):(w(t,(Fe<<1)+(n?1:0),3),je(t,t.l_desc.max_code+1,t.d_desc.max_code+1,l+1),Yt(t,t.dyn_ltree,t.dyn_dtree)),ue(t),n&&ge(t)},ti=(t,i,e)=>(t.pending_buf[t.sym_buf+t.sym_next++]=i,t.pending_buf[t.sym_buf+t.sym_next++]=i>>8,t.pending_buf[t.sym_buf+t.sym_next++]=e,i===0?t.dyn_ltree[e*2]++:(t.matches++,i--,t.dyn_ltree[(nt[e]+lt+1)*2]++,t.dyn_dtree[fe(i)*2]++),t.sym_next===t.sym_end);var ei=qe,ii=pe,ni=Qe,ai=ti,ri=Je,li={_tr_init:ei,_tr_stored_block:ii,_tr_flush_block:ni,_tr_tally:ai,_tr_align:ri};const oi=(t,i,e,n)=>{let a=t&65535|0,r=t>>>16&65535|0,l=0;for(;e!==0;){l=e>2e3?2e3:e,e-=l;do a=a+i[n++]|0,r=r+a|0;while(--l);a%=65521,r%=65521}return a|r<<16|0};var we=oi;const hi=()=>{let t,i=[];for(var e=0;e<256;e++){t=e;for(var n=0;n<8;n++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t}return i},_i=new Uint32Array(hi()),si=(t,i,e,n)=>{const a=_i,r=n+e;t^=-1;for(let l=n;l<r;l++)t=t>>>8^a[(t^i[l])&255];return t^-1};var U=si,dt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},be={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:fi,_tr_stored_block:St,_tr_flush_block:di,_tr_tally:I,_tr_align:ci}=li,{Z_NO_FLUSH:R,Z_PARTIAL_FLUSH:ui,Z_FULL_FLUSH:gi,Z_FINISH:x,Z_BLOCK:Vt,Z_OK:g,Z_STREAM_END:qt,Z_STREAM_ERROR:m,Z_DATA_ERROR:pi,Z_BUF_ERROR:At,Z_DEFAULT_COMPRESSION:wi,Z_FILTERED:bi,Z_HUFFMAN_ONLY:ht,Z_RLE:yi,Z_FIXED:xi,Z_DEFAULT_STRATEGY:Ei,Z_UNKNOWN:vi,Z_DEFLATED:ut}=be,Ai=9,mi=15,Ti=8,ki=29,Si=256,zt=Si+1+ki,zi=30,Ui=19,Li=2*zt+1,Di=15,s=3,D=258,T=D+s+1,Ii=32,W=42,Zt=57,Ut=69,Lt=73,Dt=91,It=103,N=113,q=666,p=1,X=2,Z=3,G=4,Ri=3,C=(t,i)=>(t.msg=dt[i],i),Jt=t=>t*2-(t>4?9:0),L=t=>{let i=t.length;for(;--i>=0;)t[i]=0},Oi=t=>{let i,e,n,a=t.w_size;i=t.hash_size,n=i;do e=t.head[--n],t.head[n]=e>=a?e-a:0;while(--i);i=a,n=i;do e=t.prev[--n],t.prev[n]=e>=a?e-a:0;while(--i)};let Ft=(t,i,e)=>(i<<t.hash_shift^e)&t.hash_mask;const F=(t,i)=>{let e;if(t.legacy_hash)e=t.ins_h=Ft(t,t.ins_h,t.window[i+s-1]);else{const a=t.window,r=a[i]|a[i+1]<<8|a[i+2]<<16|a[i+3]<<24;e=t.ins_h=Math.imul(r,66521)+66521>>>16&t.hash_mask}const n=t.prev[i&t.w_mask]=t.head[e];return t.head[e]=i,n},b=t=>{const i=t.state;let e=i.pending;e>t.avail_out&&(e=t.avail_out),e!==0&&(t.output.set(i.pending_buf.subarray(i.pending_out,i.pending_out+e),t.next_out),t.next_out+=e,i.pending_out+=e,t.total_out+=e,t.avail_out-=e,i.pending-=e,i.pending===0&&(i.pending_out=0))},y=(t,i)=>{di(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,i),t.block_start=t.strstart,b(t.strm)},f=(t,i)=>{t.pending_buf[t.pending++]=i},j=(t,i)=>{t.pending_buf[t.pending++]=i>>>8&255,t.pending_buf[t.pending++]=i&255},Rt=(t,i,e,n)=>{let a=t.avail_in;return a>n&&(a=n),a===0?0:(t.avail_in-=a,i.set(t.input.subarray(t.next_in,t.next_in+a),e),t.state.wrap===1?t.adler=we(t.adler,i,a,e):t.state.wrap===2&&(t.adler=U(t.adler,i,a,e)),t.next_in+=a,t.total_in+=a,a)},ye=(t,i)=>{let e=t.max_chain_length,n=t.strstart,a,r,l=t.prev_length,h=t.nice_match;const o=t.strstart>t.w_size-T?t.strstart-(t.w_size-T):0,_=t.window,u=t.w_mask,c=t.prev,d=t.strstart+D;let E=_[n+l-1],k=_[n+l];t.prev_length>=t.good_match&&(e>>=2),h>t.lookahead&&(h=t.lookahead);do if(a=i,!(_[a+l]!==k||_[a+l-1]!==E||_[a]!==_[n]||_[++a]!==_[n+1])){n+=2,a++;do;while(_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&_[++n]===_[++a]&&n<d);if(r=D-(d-n),n=d-D,r>l){if(t.match_start=i,l=r,r>=h)break;E=_[n+l-1],k=_[n+l]}}while((i=c[i&u])>o&&--e!==0);return l<=t.lookahead?l:t.lookahead},K=t=>{const i=t.w_size;let e,n,a;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=i+(i-T)&&(t.window.set(t.window.subarray(i,i+i-n),0),t.match_start-=i,t.strstart-=i,t.block_start-=i,t.insert>t.strstart&&(t.insert=t.strstart),Oi(t),n+=i),t.strm.avail_in===0)break;if(e=Rt(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=e,t.legacy_hash){if(t.lookahead+t.insert>=s)for(a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=Ft(t,t.ins_h,t.window[a+1]);t.insert&&(F(t,a),a++,t.insert--,!(t.lookahead+t.insert<s)););}else if(t.lookahead+t.insert>s)for(a=t.strstart-t.insert;t.insert&&(F(t,a),a++,t.insert--,!(t.lookahead+t.insert<=s)););}while(t.lookahead<T&&t.strm.avail_in!==0)},xe=(t,i)=>{let e=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,n,a,r,l=0,h=t.strm.avail_in;do{if(n=65535,r=t.bi_valid+42>>3,t.strm.avail_out<r||(r=t.strm.avail_out-r,a=t.strstart-t.block_start,n>a+t.strm.avail_in&&(n=a+t.strm.avail_in),n>r&&(n=r),n<e&&(n===0&&i!==x||i===R||n!==a+t.strm.avail_in)))break;l=i===x&&n===a+t.strm.avail_in?1:0,St(t,0,0,l),t.pending_buf[t.pending-4]=n,t.pending_buf[t.pending-3]=n>>8,t.pending_buf[t.pending-2]=~n,t.pending_buf[t.pending-1]=~n>>8,b(t.strm),a&&(a>n&&(a=n),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+a),t.strm.next_out),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a,t.block_start+=a,n-=a),n&&(Rt(t.strm,t.strm.output,t.strm.next_out,n),t.strm.next_out+=n,t.strm.avail_out-=n,t.strm.total_out+=n)}while(l===0);return h-=t.strm.avail_in,h&&(h>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=h&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-h,t.strm.next_in),t.strstart),t.strstart+=h,t.insert+=h>t.w_size-t.insert?t.w_size-t.insert:h),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),l?G:i!==R&&i!==x&&t.strm.avail_in===0&&t.strstart===t.block_start?X:(r=t.window_size-t.strstart,t.strm.avail_in>r&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,r+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),r>t.strm.avail_in&&(r=t.strm.avail_in),r&&(Rt(t.strm,t.window,t.strstart,r),t.strstart+=r,t.insert+=r>t.w_size-t.insert?t.w_size-t.insert:r),t.high_water<t.strstart&&(t.high_water=t.strstart),r=t.bi_valid+42>>3,r=t.pending_buf_size-r>65535?65535:t.pending_buf_size-r,e=r>t.w_size?t.w_size:r,a=t.strstart-t.block_start,(a>=e||(a||i===x)&&i!==R&&t.strm.avail_in===0&&a<=r)&&(n=a>r?r:a,l=i===x&&t.strm.avail_in===0&&n===a?1:0,St(t,t.block_start,n,l),t.block_start+=n,b(t.strm)),l?Z:p)},mt=(t,i)=>{let e,n;for(;;){if(t.lookahead<T){if(K(t),t.lookahead<T&&i===R)return p;if(t.lookahead===0)break}if(e=0,t.lookahead>=s&&(e=F(t,t.strstart)),e!==0&&t.strstart-e<=t.w_size-T&&(t.match_length=ye(t,e)),t.match_length>=s)if(n=I(t,t.strstart-t.match_start,t.match_length-s),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=s){t.match_length--;do t.strstart++,e=F(t,t.strstart);while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.legacy_hash&&(t.ins_h=t.window[t.strstart],t.ins_h=Ft(t,t.ins_h,t.window[t.strstart+1]));else n=I(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(y(t,!1),t.strm.avail_out===0))return p}return t.insert=t.strstart<s-1?t.strstart:s-1,i===x?(y(t,!0),t.strm.avail_out===0?Z:G):t.sym_next&&(y(t,!1),t.strm.avail_out===0)?p:X},$=(t,i)=>{let e,n,a;for(;;){if(t.lookahead<T){if(K(t),t.lookahead<T&&i===R)return p;if(t.lookahead===0)break}if(e=0,t.lookahead>=s&&(e=F(t,t.strstart)),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=s-1,e!==0&&t.prev_length<t.max_lazy_match&&t.strstart-e<=t.w_size-T&&(t.match_length=ye(t,e),t.match_length<=5&&(t.strategy===bi||t.match_length===s&&t.strstart-t.match_start>4096)&&(t.match_length=s-1)),t.prev_length>=s&&t.match_length<=t.prev_length){a=t.strstart+t.lookahead-s,n=I(t,t.strstart-1-t.prev_match,t.prev_length-s),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=a&&(e=F(t,t.strstart));while(--t.prev_length!==0);if(t.match_available=0,t.match_length=s-1,t.strstart++,n&&(y(t,!1),t.strm.avail_out===0))return p}else if(t.match_available){if(n=I(t,0,t.window[t.strstart-1]),n&&y(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return p}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=I(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<s-1?t.strstart:s-1,i===x?(y(t,!0),t.strm.avail_out===0?Z:G):t.sym_next&&(y(t,!1),t.strm.avail_out===0)?p:X},Bi=(t,i)=>{let e,n,a,r;const l=t.window;for(;;){if(t.lookahead<=D){if(K(t),t.lookahead<=D&&i===R)return p;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=s&&t.strstart>0&&(a=t.strstart-1,n=l[a],n===l[++a]&&n===l[++a]&&n===l[++a])){r=t.strstart+D;do;while(n===l[++a]&&n===l[++a]&&n===l[++a]&&n===l[++a]&&n===l[++a]&&n===l[++a]&&n===l[++a]&&n===l[++a]&&a<r);t.match_length=D-(r-a),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=s?(e=I(t,1,t.match_length-s),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(e=I(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),e&&(y(t,!1),t.strm.avail_out===0))return p}return t.insert=0,i===x?(y(t,!0),t.strm.avail_out===0?Z:G):t.sym_next&&(y(t,!1),t.strm.avail_out===0)?p:X},Ni=(t,i)=>{let e;for(;;){if(t.lookahead===0&&(K(t),t.lookahead===0)){if(i===R)return p;break}if(t.match_length=0,e=I(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,e&&(y(t,!1),t.strm.avail_out===0))return p}return t.insert=0,i===x?(y(t,!0),t.strm.avail_out===0?Z:G):t.sym_next&&(y(t,!1),t.strm.avail_out===0)?p:X};function v(t,i,e,n,a){this.good_length=t,this.max_lazy=i,this.nice_length=e,this.max_chain=n,this.func=a}const J=[new v(0,0,0,0,xe),new v(4,4,8,4,mt),new v(4,5,16,8,mt),new v(4,6,32,32,mt),new v(4,4,16,16,$),new v(8,16,32,32,$),new v(8,16,128,128,$),new v(8,32,128,256,$),new v(32,128,258,1024,$),new v(32,258,258,4096,$)],Ci=t=>{t.window_size=2*t.w_size,L(t.head),t.max_lazy_match=J[t.level].max_lazy,t.good_match=J[t.level].good_length,t.nice_match=J[t.level].nice_length,t.max_chain_length=J[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=s-1,t.match_available=0,t.ins_h=0};function Zi(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ut,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.legacy_hash=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Li*2),this.dyn_dtree=new Uint16Array((2*zi+1)*2),this.bl_tree=new Uint16Array((2*Ui+1)*2),L(this.dyn_ltree),L(this.dyn_dtree),L(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Di+1),this.heap=new Uint16Array(2*zt+1),L(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*zt+1),L(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ot=t=>{if(!t)return 1;const i=t.state;return!i||i.strm!==t||i.status!==W&&i.status!==Zt&&i.status!==Ut&&i.status!==Lt&&i.status!==Dt&&i.status!==It&&i.status!==N&&i.status!==q?1:0},Ee=t=>{if(ot(t))return C(t,m);t.total_in=t.total_out=0,t.data_type=vi;const i=t.state;return i.pending=0,i.pending_out=0,i.wrap<0&&(i.wrap=-i.wrap),i.status=i.wrap===2?Zt:i.wrap?W:N,t.adler=i.wrap===2?0:1,i.last_flush=-2,fi(i),g},ve=t=>{const i=Ee(t);return i===g&&Ci(t.state),i},Fi=(t,i)=>ot(t)||t.state.wrap!==2?m:(t.state.gzhead=i,g),Ae=(t,i,e,n,a,r,l)=>{if(!t)return m;let h=1;if(i===wi&&(i=6),n<0?(h=0,n=-n):n>15&&(h=2,n-=16),a<1||a>Ai||e!==ut||n<8||n>15||i<0||i>9||r<0||r>xi||n===8&&h!==1)return C(t,m);n===8&&(n=9);const o=new Zi;return t.state=o,o.strm=t,o.status=W,o.wrap=h,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.legacy_hash=l?1:0,o.hash_bits=a+7,!o.legacy_hash&&o.hash_bits<15&&(o.hash_bits=15),o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+s-1)/s),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<a+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=i,o.strategy=r,o.method=e,ve(t)},Mi=(t,i)=>Ae(t,i,ut,mi,Ti,Ei),$i=(t,i)=>{if(ot(t)||i>Vt||i<0)return t?C(t,m):m;const e=t.state;if(!t.output||t.avail_in!==0&&!t.input||e.status===q&&i!==x)return C(t,t.avail_out===0?At:m);const n=e.last_flush;if(e.last_flush=i,e.pending!==0){if(b(t),t.avail_out===0)return e.last_flush=-1,g}else if(t.avail_in===0&&Jt(i)<=Jt(n)&&i!==x)return C(t,At);if(e.status===q&&t.avail_in!==0)return C(t,At);if(e.status===W&&e.wrap===0&&(e.status=N),e.status===W){let a=ut+(e.w_bits-8<<4)<<8,r=-1;if(e.strategy>=ht||e.level<2?r=0:e.level<6?r=1:e.level===6?r=2:r=3,a|=r<<6,e.strstart!==0&&(a|=Ii),a+=31-a%31,j(e,a),e.strstart!==0&&(j(e,t.adler>>>16),j(e,t.adler&65535)),t.adler=1,e.status=N,b(t),e.pending!==0)return e.last_flush=-1,g}if(e.status===Zt){if(t.adler=0,f(e,31),f(e,139),f(e,8),e.gzhead)f(e,(e.gzhead.text?1:0)+(e.gzhead.hcrc?2:0)+(e.gzhead.extra?4:0)+(e.gzhead.name?8:0)+(e.gzhead.comment?16:0)),f(e,e.gzhead.time&255),f(e,e.gzhead.time>>8&255),f(e,e.gzhead.time>>16&255),f(e,e.gzhead.time>>24&255),f(e,e.level===9?2:e.strategy>=ht||e.level<2?4:0),f(e,e.gzhead.os&255),e.gzhead.extra&&e.gzhead.extra.length&&(f(e,e.gzhead.extra.length&255),f(e,e.gzhead.extra.length>>8&255)),e.gzhead.hcrc&&(t.adler=U(t.adler,e.pending_buf,e.pending,0)),e.gzindex=0,e.status=Ut;else if(f(e,0),f(e,0),f(e,0),f(e,0),f(e,0),f(e,e.level===9?2:e.strategy>=ht||e.level<2?4:0),f(e,Ri),e.status=N,b(t),e.pending!==0)return e.last_flush=-1,g}if(e.status===Ut){if(e.gzhead.extra){let a=e.pending,r=(e.gzhead.extra.length&65535)-e.gzindex;for(;e.pending+r>e.pending_buf_size;){let h=e.pending_buf_size-e.pending;if(e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex,e.gzindex+h),e.pending),e.pending=e.pending_buf_size,e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a)),e.gzindex+=h,b(t),e.pending!==0)return e.last_flush=-1,g;a=0,r-=h}let l=new Uint8Array(e.gzhead.extra);e.pending_buf.set(l.subarray(e.gzindex,e.gzindex+r),e.pending),e.pending+=r,e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a)),e.gzindex=0}e.status=Lt}if(e.status===Lt){if(e.gzhead.name){let a=e.pending,r;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a)),b(t),e.pending!==0)return e.last_flush=-1,g;a=0}e.gzindex<e.gzhead.name.length?r=e.gzhead.name.charCodeAt(e.gzindex++)&255:r=0,f(e,r)}while(r!==0);e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a)),e.gzindex=0}e.status=Dt}if(e.status===Dt){if(e.gzhead.comment){let a=e.pending,r;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a)),b(t),e.pending!==0)return e.last_flush=-1,g;a=0}e.gzindex<e.gzhead.comment.length?r=e.gzhead.comment.charCodeAt(e.gzindex++)&255:r=0,f(e,r)}while(r!==0);e.gzhead.hcrc&&e.pending>a&&(t.adler=U(t.adler,e.pending_buf,e.pending-a,a))}e.status=It}if(e.status===It){if(e.gzhead.hcrc){if(e.pending+2>e.pending_buf_size&&(b(t),e.pending!==0))return e.last_flush=-1,g;f(e,t.adler&255),f(e,t.adler>>8&255),t.adler=0}if(e.status=N,b(t),e.pending!==0)return e.last_flush=-1,g}if(t.avail_in!==0||e.lookahead!==0||i!==R&&e.status!==q){let a=e.level===0?xe(e,i):e.strategy===ht?Ni(e,i):e.strategy===yi?Bi(e,i):J[e.level].func(e,i);if((a===Z||a===G)&&(e.status=q),a===p||a===Z)return t.avail_out===0&&(e.last_flush=-1),g;if(a===X&&(i===ui?ci(e):i!==Vt&&(St(e,0,0,!1),i===gi&&(L(e.head),e.lookahead===0&&(e.strstart=0,e.block_start=0,e.insert=0))),b(t),t.avail_out===0))return e.last_flush=-1,g}return i!==x?g:e.wrap<=0?qt:(e.wrap===2?(f(e,t.adler&255),f(e,t.adler>>8&255),f(e,t.adler>>16&255),f(e,t.adler>>24&255),f(e,t.total_in&255),f(e,t.total_in>>8&255),f(e,t.total_in>>16&255),f(e,t.total_in>>24&255)):(j(e,t.adler>>>16),j(e,t.adler&65535)),b(t),e.wrap>0&&(e.wrap=-e.wrap),e.pending!==0?g:qt)},Hi=t=>{if(ot(t))return m;const i=t.state.status;return t.state=null,i===N?C(t,pi):g},Pi=(t,i)=>{let e=i.length;if(ot(t))return m;const n=t.state,a=n.wrap;if(a===2||a===1&&n.status!==W||n.lookahead)return m;if(a===1&&(t.adler=we(t.adler,i,e,0)),n.wrap=0,e>=n.w_size){a===0&&(L(n.head),n.strstart=0,n.block_start=0,n.insert=0);let o=new Uint8Array(n.w_size);o.set(i.subarray(e-n.w_size,e),0),i=o,e=n.w_size}const r=t.avail_in,l=t.next_in,h=t.input;for(t.avail_in=e,t.next_in=0,t.input=i,K(n);n.lookahead>=s;){let o=n.strstart,_=n.lookahead-(s-1);do F(n,o),o++;while(--_);n.strstart=o,n.lookahead=s-1,K(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=s-1,n.match_available=0,t.next_in=l,t.input=h,t.avail_in=r,n.wrap=a,g};var Wi=Mi,Ki=Ae,Yi=ve,Xi=Ee,Gi=Fi,ji=$i,Vi=Hi,qi=Pi,Ji="pako deflate (from Nodeca project)",tt={deflateInit:Wi,deflateInit2:Ki,deflateReset:Yi,deflateResetKeep:Xi,deflateSetHeader:Gi,deflate:ji,deflateEnd:Vi,deflateSetDictionary:qi,deflateInfo:Ji};const Qi=(t,i)=>Object.prototype.hasOwnProperty.call(t,i);var tn=function(t){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const e=i.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(const n in e)Qi(e,n)&&(t[n]=e[n])}}return t},en=t=>{let i=0;for(let n=0,a=t.length;n<a;n++)i+=t[n].length;const e=new Uint8Array(i);for(let n=0,a=0,r=t.length;n<r;n++){let l=t[n];e.set(l,a),a+=l.length}return e},me={assign:tn,flattenChunks:en};let Te=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Te=!1}const rt=new Uint8Array(256);for(let t=0;t<256;t++)rt[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;rt[254]=rt[255]=1;var nn=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let i,e,n,a,r,l=t.length,h=0;for(a=0;a<l;a++)e=t.charCodeAt(a),(e&64512)===55296&&a+1<l&&(n=t.charCodeAt(a+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),a++)),h+=e<128?1:e<2048?2:e<65536?3:4;for(i=new Uint8Array(h),r=0,a=0;r<h;a++)e=t.charCodeAt(a),(e&64512)===55296&&a+1<l&&(n=t.charCodeAt(a+1),(n&64512)===56320&&(e=65536+(e-55296<<10)+(n-56320),a++)),e<128?i[r++]=e:e<2048?(i[r++]=192|e>>>6,i[r++]=128|e&63):e<65536?(i[r++]=224|e>>>12,i[r++]=128|e>>>6&63,i[r++]=128|e&63):(i[r++]=240|e>>>18,i[r++]=128|e>>>12&63,i[r++]=128|e>>>6&63,i[r++]=128|e&63);return i};const an=(t,i)=>{if(i<65534&&t.subarray&&Te)return String.fromCharCode.apply(null,t.length===i?t:t.subarray(0,i));let e="";for(let n=0;n<i;n++)e+=String.fromCharCode(t[n]);return e};var rn=(t,i)=>{const e=i||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,i));let n,a;const r=new Array(e*2);for(a=0,n=0;n<e;){let l=t[n++];if(l<128){r[a++]=l;continue}let h=rt[l];if(h>4){r[a++]=65533,n+=h-1;continue}for(l&=h===2?31:h===3?15:7;h>1&&n<e;)l=l<<6|t[n++]&63,h--;if(h>1){r[a++]=65533;continue}l<65536?r[a++]=l:(l-=65536,r[a++]=55296|l>>10&1023,r[a++]=56320|l&1023)}return an(r,a)},ln=(t,i)=>{i=i||t.length,i>t.length&&(i=t.length);let e=i-1;for(;e>=0&&(t[e]&192)===128;)e--;return e<0||e===0?i:e+rt[t[e]]>i?e:i},ke={string2buf:nn,buf2string:rn,utf8border:ln};function on(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var hn=on;const Se=Object.prototype.toString,{Z_NO_FLUSH:_n,Z_SYNC_FLUSH:sn,Z_FULL_FLUSH:fn,Z_FINISH:dn,Z_OK:ct,Z_STREAM_END:cn,Z_DEFAULT_COMPRESSION:un,Z_DEFAULT_STRATEGY:gn,Z_DEFLATED:pn}=be,wn={level:un,method:pn,chunkSize:16384,windowBits:15,memLevel:8,strategy:gn,legacyHash:!0};function gt(t){this.options=me.assign({},wn,t||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new hn,this.strm.avail_out=0;let e=tt.deflateInit2(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy,i.legacyHash);if(e!==ct)throw new Error(dt[e]);if(i.header&&tt.deflateSetHeader(this.strm,i.header),i.dictionary){let n;if(typeof i.dictionary=="string"?n=ke.string2buf(i.dictionary):Se.call(i.dictionary)==="[object ArrayBuffer]"?n=new Uint8Array(i.dictionary):n=i.dictionary,e=tt.deflateSetDictionary(this.strm,n),e!==ct)throw new Error(dt[e]);this._dict_set=!0}}gt.prototype.push=function(t,i){const e=this.strm,n=this.options.chunkSize;let a,r;if(this.ended)return!1;for(i===~~i?r=i:r=i===!0?dn:_n,typeof t=="string"?e.input=ke.string2buf(t):Se.call(t)==="[object ArrayBuffer]"?e.input=new Uint8Array(t):e.input=t,e.next_in=0,e.avail_in=e.input.length;;){if(e.avail_out===0&&(e.output=new Uint8Array(n),e.next_out=0,e.avail_out=n),(r===sn||r===fn)&&e.avail_out<=6){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(a=tt.deflate(e,r),a===cn)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),a=tt.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===ct;if(e.avail_out===0){this.onData(e.output);continue}if(r>0&&e.next_out>0){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(e.avail_in===0)break}return!0};gt.prototype.onData=function(t){this.chunks.push(t)};gt.prototype.onEnd=function(t){t===ct&&(this.result=me.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function bn(t,i){const e=new gt(i);if(e.push(t,!0),e.err)throw e.msg||dt[e.err];return e.result}var yn=bn,xn={deflate:yn};const{deflate:En}=xn;var vn=En;const ze=[];for(let t=0;t<256;t++){let i=t;for(let e=0;e<8;e++)i&1?i=3988292384^i>>>1:i=i>>>1;ze[t]=i}const Qt=4294967295;function An(t,i,e){let n=t;for(let a=0;a<e;a++)n=ze[(n^i[a])&255]^n>>>8;return n}function mn(t,i){return(An(Qt,t,i)^Qt)>>>0}function H(t,i){t.writeUint32(mn(new Uint8Array(t.buffer,t.byteOffset+t.offset-i,i),i))}const Tn=new Uint16Array([255]),kn=new Uint8Array(Tn.buffer);kn[0];const Sn=new Uint16Array([255]),zn=new Uint8Array(Sn.buffer);zn[0];const Un=Uint8Array.of(137,80,78,71,13,10,26,10);function Ln(t){t.writeBytes(Un)}const Dn="tEXt",In=0;new TextDecoder("latin1");function Rn(t){if(Ue(t),t.length===0||t.length>79)throw new Error("keyword length must be between 1 and 79")}const On=/^[\u0000-\u00FF]*$/;function Ue(t){if(!On.test(t))throw new Error("invalid latin1 text")}function Bn(t,i,e){Rn(i),Ue(e);const n=i.length+1+e.length;t.writeUint32(n),t.writeChars(Dn),t.writeChars(i),t.writeByte(In),t.writeChars(e),H(t,n+4)}const O={UNKNOWN:-1,GREYSCALE:0,TRUECOLOUR:2,INDEXED_COLOUR:3,GREYSCALE_ALPHA:4,TRUECOLOUR_ALPHA:6},Nn={DEFLATE:0},Cn={ADAPTIVE:0},V={NO_INTERLACE:0,ADAM7:1},Zn={level:3};class Fn extends st{_png;_zlibOptions;_colorType;_interlaceMethod;constructor(i,e={}){super(),this._colorType=O.UNKNOWN,this._zlibOptions={...Zn,...e.zlib},this._png=this._checkData(i),this._interlaceMethod=(e.interlace==="Adam7"?V.ADAM7:V.NO_INTERLACE)??V.NO_INTERLACE,this.setBigEndian()}encode(){if(Ln(this),this.encodeIHDR(),this._png.palette&&(this.encodePLTE(),this._png.palette[0].length===4&&this.encodeTRNS()),this.encodeData(),this._png.text)for(const[i,e]of Object.entries(this._png.text))Bn(this,i,e);return this.encodeIEND(),this.toArray()}encodeIHDR(){this.writeUint32(13),this.writeChars("IHDR"),this.writeUint32(this._png.width),this.writeUint32(this._png.height),this.writeByte(this._png.depth),this.writeByte(this._colorType),this.writeByte(Nn.DEFLATE),this.writeByte(Cn.ADAPTIVE),this.writeByte(this._interlaceMethod),H(this,17)}encodeIEND(){this.writeUint32(0),this.writeChars("IEND"),H(this,4)}encodePLTE(){const i=this._png.palette?.length*3;this.writeUint32(i),this.writeChars("PLTE");for(const e of this._png.palette)this.writeByte(e[0]),this.writeByte(e[1]),this.writeByte(e[2]);H(this,4+i)}encodeTRNS(){const i=this._png.palette.filter(e=>e.at(-1)!==255);this.writeUint32(i.length),this.writeChars("tRNS");for(const e of i)this.writeByte(e.at(-1));H(this,4+i.length)}encodeIDAT(i){this.writeUint32(i.length),this.writeChars("IDAT"),this.writeBytes(i),H(this,i.length+4)}encodeData(){const{width:i,height:e,channels:n,depth:a,data:r}=this._png,l=a<=8?Math.ceil(i*a/8)*n:Math.ceil(i*a/8*n/2),h=new st().setBigEndian();let o=0;if(this._interlaceMethod===V.NO_INTERLACE)for(let c=0;c<e;c++)h.writeByte(0),a===16?o=Pn(r,h,l,o):o=$n(r,h,l,o);else this._interlaceMethod===V.ADAM7&&(o=Hn(this._png,r,h,o));const _=h.toArray(),u=vn(_,this._zlibOptions);this.encodeIDAT(u)}_checkData(i){const{colorType:e,channels:n,depth:a}=Mn(i,i.palette),r={width:te(i.width,"width"),height:te(i.height,"height"),channels:n,data:i.data,depth:a,text:i.text,palette:i.palette};this._colorType=e;const l=a<8?Math.ceil(r.width*a/8)*r.height*n:r.width*r.height*n;if(r.data.length!==l)throw new RangeError(`wrong data size. Found ${r.data.length}, expected ${l}`);return r}}function te(t,i){if(Number.isInteger(t)&&t>0)return t;throw new TypeError(`${i} must be a positive integer`)}function Mn(t,i){const{channels:e=4,depth:n=8}=t;if(e!==4&&e!==3&&e!==2&&e!==1)throw new RangeError(`unsupported number of channels: ${e}`);const a={channels:e,depth:n,colorType:O.UNKNOWN};switch(e){case 4:a.colorType=O.TRUECOLOUR_ALPHA;break;case 3:a.colorType=O.TRUECOLOUR;break;case 1:i?a.colorType=O.INDEXED_COLOUR:a.colorType=O.GREYSCALE;break;case 2:a.colorType=O.GREYSCALE_ALPHA;break;default:throw new Error("unsupported number of channels")}return a}function $n(t,i,e,n){for(let a=0;a<e;a++)i.writeByte(t[n++]);return n}function Hn(t,i,e,n){const a=[{x:0,y:0,xStep:8,yStep:8},{x:4,y:0,xStep:8,yStep:8},{x:0,y:4,xStep:4,yStep:8},{x:2,y:0,xStep:4,yStep:4},{x:0,y:2,xStep:2,yStep:4},{x:1,y:0,xStep:2,yStep:2},{x:0,y:1,xStep:1,yStep:2}],{width:r,height:l,channels:h,depth:o}=t;let _=0;o===16?_=h*o/8/2:_=h*o/8;for(let u=0;u<7;u++){const c=a[u],d=Math.floor((r-c.x+c.xStep-1)/c.xStep),E=Math.floor((l-c.y+c.yStep-1)/c.yStep);if(d<=0||E<=0)continue;const k=d*_;for(let z=0;z<E;z++){const Mt=c.y+z*c.yStep,pt=o<=8?new Uint8Array(k):new Uint16Array(k);let Le=0;for(let M=0;M<d;M++){const $t=c.x+M*c.xStep;if($t<r&&Mt<l){const De=(Mt*r+$t)*_;for(let wt=0;wt<_;wt++)pt[Le++]=i[De+wt]}}if(e.writeByte(0),o===8)e.writeBytes(pt);else if(o===16)for(const M of pt)e.writeByte(M>>8&255),e.writeByte(M&255)}}return n}function Pn(t,i,e,n){for(let a=0;a<e;a++)i.writeUint16(t[n++]);return n}var ee;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.METRE=1]="METRE"})(ee||(ee={}));function Wn(t,i){return new Fn(t,i).encode()}exports.encodePng=Wn;
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("./style-C22Pbv3T.cjs"),K=require("./record-bindings-B86Sur_y.cjs"),W=require("./component-tree-DkGLEfZC.cjs"),v=require("./template-registry-CpysHAxy.cjs"),Ee=require("./dataset-IrlXbUvh.cjs"),z=require("./textwrap-BI-yJ6Wt.cjs"),w=require("./json-snapshot-D7PE1NsU.cjs"),de=require("./grid-geometry-CZ_cYB6O.cjs"),me=require("./rich-text-layout-ALlMoYOG.cjs"),k=require("./assets-Dfs2ElxI.cjs"),ye=require("./progress-B0ctFpKf.cjs"),Q=require("./drill-ByN8COs_.cjs"),q=require("./param-validation-C3HlcLLO.cjs"),ne=require("./template-catalog-Dua8h9ZA.cjs"),xe=require("./template-outline-BwRV_eRo.cjs"),he=require("./template-fragments-BajTajb4.cjs"),Te=require("./tree-CLpxYbKa.cjs");function Me(e,t,n){let r=0,o=e.length;for(;r<o;){const i=r+o>>>1;n(e[i])<t?r=i+1:o=i}return r}function Je(e){if(![e.leftMm,e.topMm,e.widthMm,e.heightMm].every(Number.isFinite)||e.widthMm<0||e.heightMm<0)throw new RangeError("Preview viewport must have finite coordinates and nonnegative dimensions.");return e}function yt(e){const t=e.rows.map(()=>[]);for(const n of e.cells){const r=Math.min(t.length,n.ri+(n.cell.rowSpan??1));for(let o=n.ri;o<r;o++)t[o].push(n)}for(const n of t)n.sort((r,o)=>r.xMm-o.xMm);return{cells(n){Je(n);const r=new Set,o=n.topMm+n.heightMm,i=n.leftMm+n.widthMm;let l=Me(e.rows,n.topMm,s=>s.pos+s.size);for(;l<t.length&&e.rows[l].pos<=o;){const s=t[l++];let a=Me(s,n.leftMm,c=>c.xMm+c.widthMm);for(;a<s.length&&s[a].xMm<=i;)r.add(s[a++])}return[...r].sort((s,a)=>s.ri-a.ri||s.ci-a.ci)}}}function Mt(e){const t=["h","v"].map(n=>e.filter(r=>r.kind===n).sort((r,o)=>r.pos-o.pos));return n=>{const r=[];return t.forEach((o,i)=>{const l=i===0?n.topMm:n.leftMm,s=l+(i===0?n.heightMm:n.widthMm),a=i===0?n.leftMm:n.topMm,c=a+(i===0?n.widthMm:n.heightMm);let d=Me(o,l,m=>m.pos);for(;d<o.length&&o[d].pos<=s;){const m=o[d++];m.to>=a&&m.from<=c&&r.push(m)}}),r}}function vt(){const e=[];return{mount(t){e.push(St(t))},update(t,n,r){Je(t);let o=!1;for(const i of e)o=i.update(t,i.component===n?r:void 0)||o;return o}}}function Et(e,t){const n=Math.max(8,e.widthMm/4),r=Math.max(8,e.heightMm/4);return{leftMm:e.leftMm-t.leftMm-n,topMm:e.topMm-t.topMm-r,widthMm:e.widthMm+2*n,heightMm:e.heightMm+2*r}}function xt(e,t,n){let r=t.get(n);return r||(r=e.table.ownerDocument.createElement("tr"),r.className=e.rowClass,r.setAttribute("role","row"),r.setAttribute("aria-rowindex",String(n+1)),r.style.cssText="all:unset;display:contents;box-sizing:border-box",t.set(n,r)),r}function Tt(e,t,n,r){const o=new Set(t),i=new Set(t.map(s=>s.ri));for(const[s,a]of n)o.has(s)||(a.remove(),n.delete(s));for(const[s,a]of r)i.has(s)||(a.remove(),r.delete(s));for(const s of t){let a=n.get(s);a||(a=e.drawCell(s),a.setAttribute("aria-colindex",String(s.ci+1)),n.set(s,a));const c=xt(e,r,s.ri);a.parentElement!==c&&c.appendChild(a)}const l=new Map;for(const s of t){const a=l.get(s.ri)??[];a.push(n.get(s)),l.set(s.ri,a)}for(const[s,a]of l)Fe(r.get(s),a);Fe(e.body,[...i].sort((s,a)=>s-a).map(s=>r.get(s)))}function Fe(e,t){let n=e.firstElementChild;for(const r of t)r===n?n=n.nextElementSibling:e.insertBefore(r,n)}function St(e){const t=de.resolveGridLayout(e.grid,e.component.widthMm,e.component.heightMm),n=new Map(t.cells.map(c=>[`${c.ri}:${c.ci}`,c])),r=yt(t),o=new Map,i=new Map,l=Mt(me.resolveGridStrokes(t,e.component));e.table.setAttribute("aria-rowcount",String(t.rows.length)),e.table.setAttribute("aria-colcount",String(t.columns.length));let s="",a="";return{component:e.component,update(c,d){const m=Et(c,e.component),h=r.cells(m),p=d&&n.get(`${d.rowIndex}:${d.columnIndex}`);p&&!h.includes(p)&&h.push(p),h.sort((E,B)=>E.ri-B.ri||E.ci-B.ci);const u=h.map(E=>`${E.ri}:${E.ci}`).join(";"),P=l(m),R=P.map(E=>`${E.kind}:${E.pos}:${E.from}:${E.to}`).join(";"),y=u!==s,T=R!==a;return y&&(s=u,Tt(e,h,o,i)),T&&(a=R,e.edgeHost.replaceChildren(...e.drawEdges(P))),y||T}}}const Ke=new WeakMap,Rt={root:"mr-root",page:"mr-page",comp:"mr-comp",text:"mr-text",lines:"mr-lines",line:"mr-line",rich:"mr-rich",paragraph:"mr-paragraph",segment:"mr-segment",image:"mr-image",shape:"mr-shape",grid:"mr-grid",row:"mr-row",cell:"mr-cell",unknown:"mr-unknown"};function $(e,t){return t?.classNames?.[e]??Rt[e]}class Ct{constructor(){this.props=[]}add(t,n){return n==null||n===!1||n===""?this:(this.props.push([t,String(n)]),this)}mm(t,n,r,o=2){return this.add(t,`${g.round(g.mmToPx(n,r),o)}px`)}toString(){let t="";for(const[n,r]of this.props)t+=`${n}:${r};`;return t}applyTo(t){const n=this.toString();n&&(t.style.cssText=n)}}function S(e,t="unset"){return new Ct().add("all",t).add("display",e).add("box-sizing","border-box")}function Ye(e,t,n){e.add("color",t.color).add("font-family",t.fontFamily).add("font-weight",t.bold!=null?t.bold?"700":"400":void 0).add("font-style",t.italic!=null?t.italic?"italic":"normal":void 0).add("text-decoration",t.underline!=null?t.underline?"underline":"none":void 0).add("letter-spacing",t.letterSpacing!=null?`${t.letterSpacing}pt`:void 0).add("line-height",String(g.resolveLineHeight(t))).add("text-align",t.align);const r=g.resolveFontSize(t,n);e.add("font-size",`${g.round(r.fontSizePx,2)}px`)}function Pt(e,t,n){const r=t.style??{};Ye(e,r,n),e.add("background-color",r.backgroundColor).add("opacity",r.opacity!=null?String(r.opacity):void 0).add("transform",r.rotateDeg?`rotate(${r.rotateDeg}deg)`:void 0)}function _e(e,t,n,r,o,i){const l=e.cell,s=i.createElement("td");s.className=$("cell",o),s.dataset.mrRowIndex=String(e.ri),s.dataset.mrColumnIndex=String(e.ci),s.setAttribute("role",t.table?.role==="header"?"columnheader":"cell"),l.colSpan&&(s.colSpan=l.colSpan),l.rowSpan&&(s.rowSpan=l.rowSpan);const a=g.mergeComponentStyles(t.style,l.style),c=S("block").add("position","absolute").mm("left",e.xMm,r).mm("top",e.yMm,r).mm("width",e.widthMm,r).mm("height",e.heightMm,r).add("background-color",a.backgroundColor).add("vertical-align",a.verticalAlign??"middle");Ye(c,a,r),c.applyTo(s);const d=i.createElement("div");d.className="mr-cell-content",S("flex").add("position","absolute").mm("left",n+(l.indentMm??0),r).mm("right",n,r).mm("top",n,r).mm("bottom",n,r).add("flex-direction","column").add("justify-content",a.verticalAlign==="top"?"flex-start":a.verticalAlign==="bottom"?"flex-end":"center").add("overflow-wrap","anywhere").add("overflow","hidden").applyTo(d),l.richParagraphs?.length?d.appendChild(Ze({...t,kind:"text",richParagraphs:l.richParagraphs},r,o,i)):l.text!=null&&d.append(l.text);for(const m of l.children??[])d.appendChild(Se(m,r,o,i));return s.appendChild(d),s}function At(e,t,n,r){return Xe(me.resolveGridStrokes(e,t),n,r)}function Xe(e,t,n){return e.map(r=>{const o=`${g.round(r.widthPt*t/72,2)}px solid ${r.color}`,i=n.createElement("div");i.className="mr-grid-edge",i.setAttribute("aria-hidden","true");const l=r.kind==="h";return S("block").add("position","absolute").add("pointer-events","none").mm("left",l?r.from:r.pos,t).mm("top",l?r.pos:r.from,t).mm("width",l?r.to-r.from:0,t).mm("height",l?0:r.to-r.from,t).add(l?"border-top":"border-left",o).applyTo(i),i})}function $t(e,t,n,r,o){const i=o.createElement("table");i.className=$("grid",r),i.setAttribute("role","table"),S("block").add("position","relative").add("width","100%").add("height","100%").applyTo(i);const l=o.createElement("tbody");S("contents").applyTo(l),i.appendChild(l);const s=t.style?.rotateDeg?void 0:Ke.get(r);if(s){const m=o.createElement("div");S("block").add("position","relative").add("width","100%").add("height","100%").applyTo(m);const h=o.createElement("div");return S("contents").applyTo(h),h.setAttribute("aria-hidden","true"),s.mount({grid:e,component:t,table:i,rowClass:$("row",r),body:l,edgeHost:h,drawCell:p=>_e(p,t,e.paddingMm??.5,n,{...r},o),drawEdges:p=>Xe(p,n,o)}),m.append(i,h),m}const a=de.resolveGridLayout(e,t.widthMm,t.heightMm),c=e.cells.map(()=>{const m=o.createElement("tr");return m.className=$("row",r),m.setAttribute("role","row"),S("contents").applyTo(m),l.appendChild(m),m});for(const m of a.cells)c[m.ri].appendChild(_e(m,t,e.paddingMm??.5,n,r,o));const d=o.createElement("div");return S("block").add("position","relative").add("width","100%").add("height","100%").applyTo(d),d.append(i,...At(a,t,n,o)),d}function Ot(e,t,n,r){const o=r.createElement("div");o.className=$("paragraph",n),S("block").add("text-align",e.align).add("line-height",e.lineHeight!=null?String(e.lineHeight):void 0).mm("margin-top",e.spaceBeforeMm??0,t).mm("margin-bottom",e.spaceAfterMm??0,t).mm("text-indent",e.indentMm??0,t).applyTo(o);for(const i of e.segments||[]){const l=r.createElement("span");l.className=$("segment",n),l.textContent=i.kind==="field"?i.field??"":i.text??"";const s=S("inline");if(i.style){const a=i.style;s.add("color",a.color).add("background-color",a.backgroundColor).add("font-family",a.fontFamily).add("line-height",a.lineHeight).add("letter-spacing",a.letterSpacing==null?void 0:`${a.letterSpacing*t/72}px`).add("font-weight",a.bold!=null?a.bold?"700":"400":void 0).add("font-style",a.italic!=null?a.italic?"italic":"normal":void 0).add("text-decoration",a.underline!=null?a.underline?"underline":"none":void 0),(a.fontSize!=null||a.fontSizePx!=null)&&s.add("font-size",`${g.round(g.resolveFontSize(a,t).fontSizePx,2)}px`)}s.applyTo(l),o.appendChild(l)}return o}function Ze(e,t,n,r){if(W.isRichText(e)){const o=r.createElement("div");o.className=$("rich",n),S("block").applyTo(o);for(const i of e.richParagraphs)o.appendChild(Ot(i,t,n,r));return o}if(Array.isArray(e.lines)&&e.lines.length>0){const o=r.createElement("div");o.className=$("lines",n),S("block").applyTo(o);for(const i of e.lines){const l=r.createElement("div");l.className=$("line",n),l.textContent=i,S("block").add("white-space","pre").add("min-height","1lh").applyTo(l),o.appendChild(l)}return o}return e.text??""}function kt(e,t,n,r){const o=r.createElement("div");o.className=$("text",n);const i=e.style||{};return S("flex").add("width","100%").add("height","100%").add("flex-direction","column").add("justify-content",i.verticalAlign==="middle"?"center":i.verticalAlign==="bottom"?"flex-end":"flex-start").add("overflow-wrap","anywhere").add("overflow","hidden").applyTo(o),o.append(Ze(e,t,n,r)),o}function Lt(e,t,n){const r=n.createElement("img");return r.className=$("image",t),r.src=e.imageData,S("block").add("width","100%").add("height","100%").add("object-fit","contain").applyTo(r),r.alt=e.kind,r}function je(e,t,n,r){const o=r.createElement("div");o.className=$("shape",n);const i=e.style||{},l=g.resolveStroke(i),s=g.resolveBoxBorders(i),a=`${g.round(l.widthPt*t/72,2)}px solid ${l.color}`,c=S("block");return e.grid?c.add("position","relative"):e.kind==="rect"?(s.top&&c.add("border-top",a),s.right&&c.add("border-right",a),s.bottom&&c.add("border-bottom",a),s.left&&c.add("border-left",a)):e.kind==="ellipse"?(s.inner&&c.add("border",a).add("border-radius","50%"),i.backgroundColor&&c.add("background-color",i.backgroundColor)):e.kind==="line"&&c.add("height","0").add("border-top",a),c.add("box-sizing","border-box").add("width","100%").add("height","100%"),c.applyTo(o),o}function It(e,t,n){const r=n.createElementNS("http://www.w3.org/2000/svg","svg"),o=g.mmToPx(e.widthMm,t),i=g.mmToPx(e.heightMm,t);r.setAttribute("width",String(Math.max(1,o))),r.setAttribute("height",String(Math.max(1,i))),r.setAttribute("aria-hidden","true"),r.style.overflow="visible",r.style.display="block";const l=n.createElementNS("http://www.w3.org/2000/svg","line");l.setAttribute("x1","0"),l.setAttribute("x2",String(o)),l.setAttribute("y1",e.lineDirection==="up"?String(i):"0"),l.setAttribute("y2",e.lineDirection==="up"?"0":String(i));const s=g.resolveStroke({...e.style,borderColor:e.style?.lineColor??e.style?.borderColor});return l.setAttribute("stroke",s.color),l.setAttribute("stroke-width",String(s.widthPt*t/72)),r.appendChild(l),r}function Se(e,t,n,r){const o=r.createElement("div");o.className=`${$("comp",n)} mr-kind-${e.kind}`;const i=S("block").add("position","absolute").mm("left",e.leftMm,t).mm("top",e.topMm,t).mm("width",e.widthMm,t).mm("height",e.heightMm,t).add("box-sizing","border-box");if(Pt(i,e,t),i.applyTo(o),W.isImageBackedComponent(e))return o.appendChild(Lt(e,n,r)),o;if(e.kind==="text")return o.appendChild(kt(e,t,n,r)),o;if(e.grid){const s=je(e,t,n,r);return s.appendChild($t(e.grid,e,t,n,r)),o.appendChild(s),o}if(e.kind==="line"&&e.lineDirection)return o.appendChild(It(e,t,r)),o;if(e.kind==="line"||e.kind==="rect"||e.kind==="ellipse")return o.appendChild(je(e,t,n,r)),o;const l=r.createElement("div");return l.className=$("unknown",n),S("block").applyTo(l),l.textContent=e.fallbackText??`[${e.kind}]`,l.dataset.mrUnsupported=e.kind,l.setAttribute("role","note"),o.appendChild(l),o}function Re(e,t,n,r){const o=r.createElement("div");return o.className=$("page",n),S("block","initial").add("position","relative").add("font-family",g.DEFAULT_FONT_FAMILY).add("font-size",`${g.round(g.resolveFontSize(void 0,t).fontSizePx,2)}px`).add("line-height",String(g.resolveLineHeight(void 0))).add("white-space","pre-wrap").add("direction","ltr").mm("width",e.pageWidthMm,t).mm("height",e.pageHeightMm,t).add("background-color","#fff").add("color",g.DEFAULT_TEXT_COLOR).add("overflow","hidden").add("box-sizing","border-box").applyTo(o),e.components.forEach((i,l)=>{const s=Se(i,t,n,r);s.dataset.mrComponentIndex=String(l),o.appendChild(s)}),o}function Dt(e,t,n={}){const r=n.dpi??96;k.reportOutputDiagnostics(e,"dom",n);const o=t.createElement("div");return o.className=$("root",n),S("block").applyTo(o),o.dataset.schemaVersion=e.schemaVersion,e.pages.forEach(i=>{o.appendChild(Re(i,r,n,t))}),o}function Nt(e,t,n,r){const o={...n},i=vt();return Ke.set(o,i),{element:Re(e,t,o,r),update(s,a){return i.update(s,a&&e.components[a.componentIndex],a)}}}function Ce(e,t,n,r,o,i,l,s="top"){e.font=`${t.italic?"italic ":""}${t.bold?"bold ":""}${t.fontSizePx}px ${l}`,"letterSpacing"in e&&(e.letterSpacing="0px"),e.fillStyle=t.color,e.textBaseline="alphabetic";const a=t.fontSizePx*t.lineHeight,c=t.text===""?[""]:t.text.split(`
2
- `),d=c.length*a;let m=r;s==="middle"?m=r+(i-d)/2:s==="bottom"&&(m=r+i-d),c.forEach((h,p)=>{const u=m+p*a+t.fontSizePx*.8;Ft(e,h,t,n,u,o),t.underline&&h&&_t(e,h,t,n,u,o)}),e.textAlign="left"}function Ft(e,t,n,r,o,i){const l=Array.from(t),s=n.letterSpacingPx??0;if(!s){e.textAlign=n.align==="center"?"center":n.align==="right"?"right":"left";const m=n.align==="center"?r+i/2:n.align==="right"?r+i:r;e.fillText(t,m,o);return}const a=e.measureText(t).width+Math.max(0,l.length-1)*s,c=n.align==="center"?r+(i-a)/2:n.align==="right"?r+i-a:r;e.textAlign="left";let d="";l.forEach((m,h)=>{e.fillText(m,c+e.measureText(d).width+h*s,o),d+=m})}function _t(e,t,n,r,o,i){const l=e.measureText(t).width+Math.max(0,Array.from(t).length-1)*(n.letterSpacingPx??0),s=n.align==="center"?r+(i-l)/2:n.align==="right"?r+i-l:r;e.strokeStyle=n.color,e.lineWidth=Math.max(.5,n.fontSizePx/20),e.beginPath(),e.moveTo(s,o+1),e.lineTo(s+l,o+1),e.stroke()}function Qe(e,t,n,r,o){const i=r/72,l=s=>{e.font=`${s.italic?"italic ":""}${s.bold?"bold ":""}${g.resolveFontSize(s,r).fontSizePx}px ${s.fontFamily??o}`,"letterSpacing"in e&&(e.letterSpacing="0px")};me.drawRichText(t,{x:n.x/i,yTop:-n.y/i,width:n.width/i,height:n.height/i},{measure(s,a){return l(a),e.measureText(s).width/i+(a.letterSpacing??0)},draw(s,a,c,d,m){const h=g.resolveFontSize(a,r).fontSizePx,p=-d*i-h*.8;a.backgroundColor&&(e.fillStyle=a.backgroundColor,e.fillRect(c*i,p,m*i,h*g.resolveLineHeight(a))),Ce(e,{text:s,fontSizePx:h,bold:!!a.bold,italic:a.italic,underline:a.underline,color:g.resolveTextColor(a),align:"left",lineHeight:g.resolveLineHeight(a),letterSpacingPx:(a.letterSpacing??0)*i},c*i,p,m*i,h,a.fontFamily??o)}})}function D(e){if(e?.aborted)throw e.reason??new DOMException("The operation was aborted.","AbortError")}const jt=(e,t)=>(D(t),/^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.test(e)?new Promise((n,r)=>{const o=new Image,i=()=>{o.onload=null,o.onerror=null,t?.removeEventListener("abort",l)},l=()=>{i(),o.src="",r(t?.reason??new DOMException("The operation was aborted.","AbortError"))};o.onload=()=>{i(),n(o)},o.onerror=()=>{i(),r(new Error("Image could not be decoded for Canvas output."))},t?.addEventListener("abort",l,{once:!0}),o.src=e}):Promise.reject(new TypeError("Canvas imageData must be an image data URL; provide imageLoader for other sources.")));function zt(e,t,n){return D(n),n?new Promise((r,o)=>{const i=()=>o(n.reason??new DOMException("The operation was aborted.","AbortError"));n.addEventListener("abort",i,{once:!0}),Promise.resolve().then(()=>e(t,n)).then(r,o).finally(()=>n.removeEventListener("abort",i))}):e(t)}function*Pe(e){function*t(n,r,o,i){if(i.has(n))throw new TypeError("Cyclic grid children cannot be rendered.");W.isImageBackedComponent(n)&&(yield{component:n,componentIndex:r,componentPath:o});const l=new Set(i).add(n);for(const[s,a]of(n.grid?.cells??[]).entries())for(const[c,d]of a.entries())for(const[m,h]of(d?.children??[]).entries())yield*t(h,r,[...o,s,c,m],l)}for(const[n,r]of e.components.entries())yield*t(r,n,[],new Set)}async function Bt(e,t,n){const r=new Map;for(const{component:o}of Pe(e))!W.isImageBackedComponent(o)||r.has(o.imageData)||r.set(o.imageData,await zt(t,o.imageData,n));return D(n),r}function Ht(e,t,n,r,o,i){const l=t,s=l.naturalWidth??l.width??o,a=l.naturalHeight??l.height??i;if(s<=0||a<=0)throw new RangeError("Decoded Canvas image dimensions must be positive.");const c=Math.min(o/s,i/a),d=s*c,m=a*c;e.drawImage(t,n+(o-d)/2,r+(i-m)/2,d,m)}function et(e){return Q.createPageWindowIndex(e.pageHeightsPx,e.gapPx).window(e.viewportHeightPx,e.scrollTopPx,e.overscan)}const Ae=96/25.4;function ge(e,t=96){const n=t/96*Ae;return{widthPx:Math.max(1,Math.round(e.pageWidthMm*n)),heightPx:Math.max(1,Math.round(e.pageHeightMm*n))}}function tt(e,t,n,r=64e6){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)throw new RangeError("Canvas dpr and dpi must be positive finite numbers.");if(!Number.isFinite(r)||r<=0)throw new RangeError("maxCanvasPixels must be positive and finite.");const o=ge(e,n),i=Math.round(o.widthPx*t),l=Math.round(o.heightPx*t);if(!Number.isSafeInteger(i)||!Number.isSafeInteger(l)||i*l>r)throw new RangeError("Canvas page exceeds maxCanvasPixels; reduce resolution or split the report.");return{width:i,height:l}}function nt(e,t,n,r){const o=document.createElement("canvas"),{widthPx:i,heightPx:l}=ge(e,n),s=tt(e,t,n,r);o.width=s.width,o.height=s.height,o.style.width=`${i}px`,o.style.height=`${l}px`;const a=o.getContext("2d");if(!a)throw new Error("当前环境不支持 Canvas 2D(测试需真浏览器,见 e2e/canvas.spec.ts)");return a.scale(t,t),a.fillStyle="#ffffff",a.fillRect(0,0,i,l),{canvas:o,ctx:a}}function Ut(e,t=96){return g.resolveFontSize(e,t).fontSizePx}function qt(e,t,n,r,o,i,l){for(const s of me.resolveGridStrokes(t,n))e.strokeStyle=s.color,e.lineWidth=g.ptToPx(s.widthPt,l),e.beginPath(),s.kind==="v"?(e.moveTo(r+s.pos*i,o+s.from*i),e.lineTo(r+s.pos*i,o+s.to*i)):(e.moveTo(r+s.from*i,o+s.pos*i),e.lineTo(r+s.to*i,o+s.pos*i)),e.stroke()}function Vt(e,t,n,r,o,i){e.beginPath(),t.top&&(e.moveTo(n,r),e.lineTo(n+o,r)),t.right&&(e.moveTo(n+o,r),e.lineTo(n+o,r+i)),t.bottom&&(e.moveTo(n+o,r+i),e.lineTo(n,r+i)),t.left&&(e.moveTo(n,r+i),e.lineTo(n,r)),e.stroke()}function Wt(e,t,n,r,o,i,l,s,a,c,d,m){const h=de.resolveGridLayout(t,i/s,l/s);for(const p of h.cells){const u=p.cell.style?.backgroundColor??n.style?.backgroundColor;u&&(e.fillStyle=u,e.fillRect(r+p.xMm*s,o+p.yMm*s,p.widthMm*s,p.heightMm*s))}qt(e,h,n,r,o,s,a);for(const p of h.cells)Gt(e,p,n,r,o,s,a,c,d,m)}function Gt(e,t,n,r,o,i,l,s,a,c){const d=n.grid?.paddingMm??.5,m=t.cell.text??"",h=g.mergeComponentStyles(n.style,t.cell.style),p=g.resolveFontSize(h,l),u=t.cell.indentMm??0,P=Math.max(0,t.widthMm-2*d-u),R=z.wrapText(m,P,{fontSizePt:p.fontSizePt,bold:h.bold,italic:h.italic,fontFamily:h.fontFamily??s,letterSpacingPt:h.letterSpacing},a).join(`
3
- `),y={x:r+(t.xMm+d+u)*i,y:o+(t.yMm+d)*i,width:P*i,height:Math.max(0,t.heightMm-2*d)*i};e.save(),e.beginPath(),e.rect(y.x,y.y,y.width,y.height),e.clip(),t.cell.richParagraphs?.length?Qe(e,{...n,richParagraphs:t.cell.richParagraphs,style:{verticalAlign:"middle",...h}},y,l,s):Ce(e,{text:R,fontSizePx:p.fontSizePx,bold:h.bold??!1,italic:h.italic,underline:h.underline,color:g.resolveTextColor(h,g.DEFAULT_TEXT_COLOR),align:h.align??"left",lineHeight:g.resolveLineHeight(h),letterSpacingPx:g.ptToPx(h.letterSpacing??0,l)},r+(t.xMm+d+u)*i,o+(t.yMm+d)*i,P*i,Math.max(0,t.heightMm-2*d)*i,h.fontFamily??s,h.verticalAlign??"middle");for(const T of t.cell.children??[])pe(e,{...T,leftMm:T.leftMm+y.x/i,topMm:T.topMm+y.y/i},i,l,s,a,c);e.restore()}function Jt(e,t,n,r,o,i,l,s,a){const c=t.style??{},d=g.resolveFontSize(c,l);if(W.isRichText(t)){Qe(e,t,{x:n,y:r,width:o,height:i},l,s);return}const m=t.lines?.length?t.lines.join(`
4
- `):z.wrapText(t.text??"",t.widthMm,{fontSizePt:d.fontSizePt,bold:c.bold,italic:c.italic,fontFamily:c.fontFamily??s,letterSpacingPt:c.letterSpacing},a).join(`
5
- `);Ce(e,{text:m,fontSizePx:d.fontSizePx,bold:c.bold??!1,italic:c.italic,underline:c.underline,color:g.resolveTextColor(c),align:c.align??"left",lineHeight:g.resolveLineHeight(c),letterSpacingPx:g.ptToPx(c.letterSpacing??0,l)},n,r,o,i,c.fontFamily??s,c.verticalAlign)}function pe(e,t,n,r,o,i,l){const s=t.leftMm*n,a=t.topMm*n,c=t.widthMm*n,d=t.heightMm*n,m=t.style??{};if(W.isImageBackedComponent(t)){const h=l?.get(t.imageData);h?Ht(e,h,s,a,c,d):ze(e,t,s,a,c,d);return}if(t.grid){Wt(e,t.grid,t,s,a,c,d,n,r,o,i,l);return}switch(t.kind){case"text":{Jt(e,t,s,a,c,d,r,o,i);break}case"rect":{const h=g.resolveStroke(m),p=g.resolveBoxBorders(m);m.backgroundColor&&(e.fillStyle=m.backgroundColor,e.fillRect(s,a,c,d)),p.inner&&(e.strokeStyle=h.color,e.lineWidth=g.ptToPx(h.widthPt,r),Vt(e,p,s,a,c,d));break}case"line":{const h=g.resolveStroke({...m,borderColor:m.lineColor??m.borderColor});e.strokeStyle=h.color,e.lineWidth=g.ptToPx(h.widthPt,r),e.beginPath();const p=t.lineDirection==="up"?a+d:t.lineDirection==="down"?a:a+d/2,u=t.lineDirection==="up"?a:t.lineDirection==="down"?a+d:a+d/2;e.moveTo(s,p),e.lineTo(s+c,u),e.stroke();break}case"ellipse":{const h=g.resolveStroke(m);e.strokeStyle=h.color,e.lineWidth=g.ptToPx(h.widthPt,r),m.backgroundColor&&(e.fillStyle=m.backgroundColor,e.beginPath(),e.ellipse(s+c/2,a+d/2,c/2,d/2,0,0,Math.PI*2),e.fill()),e.beginPath(),e.ellipse(s+c/2,a+d/2,c/2,d/2,0,0,Math.PI*2),e.stroke();break}default:ze(e,t,s,a,c,d);break}}function ze(e,t,n,r,o,i){e.save(),e.strokeStyle="#94a3b8",e.strokeRect(n,r,o,i),e.fillStyle="#64748b",e.font="12px sans-serif",e.fillText(t.fallbackText??`[${t.kind}]`,n+3,r+14),e.restore()}async function Kt(e,t={}){if(typeof document>"u")throw new Error("renderPlanToImages 需要浏览器环境(SSR/Node 请在客户端钩子中调用)");const{format:n="png",quality:r=.92,...o}=t;if(n!=="png"&&n!=="jpeg")throw new TypeError("Image format must be png or jpeg.");if(!Number.isFinite(r)||r<0||r>1)throw new RangeError("Image quality must be between 0 and 1.");D(t.signal);const i=await k.resolvePlanAssets(e,{...t,format:"canvas"});e=i.plan;const l=[...i.diagnostics,...k.reportOutputDiagnostics(e,"canvas",t)],s=n==="jpeg"?"image/jpeg":"image/png",a=[],c=Math.min(e.pages.length-1,t.end??e.pages.length-1);for(let d=Math.max(0,t.start??0);d<=c;d++){D(t.signal);const m=await rt(e.pages[d],d,o,l);try{a.push(await Yt(m,s,r,t.signal))}finally{m.width=0,m.height=0}await ye.outputCheckpoint(t,a.length,c-Math.max(0,t.start??0)+1)}return D(t.signal),{blobs:a,diagnostics:l}}function Yt(e,t,n,r){return D(r),new Promise((o,i)=>{const l=()=>i(r?.reason??new DOMException("The operation was aborted.","AbortError"));r?.addEventListener("abort",l,{once:!0});try{e.toBlob(s=>{r?.removeEventListener("abort",l),s?o(s):i(new Error("Canvas encoding failed; no empty image was emitted."))},t,n)}catch(s){r?.removeEventListener("abort",l),i(s)}})}function Xt(e,t={}){if(D(t.signal),typeof document>"u")throw new Error("renderPlanToCanvas 需要浏览器环境(SSR 请在客户端钩子中调用)");const n=t.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),r=t.dpi??96,o=r/96*Ae,i=t.fontFamily??g.DEFAULT_FONT_FAMILY,l=t.measurer??z.heuristicMeasurer,s=Math.max(0,t.start??0),a=Math.min(e.pages.length-1,t.end??e.pages.length-1),c=[],d=k.reportOutputDiagnostics(e,"canvas",t),m=Zt(e,s,a);for(const h of m)k.notifyOutputDiagnostic(h,t),d.push(h);if(t.fidelity==="strict"&&m.length)throw new k.OutputFidelityError(d);for(let h=s;h<=a;h++){D(t.signal);const p=e.pages[h],{canvas:u,ctx:P}=nt(p,n,r,t.maxCanvasPixels);for(const R of p.components)pe(P,R,o,r,i,l);c.push(u)}return{canvases:c,diagnostics:d}}function Zt(e,t,n){return n<t?[]:e.pages.slice(t,n+1).flatMap((r,o)=>[...Pe(r)].map(({component:i,componentIndex:l,componentPath:s})=>({code:"async-image-required",severity:"warning",format:"canvas",pageIndex:t+o,componentIndex:l,componentPath:s,kind:i.kind,nid:i.nid,message:"Use renderPlanToCanvasAsync or renderPlanToImages to decode and include images."})))}async function Qt(e,t={}){if(typeof document>"u")throw new Error("renderPlanToCanvasAsync 需要浏览器环境(Node 请使用 PDF 或 XLSX 输出)");D(t.signal);const n=await k.resolvePlanAssets(e,{...t,format:"canvas"});e=n.plan;const r=[...n.diagnostics,...k.reportOutputDiagnostics(e,"canvas",t)],o=[],i=Math.min(e.pages.length-1,t.end??e.pages.length-1);for(let l=Math.max(0,t.start??0);l<=i;l++)o.push(await rt(e.pages[l],l,t,r));return{canvases:o,diagnostics:r}}async function rt(e,t,n,r){const o=n.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),i=n.dpi??96,l=n.fontFamily??g.DEFAULT_FONT_FAMILY,s=await ot(e,t,n,r);D(n.signal);const{canvas:a,ctx:c}=nt(e,o,i,n.maxCanvasPixels);for(const d of e.components)pe(c,d,i/25.4,i,l,n.measurer??z.heuristicMeasurer,s);return a}async function ot(e,t,n,r){const o=n.imageLoader??jt;return Bt(e,async(i,l)=>{try{return await o(i,l)}catch(s){if(l?.aborted)throw s;const a=[...Pe(e)].find(({component:p})=>p.imageData===i),{component:c,componentIndex:d,componentPath:m}=a,h={code:"image-decode-failed",severity:"warning",format:"canvas",pageIndex:t,componentIndex:d,componentPath:m,kind:c.kind,nid:c.nid,message:"Image decoding failed; raster output was cancelled instead of omitting the image."};throw r.push(h),k.notifyOutputDiagnostic(h,n),s}},n.signal)}function en(e,t={}){const n=t.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),r=t.dpi??96,o=r/96*Ae,i=t.fontFamily??g.DEFAULT_FONT_FAMILY,l=t.measurer??z.heuristicMeasurer,s=t.overscan??1,a=t.gapPx??18,c=t.pagesPerFrame??1,d=e.pages.map(b=>b.pageHeightMm*o),m=Math.max(1,...e.pages.map(b=>b.pageWidthMm*o)),h={start:0,end:-1};let p=null,u=null,P=null,R=null,y=[],T=0,E=[],B=0,H=new AbortController;const Ie=[];function ut(){const b=p;b.innerHTML="",u=document.createElement("div"),u.style.cssText=`width:${m}px;margin:0 auto;`,P=document.createElement("div"),R=document.createElement("div"),u.appendChild(P),y=[];const O=Math.min(e.pages.length,3+s*2);for(let V=0;V<O;V++){const C=document.createElement("div");C.style.cssText=`margin:0 auto ${a}px;box-shadow:0 2px 8px rgba(0,0,0,.35);background:#fff;`,u.appendChild(C),y.push(C)}u.appendChild(R),b.appendChild(u)}async function ft(b,O){const V=B,C=await k.resolvePlanAssets(e,{...t,signal:H.signal,format:"canvas",start:O,end:O});Ie.push(...C.diagnostics);const L=C.plan.pages[O],ae=await ot(L,O,{...t,signal:H.signal},Ie);if(V!==B||!p)return;const{widthPx:we,heightPx:be}=ge(L,r);let U=b.firstElementChild;(!U||U.tagName!=="CANVAS")&&(U=document.createElement("canvas"),b.innerHTML="",b.appendChild(U));const Ne=tt(L,n,r,t.maxCanvasPixels);U.width=Ne.width,U.height=Ne.height,U.style.width=`${we}px`,U.style.height=`${be}px`;const Y=U.getContext("2d");if(Y){Y.setTransform(1,0,0,1,0,0),Y.scale(n,n),Y.fillStyle="#ffffff",Y.fillRect(0,0,we,be);for(const bt of L.components)pe(Y,bt,o,r,i,l,ae);U.dataset.canvasPage=String(O),b.style.height=`${be}px`,b.style.width=`${we}px`}}function wt(b){B++,h.start=b.start,h.end=b.end,P.style.height=`${b.start*a+d.slice(0,b.start).reduce((C,L)=>C+L,0)}px`;const O=e.pages.length-1-b.end;R.style.height=`${O*a+d.slice(b.end+1).reduce((C,L)=>C+L,0)}px`;const V=b.end-b.start+1;y.forEach((C,L)=>{if(L<V){C.style.display="";const ae=b.start+L;C.style.height=`${d[ae]??0}px`}else C.style.display="none"}),E=[];for(let C=b.start;C<=b.end;C++){const L=y[C-b.start];if(!L)continue;L.firstElementChild?.dataset?.canvasPage!==String(C)&&E.push(C)}fe()}function fe(){T||E.length===0||(T=requestAnimationFrame(()=>{T=0;let b=Math.max(1,c);for(;E.length>0&&b-- >0;){const O=E.shift(),V=y[O-h.start];V&&ft(V,O).catch(()=>{})}E.length>0&&fe()}))}function oe(){T||(T=requestAnimationFrame(()=>{T=0;const b=p,O=et({pageHeightsPx:d,viewportHeightPx:b.clientHeight,scrollTopPx:b.scrollTop,overscan:s,gapPx:a});O.start!==h.start||O.end!==h.end?wt(O):fe()}))}let ie=null;return{attach(b){if(typeof document>"u")throw new Error("createCanvasPager 需要浏览器环境(SSR 请在客户端钩子中调用 attach)");D(t.signal),H=new AbortController,t.signal?.addEventListener("abort",De,{once:!0}),k.reportOutputDiagnostics(e,"canvas",t),p=b,ut(),b.addEventListener("scroll",oe,{passive:!0}),typeof ResizeObserver<"u"&&(ie=new ResizeObserver(()=>oe()),ie.observe(b)),oe()},destroy(){B++,H.abort(),t.signal?.removeEventListener("abort",De),T&&cancelAnimationFrame(T),T=0,ie?.disconnect(),ie=null,p?.removeEventListener("scroll",oe),E=[],u?.remove(),p=null},window(){return{...h}}};function De(){H.abort(t.signal?.reason)}}function $e(e,t,n){let r,o;if(typeof e=="string"){const i=g.PAPER_SIZES[e];if(!i)throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(g.PAPER_SIZES).join("/")})`);r=i.widthMm,o=i.heightMm}else typeof e=="number"?(r=e,o=t??297):(r=e.widthMm,o=e.heightMm);return n?{widthMm:o,heightMm:r}:{widthMm:r,heightMm:o}}class it{constructor(){this.pages=[],this.pending=null,this.templateParams=void 0}repeat(t){return this.templateRepeat=t,this}params(t){return this.templateParams=t,this}page(t="a4",n={},r){this.collect();const i=r!=null&&!("margins"in r)&&!("landscape"in r)&&("marginTopMm"in r||"marginBottomMm"in r||"marginLeftMm"in r||"marginRightMm"in r)?{margins:r}:typeof n=="number"?r??{}:n,{widthMm:l,heightMm:s}=$e(t,typeof n=="number"?n:void 0,i.landscape),a=i.margins??{};return this.pending=new at(this,{widthMm:l,heightMm:s,marginTopMm:a.marginTopMm??10,marginBottomMm:a.marginBottomMm??10,marginLeftMm:a.marginLeftMm??10,marginRightMm:a.marginRightMm??10}),this.pending}collect(){this.pending&&(this.pages.push(this.pending.buildPage()),this.pending=null)}build(){if(this.collect(),this.pages.length===0)throw new Error("模板至少需要一页:先调用 .page() 添加内容");return{...this.templateParams?{params:this.templateParams}:{},...this.templateRepeat?{repeat:this.templateRepeat}:{},pages:this.pages}}}class at{constructor(t,n){this.parent=t,this.page=n,this.components=[]}text(t,n={},r={}){return this.components.push({kind:"text",leftMm:n.leftMm??0,topMm:n.topMm??0,widthMm:n.widthMm??60,heightMm:n.heightMm??8,text:t,style:r}),this}list(t,n,r,o={}){return this.components.push({kind:"list",leftMm:n.leftMm??10,topMm:n.topMm??30,widthMm:n.widthMm??180,dataset:t,columns:r,...o}),this}rect(t,n={}){return this.components.push({kind:"rect",...t,style:n}),this}line(t,n,r,o={}){return this.components.push({kind:"line",leftMm:t,topMm:n,widthMm:r,heightMm:.5,style:o}),this}barcode(t,n){return this.components.push({kind:"barcode",leftMm:n.leftMm??0,topMm:n.topMm??0,widthMm:n.widthMm??40,heightMm:n.heightMm??12,fallbackText:t}),this}qrcode(t,n,r,o){return this.components.push({kind:"qrcode",leftMm:r,topMm:o,widthMm:n,heightMm:n,fallbackText:t}),this}buildPage(){return{...this.page,components:this.components}}done(){return this.parent}build(){return this.done().build()}}function tn(){return new it}function nn(e,t={}){return Ee.validateDatasetRows([],e),e.fields.map(n=>({field:n.field,header:`${n.label??n.field}${n.unit?` (${n.unit})`:""}`,semanticRole:n.semanticRole??(n.type==="number"||n.type==="decimal"?"measure":n.type==="date"?"date":n.enum?"dimension":"text"),...n.format?{format:{...n.format}}:{},...t[n.field]}))}function N(e,t,n=!1){if(!Number.isFinite(e)||(n?e<0:e<=0))throw new Error(`${t} 必须是有限${n?"非负":"正"}数`)}function le(e,t,n){if(e!==void 0&&!["left","center","right","justify",...n?["auto"]:[]].includes(e))throw new Error(`${t} 必须是 left/center/right/justify${n?"/auto":""}`)}function rn(e){const t=e.layout??"page";if(t!=="page"&&t!=="wide")throw new Error("layout 必须是 page 或 wide");if(t==="wide"&&(e.paper!==void 0||e.landscape!==void 0))throw new Error('宽表布局不能同时指定 paper 或 landscape;标准纸型请使用 layout: "page"');if(t!=="wide"&&e.columnWidthMm!==void 0)throw new Error('columnWidthMm 仅适用于 layout: "wide"');const n=e.columnWidthMm??30;return N(n,"columnWidthMm"),{layout:t,columnWidthMm:n}}function on(e){const t=e.paper===void 0?"a4":e.paper;if(typeof t!="string"&&(typeof t!="object"||t===null)||e.landscape!==void 0&&typeof e.landscape!="boolean")throw new Error("paper 必须是纸张预设名或 { widthMm, heightMm } 对象,landscape 必须是布尔值");if(typeof t=="string"&&!Object.prototype.hasOwnProperty.call(g.PAPER_SIZES,t))throw new Error(`未知纸张预设 "${t}"(可用:${Object.keys(g.PAPER_SIZES).join("/")})`);const n=$e(t,void 0,e.landscape),r=n.widthMm,o=n.heightMm;return N(r,"纸张 widthMm"),N(o,"纸张 heightMm"),{widthMm:r,heightMm:o}}function an(e){if(e.margins!==void 0&&(!e.margins||typeof e.margins!="object"||Array.isArray(e.margins)))throw new Error("margins 必须是页边距对象");const t=e.margins??{},n={marginTopMm:t.marginTopMm===void 0?10:t.marginTopMm,marginBottomMm:t.marginBottomMm===void 0?10:t.marginBottomMm,marginLeftMm:t.marginLeftMm===void 0?10:t.marginLeftMm,marginRightMm:t.marginRightMm===void 0?10:t.marginRightMm};for(const[r,o]of Object.entries(n))N(o,r,!0);return n}function sn(e,t){const n=e.dataset===void 0?"detail":e.dataset;if(typeof n!="string"||!n.trim())throw new Error("dataset 必须是非空字符串");if(e.title!==void 0&&typeof e.title!="string")throw new Error("title 必须是字符串");const r=e.titleHeightMm===void 0?10:e.titleHeightMm,o=e.titleGapMm===void 0?4:e.titleGapMm;N(r,"titleHeightMm"),N(o,"titleGapMm",!0);const i=e.title!==void 0&&e.title.length>0,l=i?r+o:0;if(l>=t)throw new Error("标题高度与间距占满页面,必须为表格保留可用高度");return{dataset:n,titleHeightMm:r,hasTitle:i,titleSpaceMm:l}}function ln(e){if(e.listOptions!==void 0&&(!e.listOptions||typeof e.listOptions!="object"||Array.isArray(e.listOptions)))throw new Error("listOptions 必须是列表配置对象");const t=e.listOptions??{};le(t.align,"listOptions.align",!0),le(t.headerAlign,"listOptions.headerAlign",!1);for(const n of["fontSizePt","rowHeightMm","paddingMm"]){const r=t[n];r!==void 0&&N(r,`listOptions.${n}`,n==="paddingMm")}return t}function cn(e){let t=0,n=0;for(const[r,o]of e.entries()){if(!o||typeof o.header!="string"||typeof o.field!="string"||!o.field.trim())throw new Error(`columns[${r}] 需要字符串 header 与非空 field`);le(o.align,`columns[${r}].align`,!0),le(o.headerAlign,`columns[${r}].headerAlign`,!1),o.flex!==void 0&&N(o.flex,`columns[${r}].flex`),o.widthMm!==void 0?(N(o.widthMm,`columns[${r}].widthMm`),t+=o.widthMm):n=Math.max(n,o.flex??1)}return{fixedWidthMm:t,maxFlex:n}}function dn(e,t,n,r){const{fixedWidthMm:o,maxFlex:i}=cn(e.columns);if(t==="page"&&o>r)throw new Error(`固定列宽 ${o}mm 超出页面可用宽度 ${r}mm`);const l=r-o;if(t==="page"&&i>0&&l<=0)throw new Error("固定列占满页面可用宽度,自动列需要正的剩余宽度");const s=i>0?e.columns.reduce((c,d)=>c+(d.widthMm===void 0?(d.flex??1)/i:0),0):0;return{columns:e.columns.map(({widthMm:c,flex:d,...m},h)=>{const p=c??(t==="wide"?n*(d??1):l*((d??1)/i)/s);return N(p,`columns[${h}] 分配后的 widthMm`),{...m,widthMm:p}}),fixedWidthMm:o,maxFlex:i}}function mn(e){if(!e||typeof e!="object")throw new Error("标准明细模板需要 options 对象");if(!Array.isArray(e.columns)||e.columns.length===0)throw new Error("columns 至少需要一列");const{layout:t,columnWidthMm:n}=rn(e),r=on(e);let o=r.widthMm;const i=r.heightMm,l=an(e);let s=o-l.marginLeftMm-l.marginRightMm;const a=i-l.marginTopMm-l.marginBottomMm;if(t==="page"&&s<=0||a<=0)throw new Error("页边距占满纸张,必须保留正的可用宽度和高度");const{dataset:c,titleHeightMm:d,hasTitle:m,titleSpaceMm:h}=sn(e,a),p=ln(e),{columns:u,fixedWidthMm:P,maxFlex:R}=dn(e,t,n,s);t==="wide"&&(s=u.reduce((T,E)=>T+E.widthMm,0),N(s,"宽表总列宽"),o=s+l.marginLeftMm+l.marginRightMm,N(o,"宽表总宽度"));const y={widthMm:o,heightMm:i,...l,components:[],...t==="wide"?{layout:t}:{}};return m&&y.components.push({kind:"text",text:e.title,leftMm:l.marginLeftMm,topMm:l.marginTopMm,widthMm:s,heightMm:d,style:{fontSize:16,bold:!0,align:"center",verticalAlign:"middle",...e.titleStyle}}),y.components.push({align:"auto",headerAlign:"center",...p,kind:"list",...t==="wide"?{layout:t}:{},...m?{title:e.title}:{},dataset:c,columns:u,leftMm:l.marginLeftMm,topMm:l.marginTopMm+h,widthMm:t==="wide"||R>0?s:P}),e.params===void 0?{pages:[y]}:{params:e.params,pages:[y]}}function hn(e){if(e.components!==void 0&&e.pages!==void 0)throw new TypeError("标签 components 与 pages 只能选择一种");const{dataset:t,rowKey:n,copies:r,params:o}=e,i=e.pages??[{components:e.components??[]}],l={repeat:{dataset:t,...n===void 0?{}:{rowKey:n},...r===void 0?{}:{copies:r}},...o===void 0?{}:{params:o},pages:i.map(a=>({widthMm:a.widthMm??e.widthMm??80,heightMm:a.heightMm??e.heightMm??55,marginTopMm:0,marginRightMm:0,marginBottomMm:0,marginLeftMm:0,components:a.components,...a.meta===void 0?{}:{meta:a.meta}}))},s=v.validateReportTemplate(l);if(!s.ok)throw new v.ReportTemplateError(s.errors);return JSON.parse(JSON.stringify(l))}function gn(e){if(!e||typeof e!="object"||!e.repeat)throw new w.ReportSourceError("config","defineLabelReport 需要带 repeat 的固定标签模板");const t=v.validateReportTemplate(e);if(!t.ok)throw new v.ReportTemplateError(t.errors);return e.repeat.dataset}function Be(e,t){if(!Array.isArray(e))throw new w.ReportSourceError("validate","标签数据应为对象数组;请从业务响应中提取行数组");return{[t]:e}}function pn(e){const{template:t,rows:n,load:r,dataSchema:o,params:i,pagination:l,dataValidation:s}=e,a=gn(t);if(n!==void 0==(r!==void 0)||r!==void 0&&typeof r!="function")throw new w.ReportSourceError("config","标签报表应且只能配置 rows 或 load 其中一种数据来源");const c={template:t,params:i,pagination:l,dataValidation:s,...o===void 0?{}:{dataSchema:{[a]:o}}};return r?w.defineReport({...c,load:r,mapData:d=>Be(d,a)}):{...c,datasets:Be(n,a)}}function un(e){return e}class j extends Error{constructor(t,n){super(n),this.code=t,this.name="ReportTemplateMigrationError"}}function He(e){let t=e;if(typeof t=="string"){if(t.length>1e7)throw new j("result","模板迁移输入超过预算");try{t=JSON.parse(t)}catch{throw new j("result","模板 JSON 语法无效")}}const n=w.snapshotReportJson(t,{maxBytes:1e7,error:(r,o)=>new j("result",o)});if(!n||typeof n!="object"||Array.isArray(n))throw new j("result","模板迁移应返回文档对象");return n}function fn(e){if(!Array.isArray(e)||e.length>32)throw new j("definition","模板迁移最多声明 32 步");const t=new Map;for(const n of e){if(!n||![n.from,n.to].every(r=>typeof r=="string"&&r.trim()&&r.length<=64)||n.from===n.to||t.has(n.from)||typeof n.migrate!="function"||n.from===v.REPORT_TEMPLATE_DOCUMENT_VERSION)throw new j("definition","迁移起点应唯一,不得从当前版本降级");t.set(n.from,{...n})}for(const n of t.keys()){const r=new Set;let o=n;for(;t.has(o);){if(r.has(o))throw new j("definition","模板迁移链存在循环");r.add(o),o=t.get(o).to}if(o!==v.REPORT_TEMPLATE_DOCUMENT_VERSION)throw new j("definition","每条迁移链应到达当前模板版本")}return t}function st(e=[]){const t=fn(e);return async n=>{let r=He(n);const o=[];for(;r.schemaVersion!==v.REPORT_TEMPLATE_DOCUMENT_VERSION;){const i=typeof r.schemaVersion=="string"?t.get(r.schemaVersion):void 0;if(!i)throw new j("unsupported","未声明此模板版本的迁移路径");const l=r.id,s=He(await i.migrate(r));if(s.schemaVersion!==i.to||typeof l=="string"&&s.id!==l)throw new j("result","迁移结果版本不匹配或改变了模板身份");o.push({from:i.from,to:i.to}),r=s}return{document:v.parseReportTemplate(r),steps:o}}}class F extends Error{constructor(t,n){super(n),this.code=t,this.name="ReportTemplateStoreError"}}function _(e){return JSON.parse(JSON.stringify(e))}function A(e){if(!e?.aborted)return;const t=new Error("模板操作已取消");throw t.name="AbortError",t}function Ue(e){const t=e?Number(e.revision):0;if(!Number.isSafeInteger(t)||t<0||t>=Number.MAX_SAFE_INTEGER)throw new F("history","修订号无效或已达上限");return String(t+1)}function wn(e,t={}){const n=t.migrations?st(t.migrations):void 0,r=async a=>n?(await n(a)).document:v.parseReportTemplate(a),o=async(a,c)=>{A(c);const d=await e.read(a,c);return A(c),d?_(d):void 0},i=async(a,c)=>{const d=await o(a,c.signal);if((d?.revision??null)!==c.expectedRevision)throw new F("conflict","模板已变化,请重新读取后提交");return d},l=async(a,c,d)=>{if(A(c.signal),!await e.compareAndSwap(a.id,c.expectedRevision,_(a),{signal:c.signal,...d?{publication:_(d)}:{}}))throw new F("conflict","模板已被其他请求更新");return _(a)},s=async(a,c,d,m)=>{if(t.beforePublish){A(d.signal);const P=a.published?await r(a.published):void 0;A(d.signal);const R=await t.beforePublish({document:v.parseReportTemplate(c),previous:P,signal:d.signal});if(!R||R.ok!==!0)throw new F("review",R?.issues?.find(y=>y.severity==="error")?.message??"模板发布检查未通过");A(d.signal)}const h=Ue(a),p=v.parseReportTemplate({...c,revision:h}),u={revision:h,document:p,publishedAt:(t.now?.()??new Date).toISOString()};return m!==void 0&&(u.restoredFrom=m),l({id:a.id,revision:h,publishedRevision:h,published:p},d,u)};return{list:async a=>{A(a);const c=await e.list(a);return A(a),_(c)},get:async(a,c={})=>{const d=await o(a,c.signal),m=c.draft?d?.draft:d?.published,h=m?await r(m):void 0;return A(c.signal),h},history:async(a,c)=>{A(c);const d=await e.history(a,c);return A(c),_(d)},saveDraft:async(a,c)=>{c={...c},A(c.signal);const d=await r(t.migrate?await t.migrate(a):a),m=await i(d.id,c),h=Ue(m);return l({id:d.id,revision:h,draft:{...d,revision:h},...m?.publishedRevision?{publishedRevision:m.publishedRevision,published:m.published}:{}},c)},publish:async(a,c)=>{c={...c};const d=await i(a,c);if(!d)throw new F("missing","模板不存在");if(!d.draft)throw new F("draft","没有可发布的草稿");return s(d,await r(d.draft),c)},rollback:async(a,c,d)=>{d={...d};const m=await i(a,d);if(!m)throw new F("missing","模板不存在");A(d.signal);const h=await e.getVersion(a,c,d.signal);if(!h)throw new F("history","历史修订不存在");return s(m,await r(h.document),d,c)}}}function bn(){const e=new Map,t=new Map;return{read:async(n,r)=>{A(r);const o=e.get(n);return o?_(o):void 0},list:async n=>(A(n),Array.from(e.values(),({id:r,revision:o,publishedRevision:i})=>({id:r,revision:o,...i?{publishedRevision:i}:{}}))),history:async(n,r)=>(A(r),Array.from(t.get(n)?.values()??[],o=>_(o))),getVersion:async(n,r,o)=>{A(o);const i=t.get(n)?.get(r);return i?_(i):void 0},compareAndSwap:async(n,r,o,i)=>{if(A(i.signal),(e.get(n)?.revision??null)!==r)return!1;if(o.id!==n)throw new F("history","状态 ID 与存储 ID 不一致");const l=_(o),s=i.publication;if(s){const a=t.get(n)??new Map;if(a.has(s.revision)||s.revision!==o.revision||s.document.id!==n)throw new F("history","发布修订不可覆盖,且必须与状态修订和模板 ID 一致");a.set(s.revision,_(s)),t.set(n,a)}return e.set(n,l),!0}}}class f extends Error{constructor(t,n,r="$",o){super(n),this.code=t,this.path=r,this.extensionId=o,this.name="ReportComponentExtensionError"}}const yn=new Set(["__proto__","constructor","prototype"]);function ee(e,t="$",n={nodes:0,units:0},r=0){if(++n.nodes>2048||r>16)throw new f("binding","Component extension JSON exceeds its depth/node budget.",t);if(n.units>64*1024)throw new f("binding","Component extension JSON exceeds 64 Ki UTF-16 units.",t);if(e===null||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){if(n.units+=e.length,n.units>64*1024)throw new f("binding","Component extension JSON exceeds 64 Ki UTF-16 units.",t);return e}if(!e||typeof e!="object")throw new f("binding","Component extension values must be finite JSON data.",t);const o=Object.getPrototypeOf(e);if(Array.isArray(e))return Mn(e,t,n,r);if(o!==Object.prototype&&o!==null)throw new f("binding","Component extension values must be plain JSON objects.",t);return vn(e,t,n,r)}function Oe(e,t,n){const r=Object.getOwnPropertyDescriptor(e,t);if(typeof t!="string"||yn.has(t)||!r?.enumerable||r.get||r.set)throw new f("binding","Component extension JSON contains an unsafe key or accessor.",n);return r.value}function Mn(e,t,n,r){if(Object.getPrototypeOf(e)!==Array.prototype||e.length>2048||Reflect.ownKeys(e).length!==e.length+1)throw new f("binding","Component extension arrays must be plain dense JSON arrays.",t);return Object.freeze(Array.from({length:e.length},(o,i)=>ee(Oe(e,String(i),`${t}[${i}]`),`${t}[${i}]`,n,r+1)))}function vn(e,t,n,r){const o=Reflect.ownKeys(e);if(o.length>2048)throw new f("binding","Component extension JSON exceeds its node budget.",t);const i=o.map(l=>{const s=`${t}.${String(l)}`,a=Oe(e,l,s);return n.units+=String(l).length,[l,ee(a,s,n,r+1)]});return Object.freeze(Object.fromEntries(i))}function re(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new f("binding","Expected a component extension object.",t);return e}function ue(e,t,n){for(const r of Object.keys(e))if(!t.includes(r))throw new f("binding","Unknown component extension property.",`${n}.${r}`)}function ve(e,t,n=160){if(typeof e!="string"||!e.trim()||e.length>n)throw new f("definition","Component extension labels must be bounded nonempty strings.",t)}function lt(e,t){if(typeof e!="string"||!/^[a-z][a-z\d_.-]{0,127}$/i.test(e))throw new f("definition","Invalid component extension id.","$.id");if(typeof t!="string"||t.length>64||!/^\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?$/i.test(t))throw new f("definition","Component extension version must be explicit semantic version text.","$.version",e)}function ke(e,t,n){if(!(e===null&&!t.required)){if(typeof e!==t.type||typeof e=="number"&&!Number.isFinite(e))throw new f("binding",`Expected ${t.type} component property.`,n);if(t.options&&!t.options.some(r=>Object.is(r,e)))throw new f("binding","Component property is outside its declared options.",n);if(typeof e=="number"&&(e<(t.min??-1/0)||e>(t.max??1/0)))throw new f("binding","Component property is outside its declared range.",n);if(typeof e=="string"&&e.length>(t.maxLength??64*1024))throw new f("binding","Component property exceeds maxLength.",n)}}function En(e,t){const n=re(e,t);ue(n,["label","type","required","default","options","min","max","maxLength"],t);const r=n;if(ve(r.label,`${t}.label`),!["string","number","boolean"].includes(r.type))throw new f("definition","Unknown component property type.",t);if(r.required!==void 0&&typeof r.required!="boolean")throw new f("definition","Component property required must be boolean.",t);xn(r,t),r.default!==void 0&&ke(r.default,r,`${t}.default`)}function xn(e,t){for(const n of["min","max"])if(e[n]!==void 0&&(e.type!=="number"||!Number.isFinite(e[n])))throw new f("definition","Numeric property bounds must be finite numbers.",t);if((e.min??-1/0)>(e.max??1/0))throw new f("definition","Component property min exceeds max.",t);if(e.maxLength!==void 0&&(e.type!=="string"||!Number.isSafeInteger(e.maxLength)||e.maxLength<0||e.maxLength>64*1024))throw new f("definition","Invalid component property maxLength.",t);if(e.options!==void 0){if(!Array.isArray(e.options)||!e.options.length||e.options.length>64)throw new f("definition","Component property options must contain 1 to 64 values.",t);for(const n of e.options)ke(n,{...e,options:void 0},`${t}.options`)}}function Tn(e){const t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new f("definition","Component extension metadata must be a plain object.");const n=Reflect.ownKeys(e).filter(o=>o!=="load").map(o=>[o,Oe(e,o,`$.${String(o)}`)]),r=ee(Object.fromEntries(n));if(ue(r,["id","version","kind","label","description","properties"],"$"),lt(r.id,r.version),ve(r.label,"$.label"),!["image","chart","barcode","qrcode"].includes(r.kind))throw new f("definition","Extension kind must use the existing image-backed output pipeline.","$.kind");if(r.description!==void 0&&ve(r.description,"$.description",2048),r.properties!==void 0){const o=re(r.properties,"$.properties");if(Object.keys(o).length>64)throw new f("definition","Component extension supports at most 64 properties.","$.properties");for(const[i,l]of Object.entries(o))En(l,`$.properties.${i}`)}return r}function ct(e,t){const n=re(ee(t??{}),"$.props"),r={};for(const o of Object.keys(n))if(!Object.prototype.hasOwnProperty.call(e.properties??{},o))throw new f("binding","Unknown component property.",`$.props.${o}`,e.id);for(const[o,i]of Object.entries(e.properties??{})){const l=Object.prototype.hasOwnProperty.call(n,o)?n[o]:i.default;if(l===void 0){if(i.required)throw new f("binding","Required component property is missing.",`$.props.${o}`,e.id);continue}ke(l,i,`$.props.${o}`),r[o]=l}return Object.freeze(r)}const G="componentExtension";function Sn(e){const t=Object.getOwnPropertyDescriptor(e,"meta")?.value,n=t&&Object.getOwnPropertyDescriptor(t,G);if(n){if(n.get||n.set)throw new f("binding","Component extension binding cannot be an accessor.",`$.meta.${G}`);return n.value}}function Rn(e,t){const n=re(ee(Sn(t)),`$.meta.${G}`);ue(n,["id","version","props","binding"],`$.meta.${G}`),lt(n.id,n.version);const r=e.get(n.id);if(!r)throw new f("binding","Component extension is not registered in this runtime.",`$.meta.${G}.id`,n.id);if(r.metadata.version!==n.version||r.metadata.kind!==t.kind)throw new f("binding","Component extension version or image kind does not match its registration.",`$.meta.${G}`,r.metadata.id);const o=Object.freeze({id:r.metadata.id,version:r.metadata.version,props:ct(r.metadata,n.props),...n.binding===void 0?{}:{binding:n.binding}});return{entry:r,extension:o}}function qe(e){return e.released??=Promise.resolve().then(()=>e.renderer?.dispose?.())}function X(e){if(e)throw new f("disposed","Component registry has been disposed.")}function Cn(e){if(!e||typeof e!="object")throw new f("definition","Component extension definition must be an object.");if(Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new f("definition","Component extension definition must be a plain object.");const t=Object.getOwnPropertyDescriptor(e,"load");if(!t||t.get||t.set||typeof t.value!="function")throw new f("definition","Component extension needs a trusted runtime loader.","$.load");return{metadata:Tn(e),load:t.value}}function Pn(e,t){if(!(e&&typeof e.render=="function"&&(e.dispose===void 0||typeof e.dispose=="function"))){if(e&&typeof e.dispose=="function")try{Promise.resolve(e.dispose()).catch(()=>{})}catch{}throw new f("load","Component loader must return render and optional dispose methods.","$.load",t)}}function An(e,t){const n=new AbortController,r=()=>n.abort(e.reason),o=()=>n.abort(t.reason);return e.aborted?r():e.addEventListener("abort",r,{once:!0}),t.aborted?o():t.addEventListener("abort",o,{once:!0}),{signal:n.signal,dispose(){e.removeEventListener("abort",r),t.removeEventListener("abort",o)}}}function $n(e){if(!Array.isArray(e)||e.length>128)throw new f("definition","Register at most 128 component extensions.");const t=new Map,n=new AbortController;let r=!1,o;for(const a of e){const c=Cn(a),d=c.metadata.id;if(t.has(d))throw new f("definition","Component extension id is already registered.","$.id",d);t.set(d,c)}function i(a){return X(r),a.pending||(a.pending=Promise.resolve().then(()=>(X(r),a.load(n.signal))).then(async c=>(Pn(c,a.metadata.id),a.renderer=c,r&&(await qe(a),X(r)),c)).catch(c=>{throw a.pending=void 0,c instanceof f?c:Object.assign(new f("load","Component extension loader failed.","$.load",a.metadata.id),{cause:c})})),a.pending}const l=async a=>{X(r);const{entry:c,extension:d}=Rn(t,a.component),m=An(a.signal,n.signal);try{const h=await ye.waitForOutput(i(c),m.signal);return await ye.waitForOutput(h.render({...a,signal:m.signal,extension:d}),m.signal)}finally{m.dispose()}},s={assets:Object.freeze({get assetRegistry(){return s}}),describe(a){return X(r),Object.freeze([...t.values()].map(c=>c.metadata).filter(c=>!a||c.kind===a))},hasExtension(a,c,d){const m=t.get(a)?.metadata;return!r&&m?.version===c&&m.kind===d},rendererFor(a){const c=Object.getOwnPropertyDescriptor(a,"meta")?.value;return c&&Object.prototype.hasOwnProperty.call(c,G)?l:void 0},createComponent(a,c={}){X(r);const d=t.get(a);if(!d)throw new f("binding","Component extension is not registered in this runtime.","$.id",a);const m=re(ee(c),"$");ue(m,["props","binding"],"$");const h={id:a,version:d.metadata.version,props:ct(d.metadata,m.props),...m.binding===void 0?{}:{binding:m.binding}};return{kind:d.metadata.kind,meta:{[G]:Object.freeze(h)}}},dispose(){return o||(r=!0,n.abort(new f("disposed","Component registry has been disposed.")),o=Promise.allSettled([...t.values()].filter(a=>a.renderer).map(qe)).then(a=>{const c=a.find(d=>d.status==="rejected");if(c?.status==="rejected")throw c.reason}),o)}};return s}function On(e){return e.map(t=>t.map(n=>/[\t\r\n"]/.test(n)?`"${n.replace(/"/g,'""')}"`:n).join(" ")).join(`\r
6
- `)}function kn(e,t){const n=e[e.length-1];e.length>1&&n?.length===1&&n[0]===""&&/[\r\n]$/.test(t)&&e.pop()}function Ln(e,t=1e4){if(e.length>4*1024*1024)throw new Error("Clipboard text limit exceeded");const n=[[]];let r="",o=!1,i=!1,l=0;function s(){if(++l>t)throw new Error("Clipboard cell limit exceeded");n[n.length-1].push(r),r="",i=!1}for(let a=0;a<e.length;a++){const c=e[a];if(o){if(c!=='"'){r+=c;continue}if(e[a+1]==='"'){r+='"',a++;continue}o=!1,i=!0;continue}if(c==='"'&&!r&&!i){o=!0;continue}if(c===" "){s();continue}if(c==="\r"||c===`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./style-C22Pbv3T.cjs"),K=require("./record-bindings-ehjnCDHt.cjs"),G=require("./component-tree-6TV7W6Yj.cjs"),R=require("./template-registry-DzWswQI5.cjs"),Ee=require("./dataset-IrlXbUvh.cjs"),B=require("./textwrap-BI-yJ6Wt.cjs"),f=require("./json-snapshot-jiXff4lc.cjs"),de=require("./grid-geometry-CZ_cYB6O.cjs"),Ye=require("./data-bar-Ce38juRZ.cjs"),me=require("./rich-text-layout-ALlMoYOG.cjs"),D=require("./assets-B0Hxn4l6.cjs"),ye=require("./progress-B0ctFpKf.cjs"),H=require("./prefill-D7EswyTI.cjs"),k=require("./param-validation-C-8sRJLq.cjs"),Ke=require("./matrix-0hywp0-F.cjs"),Re=require("./computed-4TnxzgIh.cjs"),ne=require("./template-catalog-Utu4GP09.cjs"),Te=require("./template-outline-DWkzZXVC.cjs"),he=require("./template-fragments-C_zSHJAa.cjs"),xe=require("./column-visual-CtYxnBCP.cjs");function Me(e,t,n){let r=0,o=e.length;for(;r<o;){const i=r+o>>>1;n(e[i])<t?r=i+1:o=i}return r}function Xe(e){if(![e.leftMm,e.topMm,e.widthMm,e.heightMm].every(Number.isFinite)||e.widthMm<0||e.heightMm<0)throw new RangeError("Preview viewport must have finite coordinates and nonnegative dimensions.");return e}function Et(e){const t=e.rows.map(()=>[]);for(const n of e.cells){const r=Math.min(t.length,n.ri+(n.cell.rowSpan??1));for(let o=n.ri;o<r;o++)t[o].push(n)}for(const n of t)n.sort((r,o)=>r.xMm-o.xMm);return{cells(n){Xe(n);const r=new Set,o=n.topMm+n.heightMm,i=n.leftMm+n.widthMm;let l=Me(e.rows,n.topMm,s=>s.pos+s.size);for(;l<t.length&&e.rows[l].pos<=o;){const s=t[l++];let a=Me(s,n.leftMm,c=>c.xMm+c.widthMm);for(;a<s.length&&s[a].xMm<=i;)r.add(s[a++])}return[...r].sort((s,a)=>s.ri-a.ri||s.ci-a.ci)}}}function Rt(e){const t=["h","v"].map(n=>e.filter(r=>r.kind===n).sort((r,o)=>r.pos-o.pos));return n=>{const r=[];return t.forEach((o,i)=>{const l=i===0?n.topMm:n.leftMm,s=l+(i===0?n.heightMm:n.widthMm),a=i===0?n.leftMm:n.topMm,c=a+(i===0?n.widthMm:n.heightMm);let d=Me(o,l,m=>m.pos);for(;d<o.length&&o[d].pos<=s;){const m=o[d++];m.to>=a&&m.from<=c&&r.push(m)}}),r}}function Tt(){const e=[];return{mount(t){e.push(Pt(t))},update(t,n,r){Xe(t);let o=!1;for(const i of e)o=i.update(t,i.component===n?r:void 0)||o;return o}}}function xt(e,t){const n=Math.max(8,e.widthMm/4),r=Math.max(8,e.heightMm/4);return{leftMm:e.leftMm-t.leftMm-n,topMm:e.topMm-t.topMm-r,widthMm:e.widthMm+2*n,heightMm:e.heightMm+2*r}}function St(e,t,n){let r=t.get(n);return r||(r=e.table.ownerDocument.createElement("tr"),r.className=e.rowClass,r.setAttribute("role","row"),r.setAttribute("aria-rowindex",String(n+1)),r.style.cssText="all:unset;display:contents;box-sizing:border-box",t.set(n,r)),r}function Ct(e,t,n,r){const o=new Set(t),i=new Set(t.map(s=>s.ri));for(const[s,a]of n)o.has(s)||(a.remove(),n.delete(s));for(const[s,a]of r)i.has(s)||(a.remove(),r.delete(s));for(const s of t){let a=n.get(s);a||(a=e.drawCell(s),a.setAttribute("aria-colindex",String(s.ci+1)),n.set(s,a));const c=St(e,r,s.ri);a.parentElement!==c&&c.appendChild(a)}const l=new Map;for(const s of t){const a=l.get(s.ri)??[];a.push(n.get(s)),l.set(s.ri,a)}for(const[s,a]of l)_e(r.get(s),a);_e(e.body,[...i].sort((s,a)=>s-a).map(s=>r.get(s)))}function _e(e,t){let n=e.firstElementChild;for(const r of t)r===n?n=n.nextElementSibling:e.insertBefore(r,n)}function Pt(e){const t=de.resolveGridLayout(e.grid,e.component.widthMm,e.component.heightMm),n=new Map(t.cells.map(c=>[`${c.ri}:${c.ci}`,c])),r=Et(t),o=new Map,i=new Map,l=Rt(me.resolveGridStrokes(t,e.component));e.table.setAttribute("aria-rowcount",String(t.rows.length)),e.table.setAttribute("aria-colcount",String(t.columns.length));let s="",a="";return{component:e.component,update(c,d){const m=xt(c,e.component),h=r.cells(m),g=d&&n.get(`${d.rowIndex}:${d.columnIndex}`);g&&!h.includes(g)&&h.push(g),h.sort((y,U)=>y.ri-U.ri||y.ci-U.ci);const u=h.map(y=>`${y.ri}:${y.ci}`).join(";"),P=l(m),S=P.map(y=>`${y.kind}:${y.pos}:${y.from}:${y.to}`).join(";"),M=u!==s,E=S!==a;return M&&(s=u,Ct(e,h,o,i)),E&&(a=S,e.edgeHost.replaceChildren(...e.drawEdges(P))),M||E}}}const Ze=new WeakMap,At={root:"mr-root",page:"mr-page",comp:"mr-comp",text:"mr-text",lines:"mr-lines",line:"mr-line",rich:"mr-rich",paragraph:"mr-paragraph",segment:"mr-segment",image:"mr-image",shape:"mr-shape",grid:"mr-grid",row:"mr-row",cell:"mr-cell",unknown:"mr-unknown"};function $(e,t){return t?.classNames?.[e]??At[e]}class $t{constructor(){this.props=[]}add(t,n){return n==null||n===!1||n===""?this:(this.props.push([t,String(n)]),this)}mm(t,n,r,o=2){return this.add(t,`${p.round(p.mmToPx(n,r),o)}px`)}toString(){let t="";for(const[n,r]of this.props)t+=`${n}:${r};`;return t}applyTo(t){const n=this.toString();n&&(t.style.cssText=n)}}function x(e,t="unset"){return new $t().add("all",t).add("display",e).add("box-sizing","border-box")}function Qe(e,t,n){e.add("color",t.color).add("font-family",t.fontFamily).add("font-weight",t.bold!=null?t.bold?"700":"400":void 0).add("font-style",t.italic!=null?t.italic?"italic":"normal":void 0).add("text-decoration",t.underline!=null?t.underline?"underline":"none":void 0).add("letter-spacing",t.letterSpacing!=null?`${t.letterSpacing}pt`:void 0).add("line-height",String(p.resolveLineHeight(t))).add("text-align",t.align);const r=p.resolveFontSize(t,n);e.add("font-size",`${p.round(r.fontSizePx,2)}px`)}function Ot(e,t,n){const r=t.style??{};Qe(e,r,n),e.add("background-color",r.backgroundColor).add("opacity",r.opacity!=null?String(r.opacity):void 0).add("transform",r.rotateDeg?`rotate(${r.rotateDeg}deg)`:void 0)}function je(e,t,n,r,o,i){const l=e.cell,s=i.createElement("td");s.className=$("cell",o),s.dataset.mrRowIndex=String(e.ri),s.dataset.mrColumnIndex=String(e.ci),s.setAttribute("role",t.table?.role==="header"?"columnheader":"cell"),l.colSpan&&(s.colSpan=l.colSpan),l.rowSpan&&(s.rowSpan=l.rowSpan);const a=p.mergeComponentStyles(t.style,l.style),c=x("block").add("position","absolute").mm("left",e.xMm,r).mm("top",e.yMm,r).mm("width",e.widthMm,r).mm("height",e.heightMm,r).add("background-color",a.backgroundColor).add("vertical-align",a.verticalAlign??"middle");Qe(c,a,r),c.applyTo(s);const d=Ye.dataBarBox(l.dataBar,e.widthMm,e.heightMm,n);if(d){const h=i.createElement("div");h.className="mr-cell-data-bar",h.setAttribute("aria-hidden","true"),x("block").add("position","absolute").mm("left",d.x,r).mm("top",d.y,r).mm("width",d.width,r).mm("height",d.height,r).add("background-color",d.color).add("opacity","0.35").add("pointer-events","none").applyTo(h),s.appendChild(h)}const m=i.createElement("div");m.className="mr-cell-content",x("flex").add("position","absolute").mm("left",n+(l.indentMm??0),r).mm("right",n,r).mm("top",n,r).mm("bottom",n,r).add("flex-direction","column").add("justify-content",a.verticalAlign==="top"?"flex-start":a.verticalAlign==="bottom"?"flex-end":"center").add("overflow-wrap","anywhere").add("overflow","hidden").applyTo(m),l.richParagraphs?.length?m.appendChild(tt({...t,kind:"text",richParagraphs:l.richParagraphs},r,o,i)):l.text!=null&&m.append(l.text);for(const h of l.children??[])m.appendChild(Se(h,r,o,i));return s.insertBefore(m,s.firstChild),s}function Dt(e,t,n,r){return et(me.resolveGridStrokes(e,t),n,r)}function et(e,t,n){return e.map(r=>{const o=`${p.round(r.widthPt*t/72,2)}px solid ${r.color}`,i=n.createElement("div");i.className="mr-grid-edge",i.setAttribute("aria-hidden","true");const l=r.kind==="h";return x("block").add("position","absolute").add("pointer-events","none").mm("left",l?r.from:r.pos,t).mm("top",l?r.pos:r.from,t).mm("width",l?r.to-r.from:0,t).mm("height",l?0:r.to-r.from,t).add(l?"border-top":"border-left",o).applyTo(i),i})}function kt(e,t,n,r,o){const i=o.createElement("table");i.className=$("grid",r),i.setAttribute("role","table"),x("block").add("position","relative").add("width","100%").add("height","100%").applyTo(i);const l=o.createElement("tbody");x("contents").applyTo(l),i.appendChild(l);const s=t.style?.rotateDeg?void 0:Ze.get(r);if(s){const m=o.createElement("div");x("block").add("position","relative").add("width","100%").add("height","100%").applyTo(m);const h=o.createElement("div");return x("contents").applyTo(h),h.setAttribute("aria-hidden","true"),s.mount({grid:e,component:t,table:i,rowClass:$("row",r),body:l,edgeHost:h,drawCell:g=>je(g,t,e.paddingMm??.5,n,{...r},o),drawEdges:g=>et(g,n,o)}),m.append(i,h),m}const a=de.resolveGridLayout(e,t.widthMm,t.heightMm),c=e.cells.map(()=>{const m=o.createElement("tr");return m.className=$("row",r),m.setAttribute("role","row"),x("contents").applyTo(m),l.appendChild(m),m});for(const m of a.cells)c[m.ri].appendChild(je(m,t,e.paddingMm??.5,n,r,o));const d=o.createElement("div");return x("block").add("position","relative").add("width","100%").add("height","100%").applyTo(d),d.append(i,...Dt(a,t,n,o)),d}function Lt(e,t,n,r){const o=r.createElement("div");o.className=$("paragraph",n),x("block").add("text-align",e.align).add("line-height",e.lineHeight!=null?String(e.lineHeight):void 0).mm("margin-top",e.spaceBeforeMm??0,t).mm("margin-bottom",e.spaceAfterMm??0,t).mm("text-indent",e.indentMm??0,t).applyTo(o);for(const i of e.segments||[]){const l=r.createElement("span");l.className=$("segment",n),l.textContent=i.kind==="field"?i.field??"":i.text??"";const s=x("inline");if(i.style){const a=i.style;s.add("color",a.color).add("background-color",a.backgroundColor).add("font-family",a.fontFamily).add("line-height",a.lineHeight).add("letter-spacing",a.letterSpacing==null?void 0:`${a.letterSpacing*t/72}px`).add("font-weight",a.bold!=null?a.bold?"700":"400":void 0).add("font-style",a.italic!=null?a.italic?"italic":"normal":void 0).add("text-decoration",a.underline!=null?a.underline?"underline":"none":void 0),(a.fontSize!=null||a.fontSizePx!=null)&&s.add("font-size",`${p.round(p.resolveFontSize(a,t).fontSizePx,2)}px`)}s.applyTo(l),o.appendChild(l)}return o}function tt(e,t,n,r){if(G.isRichText(e)){const o=r.createElement("div");o.className=$("rich",n),x("block").applyTo(o);for(const i of e.richParagraphs)o.appendChild(Lt(i,t,n,r));return o}if(Array.isArray(e.lines)&&e.lines.length>0){const o=r.createElement("div");o.className=$("lines",n),x("block").applyTo(o);for(const i of e.lines){const l=r.createElement("div");l.className=$("line",n),l.textContent=i,x("block").add("white-space","pre").add("min-height","1lh").applyTo(l),o.appendChild(l)}return o}return e.text??""}function It(e,t,n,r){const o=r.createElement("div");o.className=$("text",n);const i=e.style||{};return x("flex").add("width","100%").add("height","100%").add("flex-direction","column").add("justify-content",i.verticalAlign==="middle"?"center":i.verticalAlign==="bottom"?"flex-end":"flex-start").add("overflow-wrap","anywhere").add("overflow","hidden").applyTo(o),o.append(tt(e,t,n,r)),o}function Nt(e,t,n){const r=n.createElement("img");return r.className=$("image",t),r.src=e.imageData,x("block").add("width","100%").add("height","100%").add("object-fit","contain").applyTo(r),r.alt=e.kind,r}function ze(e,t,n,r){const o=r.createElement("div");o.className=$("shape",n);const i=e.style||{},l=p.resolveStroke(i),s=p.resolveBoxBorders(i),a=`${p.round(l.widthPt*t/72,2)}px solid ${l.color}`,c=x("block");return e.grid?c.add("position","relative"):e.kind==="rect"?(s.top&&c.add("border-top",a),s.right&&c.add("border-right",a),s.bottom&&c.add("border-bottom",a),s.left&&c.add("border-left",a)):e.kind==="ellipse"?(s.inner&&c.add("border",a).add("border-radius","50%"),i.backgroundColor&&c.add("background-color",i.backgroundColor)):e.kind==="line"&&c.add("height","0").add("border-top",a),c.add("box-sizing","border-box").add("width","100%").add("height","100%"),c.applyTo(o),o}function Ft(e,t,n){const r=n.createElementNS("http://www.w3.org/2000/svg","svg"),o=p.mmToPx(e.widthMm,t),i=p.mmToPx(e.heightMm,t);r.setAttribute("width",String(Math.max(1,o))),r.setAttribute("height",String(Math.max(1,i))),r.setAttribute("aria-hidden","true"),r.style.overflow="visible",r.style.display="block";const l=n.createElementNS("http://www.w3.org/2000/svg","line");l.setAttribute("x1","0"),l.setAttribute("x2",String(o)),l.setAttribute("y1",e.lineDirection==="up"?String(i):"0"),l.setAttribute("y2",e.lineDirection==="up"?"0":String(i));const s=p.resolveStroke({...e.style,borderColor:e.style?.lineColor??e.style?.borderColor});return l.setAttribute("stroke",s.color),l.setAttribute("stroke-width",String(s.widthPt*t/72)),r.appendChild(l),r}function Se(e,t,n,r){const o=r.createElement("div");o.className=`${$("comp",n)} mr-kind-${e.kind}`;const i=x("block").add("position","absolute").mm("left",e.leftMm,t).mm("top",e.topMm,t).mm("width",e.widthMm,t).mm("height",e.heightMm,t).add("box-sizing","border-box");if(Ot(i,e,t),i.applyTo(o),G.isImageBackedComponent(e))return o.appendChild(Nt(e,n,r)),o;if(e.kind==="text")return o.appendChild(It(e,t,n,r)),o;if(e.grid){const s=ze(e,t,n,r);return s.appendChild(kt(e.grid,e,t,n,r)),o.appendChild(s),o}if(e.kind==="line"&&e.lineDirection)return o.appendChild(Ft(e,t,r)),o;if(e.kind==="line"||e.kind==="rect"||e.kind==="ellipse")return o.appendChild(ze(e,t,n,r)),o;const l=r.createElement("div");return l.className=$("unknown",n),x("block").applyTo(l),l.textContent=e.fallbackText??`[${e.kind}]`,l.dataset.mrUnsupported=e.kind,l.setAttribute("role","note"),o.appendChild(l),o}function Ce(e,t,n,r){const o=r.createElement("div");return o.className=$("page",n),x("block","initial").add("position","relative").add("font-family",p.DEFAULT_FONT_FAMILY).add("font-size",`${p.round(p.resolveFontSize(void 0,t).fontSizePx,2)}px`).add("line-height",String(p.resolveLineHeight(void 0))).add("white-space","pre-wrap").add("direction","ltr").mm("width",e.pageWidthMm,t).mm("height",e.pageHeightMm,t).add("background-color","#fff").add("color",p.DEFAULT_TEXT_COLOR).add("overflow","hidden").add("box-sizing","border-box").applyTo(o),e.components.forEach((i,l)=>{const s=Se(i,t,n,r);s.dataset.mrComponentIndex=String(l),o.appendChild(s)}),o}function _t(e,t,n={}){const r=n.dpi??96;D.reportOutputDiagnostics(e,"dom",n);const o=t.createElement("div");return o.className=$("root",n),x("block").applyTo(o),o.dataset.schemaVersion=e.schemaVersion,e.pages.forEach(i=>{o.appendChild(Ce(i,r,n,t))}),o}function jt(e,t,n,r){const o={...n},i=Tt();return Ze.set(o,i),{element:Ce(e,t,o,r),update(s,a){return i.update(s,a&&e.components[a.componentIndex],a)}}}function Pe(e,t,n,r,o,i,l,s="top"){e.font=`${t.italic?"italic ":""}${t.bold?"bold ":""}${t.fontSizePx}px ${l}`,"letterSpacing"in e&&(e.letterSpacing="0px"),e.fillStyle=t.color,e.textBaseline="alphabetic";const a=t.fontSizePx*t.lineHeight,c=t.text===""?[""]:t.text.split(`
2
+ `),d=c.length*a;let m=r;s==="middle"?m=r+(i-d)/2:s==="bottom"&&(m=r+i-d),c.forEach((h,g)=>{const u=m+g*a+t.fontSizePx*.8;zt(e,h,t,n,u,o),t.underline&&h&&Bt(e,h,t,n,u,o)}),e.textAlign="left"}function zt(e,t,n,r,o,i){const l=Array.from(t),s=n.letterSpacingPx??0;if(!s){e.textAlign=n.align==="center"?"center":n.align==="right"?"right":"left";const m=n.align==="center"?r+i/2:n.align==="right"?r+i:r;e.fillText(t,m,o);return}const a=e.measureText(t).width+Math.max(0,l.length-1)*s,c=n.align==="center"?r+(i-a)/2:n.align==="right"?r+i-a:r;e.textAlign="left";let d="";l.forEach((m,h)=>{e.fillText(m,c+e.measureText(d).width+h*s,o),d+=m})}function Bt(e,t,n,r,o,i){const l=e.measureText(t).width+Math.max(0,Array.from(t).length-1)*(n.letterSpacingPx??0),s=n.align==="center"?r+(i-l)/2:n.align==="right"?r+i-l:r;e.strokeStyle=n.color,e.lineWidth=Math.max(.5,n.fontSizePx/20),e.beginPath(),e.moveTo(s,o+1),e.lineTo(s+l,o+1),e.stroke()}function nt(e,t,n,r,o){const i=r/72,l=s=>{e.font=`${s.italic?"italic ":""}${s.bold?"bold ":""}${p.resolveFontSize(s,r).fontSizePx}px ${s.fontFamily??o}`,"letterSpacing"in e&&(e.letterSpacing="0px")};me.drawRichText(t,{x:n.x/i,yTop:-n.y/i,width:n.width/i,height:n.height/i},{measure(s,a){return l(a),e.measureText(s).width/i+(a.letterSpacing??0)},draw(s,a,c,d,m){const h=p.resolveFontSize(a,r).fontSizePx,g=-d*i-h*.8;a.backgroundColor&&(e.fillStyle=a.backgroundColor,e.fillRect(c*i,g,m*i,h*p.resolveLineHeight(a))),Pe(e,{text:s,fontSizePx:h,bold:!!a.bold,italic:a.italic,underline:a.underline,color:p.resolveTextColor(a),align:"left",lineHeight:p.resolveLineHeight(a),letterSpacingPx:(a.letterSpacing??0)*i},c*i,g,m*i,h,a.fontFamily??o)}})}function N(e){if(e?.aborted)throw e.reason??new DOMException("The operation was aborted.","AbortError")}const Ht=(e,t)=>(N(t),/^data:image\/(?:png|jpe?g|webp|gif|svg\+xml)[;,]/i.test(e)?new Promise((n,r)=>{const o=new Image,i=()=>{o.onload=null,o.onerror=null,t?.removeEventListener("abort",l)},l=()=>{i(),o.src="",r(t?.reason??new DOMException("The operation was aborted.","AbortError"))};o.onload=()=>{i(),n(o)},o.onerror=()=>{i(),r(new Error("Image could not be decoded for Canvas output."))},t?.addEventListener("abort",l,{once:!0}),o.src=e}):Promise.reject(new TypeError("Canvas imageData must be an image data URL; provide imageLoader for other sources.")));function Ut(e,t,n){return N(n),n?new Promise((r,o)=>{const i=()=>o(n.reason??new DOMException("The operation was aborted.","AbortError"));n.addEventListener("abort",i,{once:!0}),Promise.resolve().then(()=>e(t,n)).then(r,o).finally(()=>n.removeEventListener("abort",i))}):e(t)}function*Ae(e){function*t(n,r,o,i){if(i.has(n))throw new TypeError("Cyclic grid children cannot be rendered.");G.isImageBackedComponent(n)&&(yield{component:n,componentIndex:r,componentPath:o});const l=new Set(i).add(n);for(const[s,a]of(n.grid?.cells??[]).entries())for(const[c,d]of a.entries())for(const[m,h]of(d?.children??[]).entries())yield*t(h,r,[...o,s,c,m],l)}for(const[n,r]of e.components.entries())yield*t(r,n,[],new Set)}async function Vt(e,t,n){const r=new Map;for(const{component:o}of Ae(e))!G.isImageBackedComponent(o)||r.has(o.imageData)||r.set(o.imageData,await Ut(t,o.imageData,n));return N(n),r}function qt(e,t,n,r,o,i){const l=t,s=l.naturalWidth??l.width??o,a=l.naturalHeight??l.height??i;if(s<=0||a<=0)throw new RangeError("Decoded Canvas image dimensions must be positive.");const c=Math.min(o/s,i/a),d=s*c,m=a*c;e.drawImage(t,n+(o-d)/2,r+(i-m)/2,d,m)}function rt(e){return H.createPageWindowIndex(e.pageHeightsPx,e.gapPx).window(e.viewportHeightPx,e.scrollTopPx,e.overscan)}const $e=96/25.4;function pe(e,t=96){const n=t/96*$e;return{widthPx:Math.max(1,Math.round(e.pageWidthMm*n)),heightPx:Math.max(1,Math.round(e.pageHeightMm*n))}}function ot(e,t,n,r=64e6){if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)throw new RangeError("Canvas dpr and dpi must be positive finite numbers.");if(!Number.isFinite(r)||r<=0)throw new RangeError("maxCanvasPixels must be positive and finite.");const o=pe(e,n),i=Math.round(o.widthPx*t),l=Math.round(o.heightPx*t);if(!Number.isSafeInteger(i)||!Number.isSafeInteger(l)||i*l>r)throw new RangeError("Canvas page exceeds maxCanvasPixels; reduce resolution or split the report.");return{width:i,height:l}}function it(e,t,n,r){const o=document.createElement("canvas"),{widthPx:i,heightPx:l}=pe(e,n),s=ot(e,t,n,r);o.width=s.width,o.height=s.height,o.style.width=`${i}px`,o.style.height=`${l}px`;const a=o.getContext("2d");if(!a)throw new Error("当前环境不支持 Canvas 2D(测试需真浏览器,见 e2e/canvas.spec.ts)");return a.scale(t,t),a.fillStyle="#ffffff",a.fillRect(0,0,i,l),{canvas:o,ctx:a}}function Wt(e,t=96){return p.resolveFontSize(e,t).fontSizePx}function Gt(e,t,n,r,o,i,l){for(const s of me.resolveGridStrokes(t,n))e.strokeStyle=s.color,e.lineWidth=p.ptToPx(s.widthPt,l),e.beginPath(),s.kind==="v"?(e.moveTo(r+s.pos*i,o+s.from*i),e.lineTo(r+s.pos*i,o+s.to*i)):(e.moveTo(r+s.from*i,o+s.pos*i),e.lineTo(r+s.to*i,o+s.pos*i)),e.stroke()}function Jt(e,t,n,r,o,i){e.beginPath(),t.top&&(e.moveTo(n,r),e.lineTo(n+o,r)),t.right&&(e.moveTo(n+o,r),e.lineTo(n+o,r+i)),t.bottom&&(e.moveTo(n+o,r+i),e.lineTo(n,r+i)),t.left&&(e.moveTo(n,r+i),e.lineTo(n,r)),e.stroke()}function Yt(e,t,n,r,o,i,l,s,a,c,d,m){const h=de.resolveGridLayout(t,i/s,l/s);for(const g of h.cells){const u=g.cell.style?.backgroundColor??n.style?.backgroundColor;u&&(e.fillStyle=u,e.fillRect(r+g.xMm*s,o+g.yMm*s,g.widthMm*s,g.heightMm*s))}Gt(e,h,n,r,o,s,a);for(const g of h.cells)Kt(e,g,n,r,o,s,a,c,d,m)}function Kt(e,t,n,r,o,i,l,s,a,c){const d=n.grid?.paddingMm??.5,m=t.cell.text??"",h=p.mergeComponentStyles(n.style,t.cell.style),g=p.resolveFontSize(h,l),u=t.cell.indentMm??0,P=Math.max(0,t.widthMm-2*d-u),S=B.wrapText(m,P,{fontSizePt:g.fontSizePt,bold:h.bold,italic:h.italic,fontFamily:h.fontFamily??s,letterSpacingPt:h.letterSpacing},a).join(`
3
+ `),M={x:r+(t.xMm+d+u)*i,y:o+(t.yMm+d)*i,width:P*i,height:Math.max(0,t.heightMm-2*d)*i};e.save(),e.beginPath(),e.rect(M.x,M.y,M.width,M.height),e.clip(),t.cell.richParagraphs?.length?nt(e,{...n,richParagraphs:t.cell.richParagraphs,style:{verticalAlign:"middle",...h}},M,l,s):Pe(e,{text:S,fontSizePx:g.fontSizePx,bold:h.bold??!1,italic:h.italic,underline:h.underline,color:p.resolveTextColor(h,p.DEFAULT_TEXT_COLOR),align:h.align??"left",lineHeight:p.resolveLineHeight(h),letterSpacingPx:p.ptToPx(h.letterSpacing??0,l)},r+(t.xMm+d+u)*i,o+(t.yMm+d)*i,P*i,Math.max(0,t.heightMm-2*d)*i,h.fontFamily??s,h.verticalAlign??"middle");for(const y of t.cell.children??[])ge(e,{...y,leftMm:y.leftMm+M.x/i,topMm:y.topMm+M.y/i},i,l,s,a,c);e.restore();const E=Ye.dataBarBox(t.cell.dataBar,t.widthMm,t.heightMm,d);E&&(e.save(),e.globalAlpha*=.35,e.fillStyle=E.color,e.fillRect(r+(t.xMm+E.x)*i,o+(t.yMm+E.y)*i,E.width*i,E.height*i),e.restore())}function Xt(e,t,n,r,o,i,l,s,a){const c=t.style??{},d=p.resolveFontSize(c,l);if(G.isRichText(t)){nt(e,t,{x:n,y:r,width:o,height:i},l,s);return}const m=t.lines?.length?t.lines.join(`
4
+ `):B.wrapText(t.text??"",t.widthMm,{fontSizePt:d.fontSizePt,bold:c.bold,italic:c.italic,fontFamily:c.fontFamily??s,letterSpacingPt:c.letterSpacing},a).join(`
5
+ `);Pe(e,{text:m,fontSizePx:d.fontSizePx,bold:c.bold??!1,italic:c.italic,underline:c.underline,color:p.resolveTextColor(c),align:c.align??"left",lineHeight:p.resolveLineHeight(c),letterSpacingPx:p.ptToPx(c.letterSpacing??0,l)},n,r,o,i,c.fontFamily??s,c.verticalAlign)}function ge(e,t,n,r,o,i,l){const s=t.leftMm*n,a=t.topMm*n,c=t.widthMm*n,d=t.heightMm*n,m=t.style??{};if(G.isImageBackedComponent(t)){const h=l?.get(t.imageData);h?qt(e,h,s,a,c,d):Be(e,t,s,a,c,d);return}if(t.grid){Yt(e,t.grid,t,s,a,c,d,n,r,o,i,l);return}switch(t.kind){case"text":{Xt(e,t,s,a,c,d,r,o,i);break}case"rect":{const h=p.resolveStroke(m),g=p.resolveBoxBorders(m);m.backgroundColor&&(e.fillStyle=m.backgroundColor,e.fillRect(s,a,c,d)),g.inner&&(e.strokeStyle=h.color,e.lineWidth=p.ptToPx(h.widthPt,r),Jt(e,g,s,a,c,d));break}case"line":{const h=p.resolveStroke({...m,borderColor:m.lineColor??m.borderColor});e.strokeStyle=h.color,e.lineWidth=p.ptToPx(h.widthPt,r),e.beginPath();const g=t.lineDirection==="up"?a+d:t.lineDirection==="down"?a:a+d/2,u=t.lineDirection==="up"?a:t.lineDirection==="down"?a+d:a+d/2;e.moveTo(s,g),e.lineTo(s+c,u),e.stroke();break}case"ellipse":{const h=p.resolveStroke(m);e.strokeStyle=h.color,e.lineWidth=p.ptToPx(h.widthPt,r),m.backgroundColor&&(e.fillStyle=m.backgroundColor,e.beginPath(),e.ellipse(s+c/2,a+d/2,c/2,d/2,0,0,Math.PI*2),e.fill()),e.beginPath(),e.ellipse(s+c/2,a+d/2,c/2,d/2,0,0,Math.PI*2),e.stroke();break}default:Be(e,t,s,a,c,d);break}}function Be(e,t,n,r,o,i){e.save(),e.strokeStyle="#94a3b8",e.strokeRect(n,r,o,i),e.fillStyle="#64748b",e.font="12px sans-serif",e.fillText(t.fallbackText??`[${t.kind}]`,n+3,r+14),e.restore()}async function Zt(e,t={}){if(typeof document>"u")throw new Error("renderPlanToImages 需要浏览器环境(SSR/Node 请在客户端钩子中调用)");const{format:n="png",quality:r=.92,...o}=t;if(n!=="png"&&n!=="jpeg")throw new TypeError("Image format must be png or jpeg.");if(!Number.isFinite(r)||r<0||r>1)throw new RangeError("Image quality must be between 0 and 1.");N(t.signal);const i=await D.resolvePlanAssets(e,{...t,format:"canvas"});e=i.plan;const l=[...i.diagnostics,...D.reportOutputDiagnostics(e,"canvas",t)],s=n==="jpeg"?"image/jpeg":"image/png",a=[],c=Math.min(e.pages.length-1,t.end??e.pages.length-1);for(let d=Math.max(0,t.start??0);d<=c;d++){N(t.signal);const m=await at(e.pages[d],d,o,l);try{a.push(await Qt(m,s,r,t.signal))}finally{m.width=0,m.height=0}await ye.outputCheckpoint(t,a.length,c-Math.max(0,t.start??0)+1)}return N(t.signal),{blobs:a,diagnostics:l}}function Qt(e,t,n,r){return N(r),new Promise((o,i)=>{const l=()=>i(r?.reason??new DOMException("The operation was aborted.","AbortError"));r?.addEventListener("abort",l,{once:!0});try{e.toBlob(s=>{r?.removeEventListener("abort",l),s?o(s):i(new Error("Canvas encoding failed; no empty image was emitted."))},t,n)}catch(s){r?.removeEventListener("abort",l),i(s)}})}function en(e,t={}){if(N(t.signal),typeof document>"u")throw new Error("renderPlanToCanvas 需要浏览器环境(SSR 请在客户端钩子中调用)");const n=t.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),r=t.dpi??96,o=r/96*$e,i=t.fontFamily??p.DEFAULT_FONT_FAMILY,l=t.measurer??B.heuristicMeasurer,s=Math.max(0,t.start??0),a=Math.min(e.pages.length-1,t.end??e.pages.length-1),c=[],d=D.reportOutputDiagnostics(e,"canvas",t),m=tn(e,s,a);for(const h of m)D.notifyOutputDiagnostic(h,t),d.push(h);if(t.fidelity==="strict"&&m.length)throw new D.OutputFidelityError(d);for(let h=s;h<=a;h++){N(t.signal);const g=e.pages[h],{canvas:u,ctx:P}=it(g,n,r,t.maxCanvasPixels);for(const S of g.components)ge(P,S,o,r,i,l);c.push(u)}return{canvases:c,diagnostics:d}}function tn(e,t,n){return n<t?[]:e.pages.slice(t,n+1).flatMap((r,o)=>[...Ae(r)].map(({component:i,componentIndex:l,componentPath:s})=>({code:"async-image-required",severity:"warning",format:"canvas",pageIndex:t+o,componentIndex:l,componentPath:s,kind:i.kind,nid:i.nid,message:"Use renderPlanToCanvasAsync or renderPlanToImages to decode and include images."})))}async function nn(e,t={}){if(typeof document>"u")throw new Error("renderPlanToCanvasAsync 需要浏览器环境(Node 请使用 PDF 或 XLSX 输出)");N(t.signal);const n=await D.resolvePlanAssets(e,{...t,format:"canvas"});e=n.plan;const r=[...n.diagnostics,...D.reportOutputDiagnostics(e,"canvas",t)],o=[],i=Math.min(e.pages.length-1,t.end??e.pages.length-1);for(let l=Math.max(0,t.start??0);l<=i;l++)o.push(await at(e.pages[l],l,t,r));return{canvases:o,diagnostics:r}}async function at(e,t,n,r){const o=n.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),i=n.dpi??96,l=n.fontFamily??p.DEFAULT_FONT_FAMILY,s=await st(e,t,n,r);N(n.signal);const{canvas:a,ctx:c}=it(e,o,i,n.maxCanvasPixels);for(const d of e.components)ge(c,d,i/25.4,i,l,n.measurer??B.heuristicMeasurer,s);return a}async function st(e,t,n,r){const o=n.imageLoader??Ht;return Vt(e,async(i,l)=>{try{return await o(i,l)}catch(s){if(l?.aborted)throw s;const a=[...Ae(e)].find(({component:g})=>g.imageData===i),{component:c,componentIndex:d,componentPath:m}=a,h={code:"image-decode-failed",severity:"warning",format:"canvas",pageIndex:t,componentIndex:d,componentPath:m,kind:c.kind,nid:c.nid,message:"Image decoding failed; raster output was cancelled instead of omitting the image."};throw r.push(h),D.notifyOutputDiagnostic(h,n),s}},n.signal)}function rn(e,t={}){const n=t.dpr??(typeof devicePixelRatio=="number"?devicePixelRatio:1),r=t.dpi??96,o=r/96*$e,i=t.fontFamily??p.DEFAULT_FONT_FAMILY,l=t.measurer??B.heuristicMeasurer,s=t.overscan??1,a=t.gapPx??18,c=t.pagesPerFrame??1,d=e.pages.map(b=>b.pageHeightMm*o),m=Math.max(1,...e.pages.map(b=>b.pageWidthMm*o)),h={start:0,end:-1};let g=null,u=null,P=null,S=null,M=[],E=0,y=[],U=0,V=new AbortController;const Ie=[];function bt(){const b=g;b.innerHTML="",u=document.createElement("div"),u.style.cssText=`width:${m}px;margin:0 auto;`,P=document.createElement("div"),S=document.createElement("div"),u.appendChild(P),M=[];const O=Math.min(e.pages.length,3+s*2);for(let W=0;W<O;W++){const C=document.createElement("div");C.style.cssText=`margin:0 auto ${a}px;box-shadow:0 2px 8px rgba(0,0,0,.35);background:#fff;`,u.appendChild(C),M.push(C)}u.appendChild(S),b.appendChild(u)}async function yt(b,O){const W=U,C=await D.resolvePlanAssets(e,{...t,signal:V.signal,format:"canvas",start:O,end:O});Ie.push(...C.diagnostics);const L=C.plan.pages[O],ae=await st(L,O,{...t,signal:V.signal},Ie);if(W!==U||!g)return;const{widthPx:we,heightPx:be}=pe(L,r);let q=b.firstElementChild;(!q||q.tagName!=="CANVAS")&&(q=document.createElement("canvas"),b.innerHTML="",b.appendChild(q));const Fe=ot(L,n,r,t.maxCanvasPixels);q.width=Fe.width,q.height=Fe.height,q.style.width=`${we}px`,q.style.height=`${be}px`;const X=q.getContext("2d");if(X){X.setTransform(1,0,0,1,0,0),X.scale(n,n),X.fillStyle="#ffffff",X.fillRect(0,0,we,be);for(const vt of L.components)ge(X,vt,o,r,i,l,ae);q.dataset.canvasPage=String(O),b.style.height=`${be}px`,b.style.width=`${we}px`}}function Mt(b){U++,h.start=b.start,h.end=b.end,P.style.height=`${b.start*a+d.slice(0,b.start).reduce((C,L)=>C+L,0)}px`;const O=e.pages.length-1-b.end;S.style.height=`${O*a+d.slice(b.end+1).reduce((C,L)=>C+L,0)}px`;const W=b.end-b.start+1;M.forEach((C,L)=>{if(L<W){C.style.display="";const ae=b.start+L;C.style.height=`${d[ae]??0}px`}else C.style.display="none"}),y=[];for(let C=b.start;C<=b.end;C++){const L=M[C-b.start];if(!L)continue;L.firstElementChild?.dataset?.canvasPage!==String(C)&&y.push(C)}fe()}function fe(){E||y.length===0||(E=requestAnimationFrame(()=>{E=0;let b=Math.max(1,c);for(;y.length>0&&b-- >0;){const O=y.shift(),W=M[O-h.start];W&&yt(W,O).catch(()=>{})}y.length>0&&fe()}))}function oe(){E||(E=requestAnimationFrame(()=>{E=0;const b=g,O=rt({pageHeightsPx:d,viewportHeightPx:b.clientHeight,scrollTopPx:b.scrollTop,overscan:s,gapPx:a});O.start!==h.start||O.end!==h.end?Mt(O):fe()}))}let ie=null;return{attach(b){if(typeof document>"u")throw new Error("createCanvasPager 需要浏览器环境(SSR 请在客户端钩子中调用 attach)");N(t.signal),V=new AbortController,t.signal?.addEventListener("abort",Ne,{once:!0}),D.reportOutputDiagnostics(e,"canvas",t),g=b,bt(),b.addEventListener("scroll",oe,{passive:!0}),typeof ResizeObserver<"u"&&(ie=new ResizeObserver(()=>oe()),ie.observe(b)),oe()},destroy(){U++,V.abort(),t.signal?.removeEventListener("abort",Ne),E&&cancelAnimationFrame(E),E=0,ie?.disconnect(),ie=null,g?.removeEventListener("scroll",oe),y=[],u?.remove(),g=null},window(){return{...h}}};function Ne(){V.abort(t.signal?.reason)}}function Oe(e,t,n){let r,o;if(typeof e=="string"){const i=p.PAPER_SIZES[e];if(!i)throw new Error(`未知纸张预设 "${e}"(可用:${Object.keys(p.PAPER_SIZES).join("/")})`);r=i.widthMm,o=i.heightMm}else typeof e=="number"?(r=e,o=t??297):(r=e.widthMm,o=e.heightMm);return n?{widthMm:o,heightMm:r}:{widthMm:r,heightMm:o}}class lt{constructor(){this.pages=[],this.pending=null,this.templateParams=void 0}repeat(t){return this.templateRepeat=t,this}params(t){return this.templateParams=t,this}page(t="a4",n={},r){this.collect();const i=r!=null&&!("margins"in r)&&!("landscape"in r)&&("marginTopMm"in r||"marginBottomMm"in r||"marginLeftMm"in r||"marginRightMm"in r)?{margins:r}:typeof n=="number"?r??{}:n,{widthMm:l,heightMm:s}=Oe(t,typeof n=="number"?n:void 0,i.landscape),a=i.margins??{};return this.pending=new ct(this,{widthMm:l,heightMm:s,marginTopMm:a.marginTopMm??10,marginBottomMm:a.marginBottomMm??10,marginLeftMm:a.marginLeftMm??10,marginRightMm:a.marginRightMm??10}),this.pending}collect(){this.pending&&(this.pages.push(this.pending.buildPage()),this.pending=null)}build(){if(this.collect(),this.pages.length===0)throw new Error("模板至少需要一页:先调用 .page() 添加内容");return{...this.templateParams?{params:this.templateParams}:{},...this.templateRepeat?{repeat:this.templateRepeat}:{},pages:this.pages}}}class ct{constructor(t,n){this.parent=t,this.page=n,this.components=[]}text(t,n={},r={}){return this.components.push({kind:"text",leftMm:n.leftMm??0,topMm:n.topMm??0,widthMm:n.widthMm??60,heightMm:n.heightMm??8,text:t,style:r}),this}list(t,n,r,o={}){return this.components.push({kind:"list",leftMm:n.leftMm??10,topMm:n.topMm??30,widthMm:n.widthMm??180,dataset:t,columns:r,...o}),this}rect(t,n={}){return this.components.push({kind:"rect",...t,style:n}),this}line(t,n,r,o={}){return this.components.push({kind:"line",leftMm:t,topMm:n,widthMm:r,heightMm:.5,style:o}),this}barcode(t,n){return this.components.push({kind:"barcode",leftMm:n.leftMm??0,topMm:n.topMm??0,widthMm:n.widthMm??40,heightMm:n.heightMm??12,fallbackText:t}),this}qrcode(t,n,r,o){return this.components.push({kind:"qrcode",leftMm:r,topMm:o,widthMm:n,heightMm:n,fallbackText:t}),this}buildPage(){return{...this.page,components:this.components}}done(){return this.parent}build(){return this.done().build()}}function on(){return new lt}function an(e,t={}){return Ee.validateDatasetRows([],e),e.fields.map(n=>({field:n.field,header:`${n.label??n.field}${n.unit?` (${n.unit})`:""}`,semanticRole:n.semanticRole??(n.type==="number"||n.type==="decimal"?"measure":n.type==="date"?"date":n.enum?"dimension":"text"),...n.format?{format:{...n.format}}:{},...t[n.field]}))}function F(e,t,n=!1){if(!Number.isFinite(e)||(n?e<0:e<=0))throw new Error(`${t} 必须是有限${n?"非负":"正"}数`)}function le(e,t,n){if(e!==void 0&&!["left","center","right","justify",...n?["auto"]:[]].includes(e))throw new Error(`${t} 必须是 left/center/right/justify${n?"/auto":""}`)}function sn(e){const t=e.layout??"page";if(t!=="page"&&t!=="wide")throw new Error("layout 必须是 page 或 wide");if(t==="wide"&&(e.paper!==void 0||e.landscape!==void 0))throw new Error('宽表布局不能同时指定 paper 或 landscape;标准纸型请使用 layout: "page"');if(t!=="wide"&&e.columnWidthMm!==void 0)throw new Error('columnWidthMm 仅适用于 layout: "wide"');const n=e.columnWidthMm??30;return F(n,"columnWidthMm"),{layout:t,columnWidthMm:n}}function ln(e){const t=e.paper===void 0?"a4":e.paper;if(typeof t!="string"&&(typeof t!="object"||t===null)||e.landscape!==void 0&&typeof e.landscape!="boolean")throw new Error("paper 必须是纸张预设名或 { widthMm, heightMm } 对象,landscape 必须是布尔值");if(typeof t=="string"&&!Object.prototype.hasOwnProperty.call(p.PAPER_SIZES,t))throw new Error(`未知纸张预设 "${t}"(可用:${Object.keys(p.PAPER_SIZES).join("/")})`);const n=Oe(t,void 0,e.landscape),r=n.widthMm,o=n.heightMm;return F(r,"纸张 widthMm"),F(o,"纸张 heightMm"),{widthMm:r,heightMm:o}}function cn(e){if(e.margins!==void 0&&(!e.margins||typeof e.margins!="object"||Array.isArray(e.margins)))throw new Error("margins 必须是页边距对象");const t=e.margins??{},n={marginTopMm:t.marginTopMm===void 0?10:t.marginTopMm,marginBottomMm:t.marginBottomMm===void 0?10:t.marginBottomMm,marginLeftMm:t.marginLeftMm===void 0?10:t.marginLeftMm,marginRightMm:t.marginRightMm===void 0?10:t.marginRightMm};for(const[r,o]of Object.entries(n))F(o,r,!0);return n}function dn(e,t){const n=e.dataset===void 0?"detail":e.dataset;if(typeof n!="string"||!n.trim())throw new Error("dataset 必须是非空字符串");if(e.title!==void 0&&typeof e.title!="string")throw new Error("title 必须是字符串");const r=e.titleHeightMm===void 0?10:e.titleHeightMm,o=e.titleGapMm===void 0?4:e.titleGapMm;F(r,"titleHeightMm"),F(o,"titleGapMm",!0);const i=e.title!==void 0&&e.title.length>0,l=i?r+o:0;if(l>=t)throw new Error("标题高度与间距占满页面,必须为表格保留可用高度");return{dataset:n,titleHeightMm:r,hasTitle:i,titleSpaceMm:l}}function mn(e){if(e.listOptions!==void 0&&(!e.listOptions||typeof e.listOptions!="object"||Array.isArray(e.listOptions)))throw new Error("listOptions 必须是列表配置对象");const t=e.listOptions??{};le(t.align,"listOptions.align",!0),le(t.headerAlign,"listOptions.headerAlign",!1);for(const n of["fontSizePt","rowHeightMm","paddingMm"]){const r=t[n];r!==void 0&&F(r,`listOptions.${n}`,n==="paddingMm")}return t}function hn(e){let t=0,n=0;for(const[r,o]of e.entries()){if(!o||typeof o.header!="string"||typeof o.field!="string"||!o.field.trim())throw new Error(`columns[${r}] 需要字符串 header 与非空 field`);le(o.align,`columns[${r}].align`,!0),le(o.headerAlign,`columns[${r}].headerAlign`,!1),o.flex!==void 0&&F(o.flex,`columns[${r}].flex`),o.widthMm!==void 0?(F(o.widthMm,`columns[${r}].widthMm`),t+=o.widthMm):n=Math.max(n,o.flex??1)}return{fixedWidthMm:t,maxFlex:n}}function pn(e,t,n,r){const{fixedWidthMm:o,maxFlex:i}=hn(e.columns);if(t==="page"&&o>r)throw new Error(`固定列宽 ${o}mm 超出页面可用宽度 ${r}mm`);const l=r-o;if(t==="page"&&i>0&&l<=0)throw new Error("固定列占满页面可用宽度,自动列需要正的剩余宽度");const s=i>0?e.columns.reduce((c,d)=>c+(d.widthMm===void 0?(d.flex??1)/i:0),0):0;return{columns:e.columns.map(({widthMm:c,flex:d,...m},h)=>{const g=c??(t==="wide"?n*(d??1):l*((d??1)/i)/s);return F(g,`columns[${h}] 分配后的 widthMm`),{...m,widthMm:g}}),fixedWidthMm:o,maxFlex:i}}function gn(e){if(!e||typeof e!="object")throw new Error("标准明细模板需要 options 对象");if(!Array.isArray(e.columns)||e.columns.length===0)throw new Error("columns 至少需要一列");const{layout:t,columnWidthMm:n}=sn(e),r=ln(e);let o=r.widthMm;const i=r.heightMm,l=cn(e);let s=o-l.marginLeftMm-l.marginRightMm;const a=i-l.marginTopMm-l.marginBottomMm;if(t==="page"&&s<=0||a<=0)throw new Error("页边距占满纸张,必须保留正的可用宽度和高度");const{dataset:c,titleHeightMm:d,hasTitle:m,titleSpaceMm:h}=dn(e,a),g=mn(e),{columns:u,fixedWidthMm:P,maxFlex:S}=pn(e,t,n,s);t==="wide"&&(s=u.reduce((E,y)=>E+y.widthMm,0),F(s,"宽表总列宽"),o=s+l.marginLeftMm+l.marginRightMm,F(o,"宽表总宽度"));const M={widthMm:o,heightMm:i,...l,components:[],...t==="wide"?{layout:t}:{}};return m&&M.components.push({kind:"text",text:e.title,leftMm:l.marginLeftMm,topMm:l.marginTopMm,widthMm:s,heightMm:d,style:{fontSize:16,bold:!0,align:"center",verticalAlign:"middle",...e.titleStyle}}),M.components.push({align:"auto",headerAlign:"center",...g,kind:"list",...t==="wide"?{layout:t}:{},...m?{title:e.title}:{},dataset:c,columns:u,leftMm:l.marginLeftMm,topMm:l.marginTopMm+h,widthMm:t==="wide"||S>0?s:P}),e.params===void 0?{pages:[M]}:{params:e.params,pages:[M]}}function un(e){if(e.components!==void 0&&e.pages!==void 0)throw new TypeError("标签 components 与 pages 只能选择一种");const{dataset:t,rowKey:n,copies:r,params:o}=e,i=e.pages??[{components:e.components??[]}],l={repeat:{dataset:t,...n===void 0?{}:{rowKey:n},...r===void 0?{}:{copies:r}},...o===void 0?{}:{params:o},pages:i.map(a=>({widthMm:a.widthMm??e.widthMm??80,heightMm:a.heightMm??e.heightMm??55,marginTopMm:0,marginRightMm:0,marginBottomMm:0,marginLeftMm:0,components:a.components,...a.meta===void 0?{}:{meta:a.meta}}))},s=R.validateReportTemplate(l);if(!s.ok)throw new R.ReportTemplateError(s.errors);return JSON.parse(JSON.stringify(l))}function fn(e){if(!e||typeof e!="object"||!e.repeat)throw new f.ReportSourceError("config","defineLabelReport 需要带 repeat 的固定标签模板");const t=R.validateReportTemplate(e);if(!t.ok)throw new R.ReportTemplateError(t.errors);return e.repeat.dataset}function He(e,t){if(!Array.isArray(e))throw new f.ReportSourceError("validate","标签数据应为对象数组;请从业务响应中提取行数组");return{[t]:e}}function wn(e){const{template:t,rows:n,load:r,dataSchema:o,params:i,pagination:l,dataValidation:s}=e,a=fn(t);if(n!==void 0==(r!==void 0)||r!==void 0&&typeof r!="function")throw new f.ReportSourceError("config","标签报表应且只能配置 rows 或 load 其中一种数据来源");const c={template:t,params:i,pagination:l,dataValidation:s,...o===void 0?{}:{dataSchema:{[a]:o}}};return r?f.defineReport({...c,load:r,mapData:d=>He(d,a)}):{...c,datasets:He(n,a)}}function bn(e){return e}class z extends Error{constructor(t,n){super(n),this.code=t,this.name="ReportTemplateMigrationError"}}function Ue(e){let t=e;if(typeof t=="string"){if(t.length>1e7)throw new z("result","模板迁移输入超过预算");try{t=JSON.parse(t)}catch{throw new z("result","模板 JSON 语法无效")}}const n=f.snapshotReportJson(t,{maxBytes:1e7,error:(r,o)=>new z("result",o)});if(!n||typeof n!="object"||Array.isArray(n))throw new z("result","模板迁移应返回文档对象");return n}function yn(e){if(!Array.isArray(e)||e.length>32)throw new z("definition","模板迁移最多声明 32 步");const t=new Map;for(const n of e){if(!n||![n.from,n.to].every(r=>typeof r=="string"&&r.trim()&&r.length<=64)||n.from===n.to||t.has(n.from)||typeof n.migrate!="function"||n.from===R.REPORT_TEMPLATE_DOCUMENT_VERSION)throw new z("definition","迁移起点应唯一,不得从当前版本降级");t.set(n.from,{...n})}for(const n of t.keys()){const r=new Set;let o=n;for(;t.has(o);){if(r.has(o))throw new z("definition","模板迁移链存在循环");r.add(o),o=t.get(o).to}if(o!==R.REPORT_TEMPLATE_DOCUMENT_VERSION)throw new z("definition","每条迁移链应到达当前模板版本")}return t}function dt(e=[]){const t=yn(e);return async n=>{let r=Ue(n);const o=[];for(;r.schemaVersion!==R.REPORT_TEMPLATE_DOCUMENT_VERSION;){const i=typeof r.schemaVersion=="string"?t.get(r.schemaVersion):void 0;if(!i)throw new z("unsupported","未声明此模板版本的迁移路径");const l=r.id,s=Ue(await i.migrate(r));if(s.schemaVersion!==i.to||typeof l=="string"&&s.id!==l)throw new z("result","迁移结果版本不匹配或改变了模板身份");o.push({from:i.from,to:i.to}),r=s}return{document:R.parseReportTemplate(r),steps:o}}}class _ extends Error{constructor(t,n){super(n),this.code=t,this.name="ReportTemplateStoreError"}}function j(e){return JSON.parse(JSON.stringify(e))}function A(e){if(!e?.aborted)return;const t=new Error("模板操作已取消");throw t.name="AbortError",t}function Ve(e){const t=e?Number(e.revision):0;if(!Number.isSafeInteger(t)||t<0||t>=Number.MAX_SAFE_INTEGER)throw new _("history","修订号无效或已达上限");return String(t+1)}function Mn(e,t={}){const n=t.migrations?dt(t.migrations):void 0,r=async a=>n?(await n(a)).document:R.parseReportTemplate(a),o=async(a,c)=>{A(c);const d=await e.read(a,c);return A(c),d?j(d):void 0},i=async(a,c)=>{const d=await o(a,c.signal);if((d?.revision??null)!==c.expectedRevision)throw new _("conflict","模板已变化,请重新读取后提交");return d},l=async(a,c,d)=>{if(A(c.signal),!await e.compareAndSwap(a.id,c.expectedRevision,j(a),{signal:c.signal,...d?{publication:j(d)}:{}}))throw new _("conflict","模板已被其他请求更新");return j(a)},s=async(a,c,d,m)=>{if(t.beforePublish){A(d.signal);const P=a.published?await r(a.published):void 0;A(d.signal);const S=await t.beforePublish({document:R.parseReportTemplate(c),previous:P,signal:d.signal});if(!S||S.ok!==!0)throw new _("review",S?.issues?.find(M=>M.severity==="error")?.message??"模板发布检查未通过");A(d.signal)}const h=Ve(a),g=R.parseReportTemplate({...c,revision:h}),u={revision:h,document:g,publishedAt:(t.now?.()??new Date).toISOString()};return m!==void 0&&(u.restoredFrom=m),l({id:a.id,revision:h,publishedRevision:h,published:g},d,u)};return{list:async a=>{A(a);const c=await e.list(a);return A(a),j(c)},get:async(a,c={})=>{const d=await o(a,c.signal),m=c.draft?d?.draft:d?.published,h=m?await r(m):void 0;return A(c.signal),h},history:async(a,c)=>{A(c);const d=await e.history(a,c);return A(c),j(d)},saveDraft:async(a,c)=>{c={...c},A(c.signal);const d=await r(t.migrate?await t.migrate(a):a),m=await i(d.id,c),h=Ve(m);return l({id:d.id,revision:h,draft:{...d,revision:h},...m?.publishedRevision?{publishedRevision:m.publishedRevision,published:m.published}:{}},c)},publish:async(a,c)=>{c={...c};const d=await i(a,c);if(!d)throw new _("missing","模板不存在");if(!d.draft)throw new _("draft","没有可发布的草稿");return s(d,await r(d.draft),c)},rollback:async(a,c,d)=>{d={...d};const m=await i(a,d);if(!m)throw new _("missing","模板不存在");A(d.signal);const h=await e.getVersion(a,c,d.signal);if(!h)throw new _("history","历史修订不存在");return s(m,await r(h.document),d,c)}}}function vn(){const e=new Map,t=new Map;return{read:async(n,r)=>{A(r);const o=e.get(n);return o?j(o):void 0},list:async n=>(A(n),Array.from(e.values(),({id:r,revision:o,publishedRevision:i})=>({id:r,revision:o,...i?{publishedRevision:i}:{}}))),history:async(n,r)=>(A(r),Array.from(t.get(n)?.values()??[],o=>j(o))),getVersion:async(n,r,o)=>{A(o);const i=t.get(n)?.get(r);return i?j(i):void 0},compareAndSwap:async(n,r,o,i)=>{if(A(i.signal),(e.get(n)?.revision??null)!==r)return!1;if(o.id!==n)throw new _("history","状态 ID 与存储 ID 不一致");const l=j(o),s=i.publication;if(s){const a=t.get(n)??new Map;if(a.has(s.revision)||s.revision!==o.revision||s.document.id!==n)throw new _("history","发布修订不可覆盖,且必须与状态修订和模板 ID 一致");a.set(s.revision,j(s)),t.set(n,a)}return e.set(n,l),!0}}}class w extends Error{constructor(t,n,r="$",o){super(n),this.code=t,this.path=r,this.extensionId=o,this.name="ReportComponentExtensionError"}}const En=new Set(["__proto__","constructor","prototype"]);function ee(e,t="$",n={nodes:0,units:0},r=0){if(++n.nodes>2048||r>16)throw new w("binding","Component extension JSON exceeds its depth/node budget.",t);if(n.units>64*1024)throw new w("binding","Component extension JSON exceeds 64 Ki UTF-16 units.",t);if(e===null||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"){if(n.units+=e.length,n.units>64*1024)throw new w("binding","Component extension JSON exceeds 64 Ki UTF-16 units.",t);return e}if(!e||typeof e!="object")throw new w("binding","Component extension values must be finite JSON data.",t);const o=Object.getPrototypeOf(e);if(Array.isArray(e))return Rn(e,t,n,r);if(o!==Object.prototype&&o!==null)throw new w("binding","Component extension values must be plain JSON objects.",t);return Tn(e,t,n,r)}function De(e,t,n){const r=Object.getOwnPropertyDescriptor(e,t);if(typeof t!="string"||En.has(t)||!r?.enumerable||r.get||r.set)throw new w("binding","Component extension JSON contains an unsafe key or accessor.",n);return r.value}function Rn(e,t,n,r){if(Object.getPrototypeOf(e)!==Array.prototype||e.length>2048||Reflect.ownKeys(e).length!==e.length+1)throw new w("binding","Component extension arrays must be plain dense JSON arrays.",t);return Object.freeze(Array.from({length:e.length},(o,i)=>ee(De(e,String(i),`${t}[${i}]`),`${t}[${i}]`,n,r+1)))}function Tn(e,t,n,r){const o=Reflect.ownKeys(e);if(o.length>2048)throw new w("binding","Component extension JSON exceeds its node budget.",t);const i=o.map(l=>{const s=`${t}.${String(l)}`,a=De(e,l,s);return n.units+=String(l).length,[l,ee(a,s,n,r+1)]});return Object.freeze(Object.fromEntries(i))}function re(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new w("binding","Expected a component extension object.",t);return e}function ue(e,t,n){for(const r of Object.keys(e))if(!t.includes(r))throw new w("binding","Unknown component extension property.",`${n}.${r}`)}function ve(e,t,n=160){if(typeof e!="string"||!e.trim()||e.length>n)throw new w("definition","Component extension labels must be bounded nonempty strings.",t)}function mt(e,t){if(typeof e!="string"||!/^[a-z][a-z\d_.-]{0,127}$/i.test(e))throw new w("definition","Invalid component extension id.","$.id");if(typeof t!="string"||t.length>64||!/^\d+\.\d+\.\d+(?:-[\da-z.-]+)?(?:\+[\da-z.-]+)?$/i.test(t))throw new w("definition","Component extension version must be explicit semantic version text.","$.version",e)}function ke(e,t,n){if(!(e===null&&!t.required)){if(typeof e!==t.type||typeof e=="number"&&!Number.isFinite(e))throw new w("binding",`Expected ${t.type} component property.`,n);if(t.options&&!t.options.some(r=>Object.is(r,e)))throw new w("binding","Component property is outside its declared options.",n);if(typeof e=="number"&&(e<(t.min??-1/0)||e>(t.max??1/0)))throw new w("binding","Component property is outside its declared range.",n);if(typeof e=="string"&&e.length>(t.maxLength??64*1024))throw new w("binding","Component property exceeds maxLength.",n)}}function xn(e,t){const n=re(e,t);ue(n,["label","type","required","default","options","min","max","maxLength"],t);const r=n;if(ve(r.label,`${t}.label`),!["string","number","boolean"].includes(r.type))throw new w("definition","Unknown component property type.",t);if(r.required!==void 0&&typeof r.required!="boolean")throw new w("definition","Component property required must be boolean.",t);Sn(r,t),r.default!==void 0&&ke(r.default,r,`${t}.default`)}function Sn(e,t){for(const n of["min","max"])if(e[n]!==void 0&&(e.type!=="number"||!Number.isFinite(e[n])))throw new w("definition","Numeric property bounds must be finite numbers.",t);if((e.min??-1/0)>(e.max??1/0))throw new w("definition","Component property min exceeds max.",t);if(e.maxLength!==void 0&&(e.type!=="string"||!Number.isSafeInteger(e.maxLength)||e.maxLength<0||e.maxLength>64*1024))throw new w("definition","Invalid component property maxLength.",t);if(e.options!==void 0){if(!Array.isArray(e.options)||!e.options.length||e.options.length>64)throw new w("definition","Component property options must contain 1 to 64 values.",t);for(const n of e.options)ke(n,{...e,options:void 0},`${t}.options`)}}function Cn(e){const t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new w("definition","Component extension metadata must be a plain object.");const n=Reflect.ownKeys(e).filter(o=>o!=="load").map(o=>[o,De(e,o,`$.${String(o)}`)]),r=ee(Object.fromEntries(n));if(ue(r,["id","version","kind","label","description","properties"],"$"),mt(r.id,r.version),ve(r.label,"$.label"),!["image","chart","barcode","qrcode"].includes(r.kind))throw new w("definition","Extension kind must use the existing image-backed output pipeline.","$.kind");if(r.description!==void 0&&ve(r.description,"$.description",2048),r.properties!==void 0){const o=re(r.properties,"$.properties");if(Object.keys(o).length>64)throw new w("definition","Component extension supports at most 64 properties.","$.properties");for(const[i,l]of Object.entries(o))xn(l,`$.properties.${i}`)}return r}function ht(e,t){const n=re(ee(t??{}),"$.props"),r={};for(const o of Object.keys(n))if(!Object.prototype.hasOwnProperty.call(e.properties??{},o))throw new w("binding","Unknown component property.",`$.props.${o}`,e.id);for(const[o,i]of Object.entries(e.properties??{})){const l=Object.prototype.hasOwnProperty.call(n,o)?n[o]:i.default;if(l===void 0){if(i.required)throw new w("binding","Required component property is missing.",`$.props.${o}`,e.id);continue}ke(l,i,`$.props.${o}`),r[o]=l}return Object.freeze(r)}const J="componentExtension";function Pn(e){const t=Object.getOwnPropertyDescriptor(e,"meta")?.value,n=t&&Object.getOwnPropertyDescriptor(t,J);if(n){if(n.get||n.set)throw new w("binding","Component extension binding cannot be an accessor.",`$.meta.${J}`);return n.value}}function An(e,t){const n=re(ee(Pn(t)),`$.meta.${J}`);ue(n,["id","version","props","binding"],`$.meta.${J}`),mt(n.id,n.version);const r=e.get(n.id);if(!r)throw new w("binding","Component extension is not registered in this runtime.",`$.meta.${J}.id`,n.id);if(r.metadata.version!==n.version||r.metadata.kind!==t.kind)throw new w("binding","Component extension version or image kind does not match its registration.",`$.meta.${J}`,r.metadata.id);const o=Object.freeze({id:r.metadata.id,version:r.metadata.version,props:ht(r.metadata,n.props),...n.binding===void 0?{}:{binding:n.binding}});return{entry:r,extension:o}}function qe(e){return e.released??=Promise.resolve().then(()=>e.renderer?.dispose?.())}function Z(e){if(e)throw new w("disposed","Component registry has been disposed.")}function $n(e){if(!e||typeof e!="object")throw new w("definition","Component extension definition must be an object.");if(Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw new w("definition","Component extension definition must be a plain object.");const t=Object.getOwnPropertyDescriptor(e,"load");if(!t||t.get||t.set||typeof t.value!="function")throw new w("definition","Component extension needs a trusted runtime loader.","$.load");return{metadata:Cn(e),load:t.value}}function On(e,t){if(!(e&&typeof e.render=="function"&&(e.dispose===void 0||typeof e.dispose=="function"))){if(e&&typeof e.dispose=="function")try{Promise.resolve(e.dispose()).catch(()=>{})}catch{}throw new w("load","Component loader must return render and optional dispose methods.","$.load",t)}}function Dn(e,t){const n=new AbortController,r=()=>n.abort(e.reason),o=()=>n.abort(t.reason);return e.aborted?r():e.addEventListener("abort",r,{once:!0}),t.aborted?o():t.addEventListener("abort",o,{once:!0}),{signal:n.signal,dispose(){e.removeEventListener("abort",r),t.removeEventListener("abort",o)}}}function kn(e){if(!Array.isArray(e)||e.length>128)throw new w("definition","Register at most 128 component extensions.");const t=new Map,n=new AbortController;let r=!1,o;for(const a of e){const c=$n(a),d=c.metadata.id;if(t.has(d))throw new w("definition","Component extension id is already registered.","$.id",d);t.set(d,c)}function i(a){return Z(r),a.pending||(a.pending=Promise.resolve().then(()=>(Z(r),a.load(n.signal))).then(async c=>(On(c,a.metadata.id),a.renderer=c,r&&(await qe(a),Z(r)),c)).catch(c=>{throw a.pending=void 0,c instanceof w?c:Object.assign(new w("load","Component extension loader failed.","$.load",a.metadata.id),{cause:c})})),a.pending}const l=async a=>{Z(r);const{entry:c,extension:d}=An(t,a.component),m=Dn(a.signal,n.signal);try{const h=await ye.waitForOutput(i(c),m.signal);return await ye.waitForOutput(h.render({...a,signal:m.signal,extension:d}),m.signal)}finally{m.dispose()}},s={assets:Object.freeze({get assetRegistry(){return s}}),describe(a){return Z(r),Object.freeze([...t.values()].map(c=>c.metadata).filter(c=>!a||c.kind===a))},hasExtension(a,c,d){const m=t.get(a)?.metadata;return!r&&m?.version===c&&m.kind===d},rendererFor(a){const c=Object.getOwnPropertyDescriptor(a,"meta")?.value;return c&&Object.prototype.hasOwnProperty.call(c,J)?l:void 0},createComponent(a,c={}){Z(r);const d=t.get(a);if(!d)throw new w("binding","Component extension is not registered in this runtime.","$.id",a);const m=re(ee(c),"$");ue(m,["props","binding"],"$");const h={id:a,version:d.metadata.version,props:ht(d.metadata,m.props),...m.binding===void 0?{}:{binding:m.binding}};return{kind:d.metadata.kind,meta:{[J]:Object.freeze(h)}}},dispose(){return o||(r=!0,n.abort(new w("disposed","Component registry has been disposed.")),o=Promise.allSettled([...t.values()].filter(a=>a.renderer).map(qe)).then(a=>{const c=a.find(d=>d.status==="rejected");if(c?.status==="rejected")throw c.reason}),o)}};return s}function Ln(e){return e.map(t=>t.map(n=>/[\t\r\n"]/.test(n)?`"${n.replace(/"/g,'""')}"`:n).join(" ")).join(`\r
6
+ `)}function In(e,t){const n=e[e.length-1];e.length>1&&n?.length===1&&n[0]===""&&/[\r\n]$/.test(t)&&e.pop()}function Nn(e,t=1e4){if(e.length>4*1024*1024)throw new Error("Clipboard text limit exceeded");const n=[[]];let r="",o=!1,i=!1,l=0;function s(){if(++l>t)throw new Error("Clipboard cell limit exceeded");n[n.length-1].push(r),r="",i=!1}for(let a=0;a<e.length;a++){const c=e[a];if(o){if(c!=='"'){r+=c;continue}if(e[a+1]==='"'){r+='"',a++;continue}o=!1,i=!0;continue}if(c==='"'&&!r&&!i){o=!0;continue}if(c===" "){s();continue}if(c==="\r"||c===`
7
7
  `){s(),n.push([]),c==="\r"&&e[a+1]===`
8
- `&&a++;continue}if(i)throw new Error("Invalid quoted clipboard value");r+=c}if(o)throw new Error("Unclosed clipboard quote");return s(),kn(n,e),n}class dt extends Error{constructor(t,n,r){const o=typeof n.label=="string"?n.label:"单元格",i={definition:`${o}的编辑器配置无效`,type:`${o}的编辑器与数据类型不一致`,required:`${o}不能为空`,min:`${o}不能小于 ${r}`,max:`${o}不能大于 ${r}`,precision:`${o}最多保留 ${r} 位小数`,length:`${o}最多允许 ${r} 个字符`,choice:`${o}请选择有效选项`,date:`${o}请输入有效日期(YYYY-MM-DD)`};super(i[t]),this.code=t,this.field=n,this.expected=r,this.name="ReportCellFieldError"}}function M(e,t,n){throw new dt(t,e,n)}function mt(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e)||e.startsWith("0000-"))return!1;const t=new Date(`${e}T00:00:00.000Z`);return Number.isFinite(t.getTime())&&t.toISOString().slice(0,10)===e}function In(e){const[t="",n="0"]=String(e).toLowerCase().split("e");return Math.max(0,(t.split(".")[1]?.length??0)-Number(n))}function Dn(e,t){e.min!==void 0&&t<e.min&&M(e,"min",e.min),e.max!==void 0&&t>e.max&&M(e,"max",e.max),e.precision!==void 0&&In(t)>e.precision&&M(e,"precision",e.precision)}function Nn(e,t){mt(t)||M(e,"date"),e.min!==void 0&&t<e.min&&M(e,"min",e.min),e.max!==void 0&&t>e.max&&M(e,"max",e.max)}function Fn(e){[e.min,e.max].some(t=>t!==void 0&&!Number.isFinite(t))&&M(e,"definition"),e.min!==void 0&&e.max!==void 0&&e.min>e.max&&M(e,"definition"),e.precision!==void 0&&(!Number.isInteger(e.precision)||e.precision<0||e.precision>15)&&M(e,"definition")}function _n(e){[e.min,e.max].some(t=>t!==void 0&&!mt(t))&&M(e,"definition"),e.min!==void 0&&e.max!==void 0&&e.min>e.max&&M(e,"definition")}function jn(e,t){(!Array.isArray(t.options)||!t.options.length)&&M(t,"definition");const n=e.valueType==="text"?"string":e.valueType,r=new Set;for(const o of t.options)(!o||typeof o.value!==n||typeof o.value=="number"&&!Number.isFinite(o.value))&&M(t,"definition"),o.label!==void 0&&typeof o.label!="string"&&M(t,"definition"),r.has(o.value)&&M(t,"definition"),r.add(o.value)}function zn(e){e.required!==void 0&&typeof e.required!="boolean"&&M(e,"definition"),[e.label,e.hint,e.unit].some(t=>t!==void 0&&typeof t!="string")&&M(e,"definition"),e.type==="boolean"&&[e.trueLabel,e.falseLabel].some(t=>t!==void 0&&typeof t!="string")&&M(e,"definition")}function ht(e,t){(!t||typeof t!="object"||Array.isArray(t)||!["text","number","boolean","enum","date"].includes(t.type))&&M(t??{type:"text"},"definition"),zn(t),(t.type==="number"||t.type==="boolean")&&e.valueType!==t.type&&M(t,"type"),(t.type==="text"||t.type==="date")&&e.valueType!=="text"&&M(t,"type"),t.type==="number"&&Fn(t),t.type==="text"&&t.maxLength!==void 0&&(!Number.isInteger(t.maxLength)||t.maxLength<0)&&M(t,"definition"),t.type==="date"&&_n(t),t.type==="enum"&&jn(e,t)}function Bn(e,t,n){if(!e.editable)throw new w.ReportCellEditError("readonly");n&&ht(e,n);const r=w.parseReportCellInput(e,t);return n?(n.required&&typeof r=="string"&&!r.trim()&&M(n,"required"),r===null||r===""?(n.required&&M(n,"required"),r):(n.type==="number"&&Dn(n,r),n.type==="date"&&Nn(n,r),n.type==="text"&&n.maxLength!==void 0&&[...String(r)].length>n.maxLength&&M(n,"length",n.maxLength),n.type==="enum"&&!n.options.some(o=>Object.is(o.value,r))&&M(n,"choice"),r)):r}class x extends Error{constructor(t){super(`Report calculation: ${t}`),this.code=t,this.name="ReportCalculationError"}}function Z(e){if(!e?.aborted)return;const t=new Error("Calculation cancelled");throw t.name="AbortError",t}async function ce(e,t=1){const n=Math.floor(e.scanned/2048);if(e.scanned+=t,e.scanned>e.maxScanned)throw new x("limit");Z(e.signal),Math.floor(e.scanned/2048)>n&&(await e.yieldToHost(),Z(e.signal))}function Le(e){return e.table?.role==="header"?-Math.max(1,e.grid?.cells.length??1):e.table?.rowIndex??0}function Ve(e,t,n){if(![t.pageIndex,t.componentIndex,t.rowIndex,t.columnIndex].every(s=>Number.isSafeInteger(s)&&s>=0))throw new x("selection");const r=e.pages[t.pageIndex]?.components[t.componentIndex];if(!r?.grid||t.rowIndex>=r.grid.cells.length)throw new x("selection");const o=r.grid.colWidthsMm?.length??r.grid.cells.reduce((s,a)=>Math.max(s,a.length),1);if(t.columnIndex>=o)throw new x("selection");const i=r.table,l=e.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(i&&l&&i.id===l.id){const s=l.columnKeys.indexOf(i.columnKeys[t.columnIndex]??"");if(s<0)throw new x("selection");return{grid:i.id,row:Le(r)+t.rowIndex,column:s}}return{grid:`${t.pageIndex}:${t.componentIndex}`,row:t.rowIndex,column:t.columnIndex}}function Hn(e,t,n){const r=Ve(e,t.anchor,t.anchor),o=Ve(e,t.focus,t.anchor);if(r.grid!==o.grid)throw new x("selection");const i=(Math.abs(r.row-o.row)+1)*(Math.abs(r.column-o.column)+1);if(!Number.isSafeInteger(i)||i>n)throw new x("limit");return{grid:r.grid,rowStart:Math.min(r.row,o.row),rowEnd:Math.max(r.row,o.row),columnStart:Math.min(r.column,o.column),columnEnd:Math.max(r.column,o.column),origin:e.pages[t.anchor.pageIndex].components[t.anchor.componentIndex].table}}function Un(e){if(!e)return!1;const t=e.replace(/"[^"]*"|\\.|\[(?![hms]+\])[^\]]*\]/gi,"");return/[ymdhs]/i.test(t)}function qn(e){if(e.valueType==="text"||e.valueType==="boolean"||Un(e.numberFormat))return null;const t=e.value;if(typeof t!="number"||!Number.isFinite(t))return null;if(Number.isInteger(t)&&!Number.isSafeInteger(t))throw new x("precision");return t}function Vn(e,t,n){if(e.seen.has(n))return;e.seen.add(n),e.selected++;const r=t?qn(t):null;r===null?e.excluded++:e.values.push(r)}function Wn(e,t,n,r){return r.origin?e.table?.id===r.origin.id:`${t}:${n}`===r.grid}function Gn(e,t,n){return n.origin?n.origin.columnKeys.indexOf(e.table.columnKeys[t]??""):t}function Jn(e,t,n,r){const o=r.origin?Le(e)+t:t,i=Gn(e,n,r);return o<r.rowStart||o>r.rowEnd||i<r.columnStart||i>r.columnEnd?null:`${r.grid}:${o}:${i}`}function Kn(e,t){const n=t.origin?Le(e):0,r=Math.max(0,t.rowStart-n),o=Math.min(e.grid.cells.length,t.rowEnd-n+1);return o>r?o:0}async function Yn(e,t,n,r,o){const i=e.grid;if(t>r.maxScanned)throw new x("limit");const l=i.colWidthsMm?.length??i.cells.reduce((a,c)=>Math.max(a,c.length),1);if(l>r.maxScanned)throw new x("limit");const s=new Map;for(let a=0;a<t;a++){a>0&&a%2048===0&&(await r.yieldToHost(),Z(r.signal));let c=0;for(const d of i.cells[a]){for(await ce(r);c<l&&(s.get(c)??0)>a;)c++;if(c>=l)break;const m=Math.max(1,Math.min(d?.colSpan??1,l-c)),h=Math.min(i.cells.length,a+Math.max(1,d?.rowSpan??1));m>1&&await ce(r,m-1);for(let u=c;u<c+m;u++)s.set(u,h);const p=Jn(e,a,c,n);p&&Vn(o,d,p),c+=m}}}async function Xn(e,t,n){const r={values:[],seen:new Set,excluded:0,selected:0};for(let o=0;o<e.pages.length;o++){await ce(n);const i=e.pages[o];for(let l=0;l<i.components.length;l++){await ce(n);const s=i.components[l];if(!s.grid||!Wn(s,o,l,t)||s.table&&s.table.role!=="body")continue;const a=Kn(s,t);a&&await Yn(s,a,t,n,r)}}return r}function te(e){if(!Number.isFinite(e))throw new x("overflow");return e}function Zn(e){let t=0,n=0;for(const r of e){const o=r-n,i=te(t+o);n=i-t-o,t=i}return t}async function We(e,t){let n=[...e],r=new Array(e.length);for(let i=1;i<e.length;i*=2){for(let l=0;l<e.length;l+=i*2){const s=Math.min(l+i,e.length),a=Math.min(l+i*2,e.length);let c=l,d=s;for(let m=l;m<a;m++)r[m]=d>=a||c<s&&n[c]<=n[d]?n[c++]:n[d++],m%2048===0&&(await t.yieldToHost(),Z(t.signal))}[n,r]=[r,n]}const o=Math.floor(n.length/2);return n.length%2?n[o]:te(n[o-1]/2+n[o]/2)}function Qn(e){const t=Zn(e);let n=1/0,r=-1/0;for(const o of e)n=Math.min(n,o),r=Math.max(r,o);return{SUM:t,AVERAGE:t/e.length,AVG:t/e.length,MIN:n,MAX:r,COUNT:e.length}}function gt(e,t){if(typeof e!="string"||e.length>256)throw new x("expression");const n=e.toUpperCase().match(/(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?|[A-Z_]+|[()+\-*/]|\S/g)??[];if(!n.length||n.length>64)throw new x("expression");let r=0;function o(s){if(s>16)throw new x("expression");const a=n[r++];if(a==="+"||a==="-")return(a==="-"?-1:1)*o(s+1);if(a==="("){const c=i(0,s+1);if(n[r++]!==")")throw new x("expression");return c}if(a&&/^(?:SUM|AVERAGE|AVG|MIN|MAX|COUNT|MEDIAN)$/.test(a)&&Object.prototype.hasOwnProperty.call(t,a))return te(t[a]);if(a&&/^(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?$/.test(a))return te(Number(a));throw new x("expression")}function i(s,a){let c=o(a);for(;r<n.length;){const d=n[r],m=d==="+"||d==="-"?1:d==="*"||d==="/"?2:0;if(!m||m<s)break;r++;const h=i(m+1,a+1);if(d==="/"&&h===0)throw new x("division");c=te(d==="+"?c+h:d==="-"?c-h:d==="*"?c*h:c/h)}return c}const l=i(1,0);if(r!==n.length)throw new x("expression");return l}function er(e){const t=e.maxCells??1e5,n=e.maxScannedCells??2e5,r=e.precision??2;if(![t,n].every(o=>Number.isSafeInteger(o)&&o>=1&&o<=2e6))throw new x("limit");if(!Number.isInteger(r)||r<0||r>12)throw new x("precision");return{maxCells:t,maxScanned:n,precision:r}}async function tr(e,t,n={}){const r=er(n),o={scanned:0,maxScanned:r.maxScanned,signal:n.signal,yieldToHost:n.yieldToHost??(()=>new Promise(a=>setTimeout(a,0)))};Z(o.signal);const i=await Xn(e,Hn(e,t,r.maxCells),o),l=n.operation??"sum";if(!["sum","average","min","max","count","median","expression"].includes(l))throw new x("expression");let s=null;if(l==="count")s=i.values.length;else if(i.values.length)if(l==="median")s=await We(i.values,o);else{const a=Qn(i.values);l==="expression"?(/\bMEDIAN\b/i.test(n.expression??"")&&(a.MEDIAN=await We(i.values,o)),s=gt(n.expression??"",a)):s=a[l.toUpperCase()]}if(Z(o.signal),s!==null&&Number.isInteger(s)&&!Number.isSafeInteger(s))throw new x("precision");return{value:s,formatted:s===null?"—":s.toFixed(r.precision),numericCells:i.values.length,excludedCells:i.excluded,selectedCells:i.selected,precision:r.precision}}class I extends Error{constructor(t,n){super(t),this.path=n,this.code="label-sheet",this.name="LabelSheetError"}}function se(e){if(e?.aborted){const t=new Error("标签拼版已取消");throw t.name="AbortError",t}}function J(e,t,n=!1){if(!Number.isFinite(e)||e<=0||n&&!Number.isSafeInteger(e))throw new I("应为正有限数字,数量应为安全整数",t);return e}function Ge(e,t){if(!Number.isFinite(e)||e<0)throw new I("应为非负有限数字",t);return e}function nr(e){const t=typeof e.marginMm=="object"?e.marginMm:{top:e.marginMm??0,left:e.marginMm??0,bottom:e.marginMm??0,right:e.marginMm??0},n=typeof e.gapMm=="object"?e.gapMm:{horizontal:e.gapMm??0,vertical:e.gapMm??0};for(const r of["top","left","bottom","right"])Ge(t?.[r],`$.marginMm.${r}`);for(const r of["horizontal","vertical"])Ge(n?.[r],`$.gapMm.${r}`);return{margin:t,gap:n}}function rr(e){const t=e.paper===void 0||e.paper==="a4"?{widthMm:210,heightMm:297}:e.paper;J(t.widthMm,"$.paper.widthMm"),J(t.heightMm,"$.paper.heightMm");const n=J(e.columns,"$.columns",!0),r=J(e.rows,"$.rows",!0),o=n*r;if(o>1e3)throw new I("每张纸不能超过 1000 个位置","$.columns");const{margin:i,gap:l}=nr(e),s=e.startSlot??0,a=e.offsetMm??{x:0,y:0};if(!Number.isSafeInteger(s)||s<0||s>=o)throw new I("起始位置应在首张纸的有效位置内","$.startSlot");if(!Number.isFinite(a.x)||!Number.isFinite(a.y))throw new I("校准偏移应为有限毫米值","$.offsetMm");return{paper:t,columns:n,rows:r,capacity:o,margin:i,gap:l,startSlot:s,offset:a}}function pt(e){return 1+(e.grid?.cells.reduce((t,n)=>t+n.length+1+n.reduce((r,o)=>r+(o?.children?.reduce((i,l)=>i+pt(l),0)??0),0),0)??0)}function or(e,t,n){if(!v.validateRenderPlan(e).ok)throw new I("标签计划无效","$.plan");const r=e.pages[0];if(!r)return;const{paper:o,columns:i,rows:l,margin:s,gap:a,offset:c}=n;if(s.left+c.x<0||s.top+c.y<0||s.left+c.x+i*r.pageWidthMm+(i-1)*a.horizontal+s.right>o.widthMm+1e-6||s.top+c.y+l*r.pageHeightMm+(l-1)*a.vertical+s.bottom>o.heightMm+1e-6)throw new I("标签、间距、边距及校准偏移超过纸张尺寸;不会自动缩小标签","$.paper");let d=0;for(const[m,h]of e.pages.entries()){if(se(t.signal),h.layout==="wide"||h.pageWidthMm!==r.pageWidthMm||h.pageHeightMm!==r.pageHeightMm)throw new I("拼版需要尺寸相同的固定标签页面",`$.pages.${m}`);if(d+=h.components.reduce((p,u)=>p+pt(u),0),d>J(t.maxComponents??25e4,"$.maxComponents",!0))throw new I("拼版组件总量超过预算","$.maxComponents");for(const p of h.components)if(p.leftMm<0||p.topMm<0||p.leftMm+p.widthMm>h.pageWidthMm+1e-6||p.topMm+p.heightMm>h.pageHeightMm+1e-6)throw new I("标签内容超出标签边界",`$.pages.${m}.components`)}}function ir(e,t){se(t.signal);const n=rr(t),{paper:r,columns:o,capacity:i,margin:l,gap:s,startSlot:a,offset:c}=n,d=e.pages.length?Math.ceil((a+e.pages.length)/i):0;if(d>J(t.maxSheets??1e4,"$.maxSheets",!0))throw new I("拼版纸张数量超过预算","$.maxSheets");J(t.maxComponents??25e4,"$.maxComponents",!0),or(e,t,n);const m=w.snapshotReportJson(e,{maxBytes:J(t.maxSnapshotBytes??64e6,"$.maxSnapshotBytes",!0),check:()=>se(t.signal),error:(p,u)=>new I(u,"$.maxSnapshotBytes")}),h=Array.from({length:d},()=>({pageWidthMm:r.widthMm,pageHeightMm:r.heightMm,components:[],meta:{labelSheet:{columns:o,rows:n.rows,slots:[]}}}));for(const[p,u]of m.pages.entries()){se(t.signal);const P=a+p,R=P%i,y=h[Math.floor(P/i)],T=l.left+c.x+R%o*(u.pageWidthMm+s.horizontal),E=l.top+c.y+Math.floor(R/o)*(u.pageHeightMm+s.vertical),B={sourcePageIndex:p,slotIndex:R,xMm:T,yMm:E,widthMm:u.pageWidthMm,heightMm:u.pageHeightMm,...u.meta?{sourceMeta:u.meta}:{}};y.meta.labelSheet.slots.push(B),y.components.push(...u.components.map(H=>({...H,leftMm:H.leftMm+T,topMm:H.topMm+E,meta:{...H.meta,labelSheet:B}})))}return{...m,pages:h}}exports.CSS_DPI=g.CSS_DPI;exports.DEFAULT_BORDER_PT=g.DEFAULT_BORDER_PT;exports.DEFAULT_FONT_FAMILY=g.DEFAULT_FONT_FAMILY;exports.DEFAULT_FONT_PT=g.DEFAULT_FONT_PT;exports.DEFAULT_STROKE_COLOR=g.DEFAULT_STROKE_COLOR;exports.DEFAULT_TEXT_COLOR=g.DEFAULT_TEXT_COLOR;exports.LINE_HEIGHT=g.LINE_HEIGHT;exports.MM_PER_INCH=g.MM_PER_INCH;exports.PAPER_SIZES=g.PAPER_SIZES;exports.SCHEMA_VERSION_MACH=g.SCHEMA_VERSION_MACH;exports.mergeComponentStyles=g.mergeComponentStyles;exports.mmToPx=g.mmToPx;exports.mmToPxFactor=g.mmToPxFactor;exports.ptToPx=g.ptToPx;exports.pxToMm=g.pxToMm;exports.resolveBoxBorders=g.resolveBoxBorders;exports.resolveFontSize=g.resolveFontSize;exports.resolveLineHeight=g.resolveLineHeight;exports.resolveStroke=g.resolveStroke;exports.resolveTextColor=g.resolveTextColor;exports.round=g.round;exports.ReportBindingError=K.ReportBindingError;exports.evalStyleRule=K.evalStyleRule;exports.formatValue=K.formatValue;exports.parseDateLocal=K.parseDateLocal;exports.resolveComponentBinding=K.resolveComponentBinding;exports.toExcelNumberFormat=K.toExcelNumberFormat;exports.toNumber=K.toNumber;exports.RENDER_PLAN_SCHEMA_VERSION=W.RENDER_PLAN_SCHEMA_VERSION;exports.isImageBackedComponent=W.isImageBackedComponent;exports.isRichText=W.isRichText;exports.REPORT_TEMPLATE_DOCUMENT_VERSION=v.REPORT_TEMPLATE_DOCUMENT_VERSION;exports.ReportTemplateError=v.ReportTemplateError;exports.assertRenderPlan=v.assertRenderPlan;exports.createTemplateRegistry=v.createTemplateRegistry;exports.defineReportTemplate=v.defineReportTemplate;exports.parseReportTemplate=v.parseReportTemplate;exports.serializeReportTemplate=v.serializeReportTemplate;exports.validateComponent=v.validateComponent;exports.validatePage=v.validatePage;exports.validateRenderPlan=v.validateRenderPlan;exports.validateReportTemplate=v.validateReportTemplate;exports.validateReportTemplateDocument=v.validateReportTemplateDocument;exports.datasetJsonSchema=Ee.datasetJsonSchema;exports.validateDatasetRows=Ee.validateDatasetRows;exports.charWidthEm=z.charWidthEm;exports.createCanvasMeasurer=z.createCanvasMeasurer;exports.createHeuristicMeasurer=z.createHeuristicMeasurer;exports.heuristicMeasurer=z.heuristicMeasurer;exports.measureTextMm=z.measureTextMm;exports.wrapText=z.wrapText;exports.DEFAULT_LABEL_PAGE_LIMIT=w.DEFAULT_LABEL_PAGE_LIMIT;exports.PaginateCellLimitError=w.PaginateCellLimitError;exports.PaginatePageLimitError=w.PaginatePageLimitError;exports.ReportCellEditError=w.ReportCellEditError;exports.ReportSourceError=w.ReportSourceError;exports.applyReportCellEdit=w.applyReportCellEdit;exports.applyReportCellEditBatch=w.applyReportCellEditBatch;exports.applyReportEditResult=w.applyReportEditResult;exports.applyReportSourceMetadata=w.applyReportSourceMetadata;exports.countTemplatePages=w.countTemplatePages;exports.createReportCellEdit=w.createReportCellEdit;exports.createReportCellEditBatch=w.createReportCellEditBatch;exports.createReportCellResolver=w.createReportCellResolver;exports.createReportEditSession=w.createReportEditSession;exports.createReportSource=w.createReportSource;exports.defineReport=w.defineReport;exports.estimateListLayoutCells=w.estimateListLayoutCells;exports.explainDatasetField=w.explainDatasetField;exports.formatReportCellEdit=w.formatReportCellEdit;exports.getReportCellContext=w.getReportCellContext;exports.getReportEditSession=w.getReportEditSession;exports.hasValidDataExplanation=w.hasValidDataExplanation;exports.isReportDataTarget=w.isReportDataTarget;exports.isReportValueState=w.isReportValueState;exports.paginateTemplate=w.paginateTemplate;exports.paginateTemplatePages=w.paginateTemplatePages;exports.parseReportCellInput=w.parseReportCellInput;exports.projectListColumns=w.projectListColumns;exports.registerReportEditSession=w.registerReportEditSession;exports.relocateReportCellEdits=w.relocateReportCellEdits;exports.reportCellEditKey=w.reportCellEditKey;exports.summarizeReportCellEdits=w.summarizeReportCellEdits;exports.resolveGridLayout=de.resolveGridLayout;exports.OutputAssetError=k.OutputAssetError;exports.OutputFidelityError=k.OutputFidelityError;exports.inspectOutputCapabilities=k.inspectOutputCapabilities;exports.reportOutputDiagnostics=k.reportOutputDiagnostics;exports.resolvePlanAssets=k.resolvePlanAssets;exports.ReportDrillError=Q.ReportDrillError;exports.createReportDrillRequest=Q.createReportDrillRequest;exports.matchReportDrillActions=Q.matchReportDrillActions;exports.resolveReportDrillReturn=Q.resolveReportDrillReturn;exports.validateReportDrillActions=Q.validateReportDrillActions;exports.ReportParamValidationError=q.ReportParamValidationError;exports.assertReportParams=q.assertReportParams;exports.formatReportDateRange=q.formatReportDateRange;exports.isReportDate=q.isReportDate;exports.isReportMonth=q.isReportMonth;exports.isReportYear=q.isReportYear;exports.parseReportDateRange=q.parseReportDateRange;exports.reportParamsJsonSchema=q.reportParamsJsonSchema;exports.validateReportParamDefinitions=q.validateReportParamDefinitions;exports.validateReportParams=q.validateReportParams;exports.cloneReportTemplate=ne.cloneReportTemplate;exports.createLocalTemplateCatalog=ne.createLocalTemplateCatalog;exports.diffReportTemplates=ne.diffReportTemplates;exports.reviewReportTemplate=ne.reviewReportTemplate;exports.reviewReportTemplateAsync=ne.reviewReportTemplateAsync;exports.collectTemplateOutline=xe.collectTemplateOutline;exports.inspectTemplateFieldUsage=xe.inspectTemplateFieldUsage;exports.templatePathLocation=xe.templatePathLocation;exports.applyReportDocumentStyle=he.applyReportDocumentStyle;exports.captureTemplateFragment=he.captureTemplateFragment;exports.insertTemplateFragment=he.insertTemplateFragment;exports.inspectTemplateFragmentBindings=he.inspectTemplateFragmentBindings;exports.TreeRowLimitError=Te.TreeRowLimitError;exports.createTreeTable=Te.createTreeTable;exports.validateTreeOptions=Te.validateTreeOptions;exports.LabelSheetError=I;exports.PageBuilder=at;exports.ReportCalculationError=x;exports.ReportCellFieldError=dt;exports.ReportComponentExtensionError=f;exports.ReportTemplateMigrationError=j;exports.ReportTemplateStoreError=F;exports.TemplateBuilder=it;exports.calculateReportSelection=tr;exports.classOf=$;exports.columnsFromContract=nn;exports.computePageWindow=et;exports.createCanvasPager=en;exports.createLabelTemplate=hn;exports.createMemoryTemplateStore=bn;exports.createPageViewportRenderer=Nt;exports.createProviderReport=un;exports.createReportComponentRegistry=$n;exports.createTableTemplate=mn;exports.createTemplate=tn;exports.createTemplateManager=wn;exports.createTemplateMigrator=st;exports.defineLabelReport=pn;exports.evaluateReportAggregateExpression=gt;exports.formatReportClipboard=On;exports.imposeLabelSheets=ir;exports.measurePageSizePx=ge;exports.parseReportCellFieldInput=Bn;exports.parseReportClipboard=Ln;exports.planFontSizePx=Ut;exports.renderComponent=Se;exports.renderPage=Re;exports.renderPlan=Dt;exports.renderPlanToCanvas=Xt;exports.renderPlanToCanvasAsync=Qt;exports.renderPlanToImages=Kt;exports.resolvePaper=$e;exports.validateReportCellFieldDefinition=ht;
8
+ `&&a++;continue}if(i)throw new Error("Invalid quoted clipboard value");r+=c}if(o)throw new Error("Unclosed clipboard quote");return s(),In(n,e),n}class pt extends Error{constructor(t,n,r){const o=typeof n.label=="string"?n.label:"单元格",i={definition:`${o}的编辑器配置无效`,type:`${o}的编辑器与数据类型不一致`,required:`${o}不能为空`,min:`${o}不能小于 ${r}`,max:`${o}不能大于 ${r}`,precision:`${o}最多保留 ${r} 位小数`,length:`${o}最多允许 ${r} 个字符`,choice:`${o}请选择有效选项`,date:`${o}请输入有效日期(YYYY-MM-DD)`};super(i[t]),this.code=t,this.field=n,this.expected=r,this.name="ReportCellFieldError"}}function v(e,t,n){throw new pt(t,e,n)}function gt(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e)||e.startsWith("0000-"))return!1;const t=new Date(`${e}T00:00:00.000Z`);return Number.isFinite(t.getTime())&&t.toISOString().slice(0,10)===e}function Fn(e){const[t="",n="0"]=String(e).toLowerCase().split("e");return Math.max(0,(t.split(".")[1]?.length??0)-Number(n))}function _n(e,t){e.min!==void 0&&t<e.min&&v(e,"min",e.min),e.max!==void 0&&t>e.max&&v(e,"max",e.max),e.precision!==void 0&&Fn(t)>e.precision&&v(e,"precision",e.precision)}function jn(e,t){gt(t)||v(e,"date"),e.min!==void 0&&t<e.min&&v(e,"min",e.min),e.max!==void 0&&t>e.max&&v(e,"max",e.max)}function zn(e){[e.min,e.max].some(t=>t!==void 0&&!Number.isFinite(t))&&v(e,"definition"),e.min!==void 0&&e.max!==void 0&&e.min>e.max&&v(e,"definition"),e.precision!==void 0&&(!Number.isInteger(e.precision)||e.precision<0||e.precision>15)&&v(e,"definition")}function Bn(e){[e.min,e.max].some(t=>t!==void 0&&!gt(t))&&v(e,"definition"),e.min!==void 0&&e.max!==void 0&&e.min>e.max&&v(e,"definition")}function Hn(e,t){(!Array.isArray(t.options)||!t.options.length)&&v(t,"definition");const n=e.valueType==="text"?"string":e.valueType,r=new Set;for(const o of t.options)(!o||typeof o.value!==n||typeof o.value=="number"&&!Number.isFinite(o.value))&&v(t,"definition"),o.label!==void 0&&typeof o.label!="string"&&v(t,"definition"),r.has(o.value)&&v(t,"definition"),r.add(o.value)}function Un(e){e.required!==void 0&&typeof e.required!="boolean"&&v(e,"definition"),[e.label,e.hint,e.unit].some(t=>t!==void 0&&typeof t!="string")&&v(e,"definition"),e.type==="boolean"&&[e.trueLabel,e.falseLabel].some(t=>t!==void 0&&typeof t!="string")&&v(e,"definition")}function ut(e,t){(!t||typeof t!="object"||Array.isArray(t)||!["text","number","boolean","enum","date"].includes(t.type))&&v(t??{type:"text"},"definition"),Un(t),(t.type==="number"||t.type==="boolean")&&e.valueType!==t.type&&v(t,"type"),(t.type==="text"||t.type==="date")&&e.valueType!=="text"&&v(t,"type"),t.type==="number"&&zn(t),t.type==="text"&&t.maxLength!==void 0&&(!Number.isInteger(t.maxLength)||t.maxLength<0)&&v(t,"definition"),t.type==="date"&&Bn(t),t.type==="enum"&&Hn(e,t)}function Vn(e,t,n){if(!e.editable)throw new f.ReportCellEditError("readonly");n&&ut(e,n);const r=f.parseReportCellInput(e,t);return n?(n.required&&typeof r=="string"&&!r.trim()&&v(n,"required"),r===null||r===""?(n.required&&v(n,"required"),r):(n.type==="number"&&_n(n,r),n.type==="date"&&jn(n,r),n.type==="text"&&n.maxLength!==void 0&&[...String(r)].length>n.maxLength&&v(n,"length",n.maxLength),n.type==="enum"&&!n.options.some(o=>Object.is(o.value,r))&&v(n,"choice"),r)):r}class T extends Error{constructor(t){super(`Report calculation: ${t}`),this.code=t,this.name="ReportCalculationError"}}function Q(e){if(!e?.aborted)return;const t=new Error("Calculation cancelled");throw t.name="AbortError",t}async function ce(e,t=1){const n=Math.floor(e.scanned/2048);if(e.scanned+=t,e.scanned>e.maxScanned)throw new T("limit");Q(e.signal),Math.floor(e.scanned/2048)>n&&(await e.yieldToHost(),Q(e.signal))}function Le(e){return e.table?.role==="header"?-Math.max(1,e.grid?.cells.length??1):e.table?.rowIndex??0}function We(e,t,n){if(![t.pageIndex,t.componentIndex,t.rowIndex,t.columnIndex].every(s=>Number.isSafeInteger(s)&&s>=0))throw new T("selection");const r=e.pages[t.pageIndex]?.components[t.componentIndex];if(!r?.grid||t.rowIndex>=r.grid.cells.length)throw new T("selection");const o=r.grid.colWidthsMm?.length??r.grid.cells.reduce((s,a)=>Math.max(s,a.length),1);if(t.columnIndex>=o)throw new T("selection");const i=r.table,l=e.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(i&&l&&i.id===l.id){const s=l.columnKeys.indexOf(i.columnKeys[t.columnIndex]??"");if(s<0)throw new T("selection");return{grid:i.id,row:Le(r)+t.rowIndex,column:s}}return{grid:`${t.pageIndex}:${t.componentIndex}`,row:t.rowIndex,column:t.columnIndex}}function qn(e,t,n){const r=We(e,t.anchor,t.anchor),o=We(e,t.focus,t.anchor);if(r.grid!==o.grid)throw new T("selection");const i=(Math.abs(r.row-o.row)+1)*(Math.abs(r.column-o.column)+1);if(!Number.isSafeInteger(i)||i>n)throw new T("limit");return{grid:r.grid,rowStart:Math.min(r.row,o.row),rowEnd:Math.max(r.row,o.row),columnStart:Math.min(r.column,o.column),columnEnd:Math.max(r.column,o.column),origin:e.pages[t.anchor.pageIndex].components[t.anchor.componentIndex].table}}function Wn(e){if(!e)return!1;const t=e.replace(/"[^"]*"|\\.|\[(?![hms]+\])[^\]]*\]/gi,"");return/[ymdhs]/i.test(t)}function Gn(e){if(e.valueType==="text"||e.valueType==="boolean"||Wn(e.numberFormat))return null;const t=e.value;if(typeof t!="number"||!Number.isFinite(t))return null;if(Number.isInteger(t)&&!Number.isSafeInteger(t))throw new T("precision");return t}function Jn(e,t,n){if(e.seen.has(n))return;e.seen.add(n),e.selected++;const r=t?Gn(t):null;r===null?e.excluded++:e.values.push(r)}function Yn(e,t,n,r){return r.origin?e.table?.id===r.origin.id:`${t}:${n}`===r.grid}function Kn(e,t,n){return n.origin?n.origin.columnKeys.indexOf(e.table.columnKeys[t]??""):t}function Xn(e,t,n,r){const o=r.origin?Le(e)+t:t,i=Kn(e,n,r);return o<r.rowStart||o>r.rowEnd||i<r.columnStart||i>r.columnEnd?null:`${r.grid}:${o}:${i}`}function Zn(e,t){const n=t.origin?Le(e):0,r=Math.max(0,t.rowStart-n),o=Math.min(e.grid.cells.length,t.rowEnd-n+1);return o>r?o:0}async function Qn(e,t,n,r,o){const i=e.grid;if(t>r.maxScanned)throw new T("limit");const l=i.colWidthsMm?.length??i.cells.reduce((a,c)=>Math.max(a,c.length),1);if(l>r.maxScanned)throw new T("limit");const s=new Map;for(let a=0;a<t;a++){a>0&&a%2048===0&&(await r.yieldToHost(),Q(r.signal));let c=0;for(const d of i.cells[a]){for(await ce(r);c<l&&(s.get(c)??0)>a;)c++;if(c>=l)break;const m=Math.max(1,Math.min(d?.colSpan??1,l-c)),h=Math.min(i.cells.length,a+Math.max(1,d?.rowSpan??1));m>1&&await ce(r,m-1);for(let u=c;u<c+m;u++)s.set(u,h);const g=Xn(e,a,c,n);g&&Jn(o,d,g),c+=m}}}async function er(e,t,n){const r={values:[],seen:new Set,excluded:0,selected:0};for(let o=0;o<e.pages.length;o++){await ce(n);const i=e.pages[o];for(let l=0;l<i.components.length;l++){await ce(n);const s=i.components[l];if(!s.grid||!Yn(s,o,l,t)||s.table&&s.table.role!=="body")continue;const a=Zn(s,t);a&&await Qn(s,a,t,n,r)}}return r}function te(e){if(!Number.isFinite(e))throw new T("overflow");return e}function tr(e){let t=0,n=0;for(const r of e){const o=r-n,i=te(t+o);n=i-t-o,t=i}return t}async function Ge(e,t){let n=[...e],r=new Array(e.length);for(let i=1;i<e.length;i*=2){for(let l=0;l<e.length;l+=i*2){const s=Math.min(l+i,e.length),a=Math.min(l+i*2,e.length);let c=l,d=s;for(let m=l;m<a;m++)r[m]=d>=a||c<s&&n[c]<=n[d]?n[c++]:n[d++],m%2048===0&&(await t.yieldToHost(),Q(t.signal))}[n,r]=[r,n]}const o=Math.floor(n.length/2);return n.length%2?n[o]:te(n[o-1]/2+n[o]/2)}function nr(e){const t=tr(e);let n=1/0,r=-1/0;for(const o of e)n=Math.min(n,o),r=Math.max(r,o);return{SUM:t,AVERAGE:t/e.length,AVG:t/e.length,MIN:n,MAX:r,COUNT:e.length}}function ft(e,t){if(typeof e!="string"||e.length>256)throw new T("expression");const n=e.toUpperCase().match(/(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?|[A-Z_]+|[()+\-*/]|\S/g)??[];if(!n.length||n.length>64)throw new T("expression");let r=0;function o(s){if(s>16)throw new T("expression");const a=n[r++];if(a==="+"||a==="-")return(a==="-"?-1:1)*o(s+1);if(a==="("){const c=i(0,s+1);if(n[r++]!==")")throw new T("expression");return c}if(a&&/^(?:SUM|AVERAGE|AVG|MIN|MAX|COUNT|MEDIAN)$/.test(a)&&Object.prototype.hasOwnProperty.call(t,a))return te(t[a]);if(a&&/^(?:\d+(?:\.\d*)?|\.\d+)(?:E[+-]?\d+)?$/.test(a))return te(Number(a));throw new T("expression")}function i(s,a){let c=o(a);for(;r<n.length;){const d=n[r],m=d==="+"||d==="-"?1:d==="*"||d==="/"?2:0;if(!m||m<s)break;r++;const h=i(m+1,a+1);if(d==="/"&&h===0)throw new T("division");c=te(d==="+"?c+h:d==="-"?c-h:d==="*"?c*h:c/h)}return c}const l=i(1,0);if(r!==n.length)throw new T("expression");return l}function rr(e){const t=e.maxCells??1e5,n=e.maxScannedCells??2e5,r=e.precision??2;if(![t,n].every(o=>Number.isSafeInteger(o)&&o>=1&&o<=2e6))throw new T("limit");if(!Number.isInteger(r)||r<0||r>12)throw new T("precision");return{maxCells:t,maxScanned:n,precision:r}}async function or(e,t,n={}){const r=rr(n),o={scanned:0,maxScanned:r.maxScanned,signal:n.signal,yieldToHost:n.yieldToHost??(()=>new Promise(a=>setTimeout(a,0)))};Q(o.signal);const i=await er(e,qn(e,t,r.maxCells),o),l=n.operation??"sum";if(!["sum","average","min","max","count","median","expression"].includes(l))throw new T("expression");let s=null;if(l==="count")s=i.values.length;else if(i.values.length)if(l==="median")s=await Ge(i.values,o);else{const a=nr(i.values);l==="expression"?(/\bMEDIAN\b/i.test(n.expression??"")&&(a.MEDIAN=await Ge(i.values,o)),s=ft(n.expression??"",a)):s=a[l.toUpperCase()]}if(Q(o.signal),s!==null&&Number.isInteger(s)&&!Number.isSafeInteger(s))throw new T("precision");return{value:s,formatted:s===null?"—":s.toFixed(r.precision),numericCells:i.values.length,excludedCells:i.excluded,selectedCells:i.selected,precision:r.precision}}class I extends Error{constructor(t,n){super(t),this.path=n,this.code="label-sheet",this.name="LabelSheetError"}}function se(e){if(e?.aborted){const t=new Error("标签拼版已取消");throw t.name="AbortError",t}}function Y(e,t,n=!1){if(!Number.isFinite(e)||e<=0||n&&!Number.isSafeInteger(e))throw new I("应为正有限数字,数量应为安全整数",t);return e}function Je(e,t){if(!Number.isFinite(e)||e<0)throw new I("应为非负有限数字",t);return e}function ir(e){const t=typeof e.marginMm=="object"?e.marginMm:{top:e.marginMm??0,left:e.marginMm??0,bottom:e.marginMm??0,right:e.marginMm??0},n=typeof e.gapMm=="object"?e.gapMm:{horizontal:e.gapMm??0,vertical:e.gapMm??0};for(const r of["top","left","bottom","right"])Je(t?.[r],`$.marginMm.${r}`);for(const r of["horizontal","vertical"])Je(n?.[r],`$.gapMm.${r}`);return{margin:t,gap:n}}function ar(e){const t=e.paper===void 0||e.paper==="a4"?{widthMm:210,heightMm:297}:e.paper;Y(t.widthMm,"$.paper.widthMm"),Y(t.heightMm,"$.paper.heightMm");const n=Y(e.columns,"$.columns",!0),r=Y(e.rows,"$.rows",!0),o=n*r;if(o>1e3)throw new I("每张纸不能超过 1000 个位置","$.columns");const{margin:i,gap:l}=ir(e),s=e.startSlot??0,a=e.offsetMm??{x:0,y:0};if(!Number.isSafeInteger(s)||s<0||s>=o)throw new I("起始位置应在首张纸的有效位置内","$.startSlot");if(!Number.isFinite(a.x)||!Number.isFinite(a.y))throw new I("校准偏移应为有限毫米值","$.offsetMm");return{paper:t,columns:n,rows:r,capacity:o,margin:i,gap:l,startSlot:s,offset:a}}function wt(e){return 1+(e.grid?.cells.reduce((t,n)=>t+n.length+1+n.reduce((r,o)=>r+(o?.children?.reduce((i,l)=>i+wt(l),0)??0),0),0)??0)}function sr(e,t,n){if(!R.validateRenderPlan(e).ok)throw new I("标签计划无效","$.plan");const r=e.pages[0];if(!r)return;const{paper:o,columns:i,rows:l,margin:s,gap:a,offset:c}=n;if(s.left+c.x<0||s.top+c.y<0||s.left+c.x+i*r.pageWidthMm+(i-1)*a.horizontal+s.right>o.widthMm+1e-6||s.top+c.y+l*r.pageHeightMm+(l-1)*a.vertical+s.bottom>o.heightMm+1e-6)throw new I("标签、间距、边距及校准偏移超过纸张尺寸;不会自动缩小标签","$.paper");let d=0;for(const[m,h]of e.pages.entries()){if(se(t.signal),h.layout==="wide"||h.pageWidthMm!==r.pageWidthMm||h.pageHeightMm!==r.pageHeightMm)throw new I("拼版需要尺寸相同的固定标签页面",`$.pages.${m}`);if(d+=h.components.reduce((g,u)=>g+wt(u),0),d>Y(t.maxComponents??25e4,"$.maxComponents",!0))throw new I("拼版组件总量超过预算","$.maxComponents");for(const g of h.components)if(g.leftMm<0||g.topMm<0||g.leftMm+g.widthMm>h.pageWidthMm+1e-6||g.topMm+g.heightMm>h.pageHeightMm+1e-6)throw new I("标签内容超出标签边界",`$.pages.${m}.components`)}}function lr(e,t){se(t.signal);const n=ar(t),{paper:r,columns:o,capacity:i,margin:l,gap:s,startSlot:a,offset:c}=n,d=e.pages.length?Math.ceil((a+e.pages.length)/i):0;if(d>Y(t.maxSheets??1e4,"$.maxSheets",!0))throw new I("拼版纸张数量超过预算","$.maxSheets");Y(t.maxComponents??25e4,"$.maxComponents",!0),sr(e,t,n);const m=f.snapshotReportJson(e,{maxBytes:Y(t.maxSnapshotBytes??64e6,"$.maxSnapshotBytes",!0),check:()=>se(t.signal),error:(g,u)=>new I(u,"$.maxSnapshotBytes")}),h=Array.from({length:d},()=>({pageWidthMm:r.widthMm,pageHeightMm:r.heightMm,components:[],meta:{labelSheet:{columns:o,rows:n.rows,slots:[]}}}));for(const[g,u]of m.pages.entries()){se(t.signal);const P=a+g,S=P%i,M=h[Math.floor(P/i)],E=l.left+c.x+S%o*(u.pageWidthMm+s.horizontal),y=l.top+c.y+Math.floor(S/o)*(u.pageHeightMm+s.vertical),U={sourcePageIndex:g,slotIndex:S,xMm:E,yMm:y,widthMm:u.pageWidthMm,heightMm:u.pageHeightMm,...u.meta?{sourceMeta:u.meta}:{}};M.meta.labelSheet.slots.push(U),M.components.push(...u.components.map(V=>({...V,leftMm:V.leftMm+E,topMm:V.topMm+y,meta:{...V.meta,labelSheet:U}})))}return{...m,pages:h}}function cr(e){if(!e||!["today","yesterday","month-start","month-end"].includes(e.preset))throw new TypeError("未知日期默认值");const t=e.now instanceof Date?e.now.getTime():e.now;if(typeof t!="number"||!Number.isFinite(t)||!Number.isFinite(new Date(t).getTime()))throw new TypeError("日期默认值需要有效的业务时钟");if(typeof e.timeZone!="string"||!e.timeZone.trim())throw new TypeError("日期默认值需要显式业务时区");if(e.offsetDays!==void 0&&(!Number.isSafeInteger(e.offsetDays)||Math.abs(e.offsetDays)>3660))throw new RangeError("日期偏移应为 -3660 到 3660 的整数");const n=new Intl.DateTimeFormat("en-CA",{timeZone:e.timeZone,year:"numeric",month:"2-digit",day:"2-digit",calendar:"iso8601",numberingSystem:"latn"}).formatToParts(t),r=i=>Number(n.find(l=>l.type===i)?.value),o=new Date(0);if(o.setUTCFullYear(r("year"),r("month")-1,r("day")),o.setUTCHours(0,0,0,0),e.preset==="yesterday"&&o.setUTCDate(o.getUTCDate()-1),e.preset==="month-start"&&o.setUTCDate(1),e.preset==="month-end"&&o.setUTCMonth(o.getUTCMonth()+1,0),o.setUTCDate(o.getUTCDate()+(e.offsetDays??0)),o.getUTCFullYear()<1||o.getUTCFullYear()>9999)throw new RangeError("业务日期超出 0001–9999 范围");return o.toISOString().slice(0,10)}exports.CSS_DPI=p.CSS_DPI;exports.DEFAULT_BORDER_PT=p.DEFAULT_BORDER_PT;exports.DEFAULT_FONT_FAMILY=p.DEFAULT_FONT_FAMILY;exports.DEFAULT_FONT_PT=p.DEFAULT_FONT_PT;exports.DEFAULT_STROKE_COLOR=p.DEFAULT_STROKE_COLOR;exports.DEFAULT_TEXT_COLOR=p.DEFAULT_TEXT_COLOR;exports.LINE_HEIGHT=p.LINE_HEIGHT;exports.MM_PER_INCH=p.MM_PER_INCH;exports.PAPER_SIZES=p.PAPER_SIZES;exports.SCHEMA_VERSION_MACH=p.SCHEMA_VERSION_MACH;exports.mergeComponentStyles=p.mergeComponentStyles;exports.mmToPx=p.mmToPx;exports.mmToPxFactor=p.mmToPxFactor;exports.ptToPx=p.ptToPx;exports.pxToMm=p.pxToMm;exports.resolveBoxBorders=p.resolveBoxBorders;exports.resolveFontSize=p.resolveFontSize;exports.resolveLineHeight=p.resolveLineHeight;exports.resolveStroke=p.resolveStroke;exports.resolveTextColor=p.resolveTextColor;exports.round=p.round;exports.ReportBindingError=K.ReportBindingError;exports.evalStyleRule=K.evalStyleRule;exports.formatValue=K.formatValue;exports.parseDateLocal=K.parseDateLocal;exports.resolveComponentBinding=K.resolveComponentBinding;exports.toExcelNumberFormat=K.toExcelNumberFormat;exports.toNumber=K.toNumber;exports.RENDER_PLAN_SCHEMA_VERSION=G.RENDER_PLAN_SCHEMA_VERSION;exports.isImageBackedComponent=G.isImageBackedComponent;exports.isRichText=G.isRichText;exports.REPORT_TEMPLATE_DOCUMENT_VERSION=R.REPORT_TEMPLATE_DOCUMENT_VERSION;exports.ReportTemplateError=R.ReportTemplateError;exports.assertRenderPlan=R.assertRenderPlan;exports.createTemplateRegistry=R.createTemplateRegistry;exports.defineReportTemplate=R.defineReportTemplate;exports.parseReportTemplate=R.parseReportTemplate;exports.serializeReportTemplate=R.serializeReportTemplate;exports.validateComponent=R.validateComponent;exports.validatePage=R.validatePage;exports.validateRenderPlan=R.validateRenderPlan;exports.validateReportTemplate=R.validateReportTemplate;exports.validateReportTemplateDocument=R.validateReportTemplateDocument;exports.datasetJsonSchema=Ee.datasetJsonSchema;exports.validateDatasetRows=Ee.validateDatasetRows;exports.charWidthEm=B.charWidthEm;exports.createCanvasMeasurer=B.createCanvasMeasurer;exports.createHeuristicMeasurer=B.createHeuristicMeasurer;exports.heuristicMeasurer=B.heuristicMeasurer;exports.measureTextMm=B.measureTextMm;exports.wrapText=B.wrapText;exports.DEFAULT_LABEL_PAGE_LIMIT=f.DEFAULT_LABEL_PAGE_LIMIT;exports.PaginateCellLimitError=f.PaginateCellLimitError;exports.PaginateChartComponentLimitError=f.PaginateChartComponentLimitError;exports.PaginatePageLimitError=f.PaginatePageLimitError;exports.ReportCellEditError=f.ReportCellEditError;exports.ReportSourceError=f.ReportSourceError;exports.ReportValidationError=f.ReportValidationError;exports.applyReportCellEdit=f.applyReportCellEdit;exports.applyReportCellEditBatch=f.applyReportCellEditBatch;exports.applyReportEditResult=f.applyReportEditResult;exports.applyReportSourceMetadata=f.applyReportSourceMetadata;exports.assertReportValidation=f.assertReportValidation;exports.countTemplatePages=f.countTemplatePages;exports.createReportCellEdit=f.createReportCellEdit;exports.createReportCellEditBatch=f.createReportCellEditBatch;exports.createReportCellResolver=f.createReportCellResolver;exports.createReportEditSession=f.createReportEditSession;exports.createReportSource=f.createReportSource;exports.defineReport=f.defineReport;exports.estimateListLayoutCells=f.estimateListLayoutCells;exports.explainDatasetField=f.explainDatasetField;exports.formatReportCellEdit=f.formatReportCellEdit;exports.getReportCellContext=f.getReportCellContext;exports.getReportEditSession=f.getReportEditSession;exports.hasValidDataExplanation=f.hasValidDataExplanation;exports.isReportDataTarget=f.isReportDataTarget;exports.isReportValueState=f.isReportValueState;exports.paginateTemplate=f.paginateTemplate;exports.paginateTemplatePages=f.paginateTemplatePages;exports.parseReportCellInput=f.parseReportCellInput;exports.projectListColumns=f.projectListColumns;exports.registerReportEditSession=f.registerReportEditSession;exports.relocateReportCellEdits=f.relocateReportCellEdits;exports.reportCellEditKey=f.reportCellEditKey;exports.summarizeReportCellEdits=f.summarizeReportCellEdits;exports.validateReportDataset=f.validateReportDataset;exports.resolveGridLayout=de.resolveGridLayout;exports.OutputAssetError=D.OutputAssetError;exports.OutputFidelityError=D.OutputFidelityError;exports.inspectOutputCapabilities=D.inspectOutputCapabilities;exports.reportOutputDiagnostics=D.reportOutputDiagnostics;exports.resolvePlanAssets=D.resolvePlanAssets;exports.ReportDataError=H.ReportDataError;exports.ReportDrillError=H.ReportDrillError;exports.compareReportData=H.compareReportData;exports.createReportDrillRequest=H.createReportDrillRequest;exports.createReportPrefill=H.createReportPrefill;exports.matchReportDrillActions=H.matchReportDrillActions;exports.reportDataSnapshotFromPlan=H.reportDataSnapshotFromPlan;exports.reportPrefillInputs=H.reportPrefillInputs;exports.resolveReportDrillReturn=H.resolveReportDrillReturn;exports.validateReportDrillActions=H.validateReportDrillActions;exports.ReportParamValidationError=k.ReportParamValidationError;exports.assertReportParams=k.assertReportParams;exports.formatReportCascaderPath=k.formatReportCascaderPath;exports.formatReportDateRange=k.formatReportDateRange;exports.formatReportNumberRange=k.formatReportNumberRange;exports.formatReportParamSelection=k.formatReportParamSelection;exports.isReportDate=k.isReportDate;exports.isReportMonth=k.isReportMonth;exports.isReportYear=k.isReportYear;exports.parseReportCascaderPath=k.parseReportCascaderPath;exports.parseReportDateRange=k.parseReportDateRange;exports.parseReportNumberRange=k.parseReportNumberRange;exports.parseReportParamSelection=k.parseReportParamSelection;exports.reportParamsJsonSchema=k.reportParamsJsonSchema;exports.validateReportParamDefinitions=k.validateReportParamDefinitions;exports.validateReportParams=k.validateReportParams;exports.createReportChartData=Ke.createReportChartData;exports.validateReportChartBinding=Ke.validateReportChartBinding;exports.compileReportPredicate=Re.compileReportPredicate;exports.evaluateReportPredicate=Re.evaluateReportPredicate;exports.reportPredicateFields=Re.reportPredicateFields;exports.cloneReportTemplate=ne.cloneReportTemplate;exports.createLocalTemplateCatalog=ne.createLocalTemplateCatalog;exports.diffReportTemplates=ne.diffReportTemplates;exports.reviewReportTemplate=ne.reviewReportTemplate;exports.reviewReportTemplateAsync=ne.reviewReportTemplateAsync;exports.collectTemplateOutline=Te.collectTemplateOutline;exports.inspectTemplateFieldUsage=Te.inspectTemplateFieldUsage;exports.templatePathLocation=Te.templatePathLocation;exports.applyReportDocumentStyle=he.applyReportDocumentStyle;exports.captureTemplateFragment=he.captureTemplateFragment;exports.insertTemplateFragment=he.insertTemplateFragment;exports.inspectTemplateFragmentBindings=he.inspectTemplateFragmentBindings;exports.TreeRowLimitError=xe.TreeRowLimitError;exports.createTreeTable=xe.createTreeTable;exports.validateTreeOptions=xe.validateTreeOptions;exports.LabelSheetError=I;exports.PageBuilder=ct;exports.ReportCalculationError=T;exports.ReportCellFieldError=pt;exports.ReportComponentExtensionError=w;exports.ReportTemplateMigrationError=z;exports.ReportTemplateStoreError=_;exports.TemplateBuilder=lt;exports.calculateReportSelection=or;exports.classOf=$;exports.columnsFromContract=an;exports.computePageWindow=rt;exports.createCanvasPager=rn;exports.createLabelTemplate=un;exports.createMemoryTemplateStore=vn;exports.createPageViewportRenderer=jt;exports.createProviderReport=bn;exports.createReportComponentRegistry=kn;exports.createTableTemplate=gn;exports.createTemplate=on;exports.createTemplateManager=Mn;exports.createTemplateMigrator=dt;exports.defineLabelReport=wn;exports.evaluateReportAggregateExpression=ft;exports.formatReportClipboard=Ln;exports.imposeLabelSheets=lr;exports.measurePageSizePx=pe;exports.parseReportCellFieldInput=Vn;exports.parseReportClipboard=Nn;exports.planFontSizePx=Wt;exports.renderComponent=Se;exports.renderPage=Ce;exports.renderPlan=_t;exports.renderPlanToCanvas=en;exports.renderPlanToCanvasAsync=nn;exports.renderPlanToImages=Zt;exports.reportDateDefault=cr;exports.resolvePaper=Oe;exports.validateReportCellFieldDefinition=ut;