@agile-team/mach-report 2.15.0 → 2.17.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 (171) hide show
  1. package/README.md +21 -12
  2. package/dist/{ExcelBindingWizard-Bs43BGNp.cjs → ExcelBindingWizard-Bq6FYME6.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-BKH1nGNS.js → ExcelBindingWizard-Co1svTsw.js} +3 -3
  4. package/dist/{ParamEditor-Da4akw6V.cjs → ParamEditor-B5UZRgxv.cjs} +1 -1
  5. package/dist/{ParamEditor-DoAhzJsm.js → ParamEditor-DNNARyeB.js} +1 -1
  6. package/dist/{ReportBatchPanel-wP9m9Pj1.cjs → ReportBatchPanel-Ctvs2t_9.cjs} +1 -1
  7. package/dist/{ReportBatchPanel-BMf6boMA.js → ReportBatchPanel-uQh06usx.js} +3 -3
  8. package/dist/ReportPreview-BdQawRh0.js +4879 -0
  9. package/dist/ReportPreview-CJC_-j2I.cjs +6 -0
  10. package/dist/{ReportTemplateLibrary-Sxr3eD0J.cjs → ReportTemplateLibrary-CnP7_1pH.cjs} +1 -1
  11. package/dist/{ReportTemplateLibrary-C9wutIiT.js → ReportTemplateLibrary-TIL_Oj2l.js} +1 -1
  12. package/dist/RuleEditor-DkRjOLlr.js +2141 -0
  13. package/dist/RuleEditor-h5anGsDB.cjs +1 -0
  14. package/dist/{TemplateOutlinePanel-JTSR53vJ.cjs → TemplateOutlinePanel-BlLxRrfu.cjs} +1 -1
  15. package/dist/{TemplateOutlinePanel-D6Bkny59.js → TemplateOutlinePanel-BouxsuqQ.js} +1 -1
  16. package/dist/{TemplateReusePanel-rVuK1kTz.js → TemplateReusePanel-BEACLPaN.js} +2 -2
  17. package/dist/{TemplateReusePanel-Kx35S0Ql.cjs → TemplateReusePanel-yxsHSO40.cjs} +1 -1
  18. package/dist/{TemplateReviewPanel-B0ar9_zf.js → TemplateReviewPanel-B1OGRY2i.js} +1 -1
  19. package/dist/{TemplateReviewPanel-Dn6X9UmY.cjs → TemplateReviewPanel-D9Cx0m2N.cjs} +1 -1
  20. package/dist/analytics.cjs +1 -1
  21. package/dist/analytics.d.cts +65 -1
  22. package/dist/analytics.d.ts +65 -1
  23. package/dist/analytics.js +4 -4
  24. package/dist/artifact-integrity.json +105 -101
  25. package/dist/assets-BIMVwjQe.js +231 -0
  26. package/dist/assets-Dfs2ElxI.cjs +1 -0
  27. package/dist/auto-BIOmtVhk.js +240 -0
  28. package/dist/auto-DDHflI9v.cjs +1 -0
  29. package/dist/{batch-BfZHN1do.js → batch-WzDIXJAt.js} +1 -1
  30. package/dist/{batch-CLpELXBl.cjs → batch-z6Aw5GEY.cjs} +1 -1
  31. package/dist/codes.d.cts +2 -0
  32. package/dist/codes.d.ts +2 -0
  33. package/dist/component-tree-Ca6YYfHq.js +61 -0
  34. package/dist/component-tree-DkGLEfZC.cjs +1 -0
  35. package/dist/computed-BW5a8QFk.js +612 -0
  36. package/dist/computed-C2GD3XcE.cjs +1 -0
  37. package/dist/config-Dg_o8e7m.cjs +1 -0
  38. package/dist/{config-BVsJXSqS.js → config-XQ4qrQ7Q.js} +66 -64
  39. package/dist/dataset-DL83majE.js +161 -0
  40. package/dist/dataset-IrlXbUvh.cjs +1 -0
  41. package/dist/designer-D9XAxqSc.js +5178 -0
  42. package/dist/designer-uCDo5XSK.cjs +2 -0
  43. package/dist/designer.cjs +1 -1
  44. package/dist/designer.d.cts +178 -3
  45. package/dist/designer.d.ts +178 -3
  46. package/dist/designer.js +1 -1
  47. package/dist/drill-ByN8COs_.cjs +1 -0
  48. package/dist/{drill-ByJviLXS.js → drill-CKW3Xtfa.js} +5 -5
  49. package/dist/encoding-BFMFIc4r.cjs +1 -0
  50. package/dist/encoding-DP_Eaf0A.js +21 -0
  51. package/dist/{font-loader-B_UkxpzC.cjs → font-loader-7FWVlykp.cjs} +1 -1
  52. package/dist/{font-loader-Q3bQjmrI.js → font-loader-CQZowp0I.js} +1 -1
  53. package/dist/index.cjs +8 -9
  54. package/dist/index.d.cts +175 -1
  55. package/dist/index.d.ts +175 -1
  56. package/dist/index.js +1343 -915
  57. package/dist/json-snapshot-D7PE1NsU.cjs +2 -0
  58. package/dist/json-snapshot-DYmEe3sO.js +1779 -0
  59. package/dist/matrix-JLAXlux-.js +302 -0
  60. package/dist/matrix-gTHpDTGm.cjs +1 -0
  61. package/dist/{pdf-CvvrjPQg.cjs → pdf-B8JouyYv.cjs} +48 -50
  62. package/dist/{pdf-BwNyeGpt.js → pdf-l3ea86di.js} +2734 -2748
  63. package/dist/pdf.cjs +1 -1
  64. package/dist/pdf.d.cts +14 -0
  65. package/dist/pdf.d.ts +14 -0
  66. package/dist/pdf.js +2 -2
  67. package/dist/{plugin-Ca_XZG3l.js → plugin-BBp74CQZ.js} +1 -1
  68. package/dist/{plugin-DHO7X8z2.cjs → plugin-CtFX9PFG.cjs} +1 -1
  69. package/dist/prepared-CARicKYh.js +87 -0
  70. package/dist/prepared-Ch1x_Gog.cjs +1 -0
  71. package/dist/progress-BXzlVbIp.js +29 -0
  72. package/dist/progress-DJBd9Rb9.cjs +1 -0
  73. package/dist/{progress-D-OTpEav.js → progress-Hc2vxoCs.js} +2 -2
  74. package/dist/protocol-B5A2uom4.cjs +1 -0
  75. package/dist/protocol-BaiWjq5w.js +90 -0
  76. package/dist/record-bindings-B86Sur_y.cjs +1 -0
  77. package/dist/{record-bindings-Do_b3h4V.js → record-bindings-D4TuMzHs.js} +10 -11
  78. package/dist/{region-binding-workflow-BMhK_TjP.js → region-binding-workflow-BNasF5kz.js} +2 -2
  79. package/dist/{region-binding-workflow-DIYJdCUr.cjs → region-binding-workflow-O2Cni3mF.cjs} +1 -1
  80. package/dist/report-encoding-worker.cjs +1 -0
  81. package/dist/report-encoding-worker.d.ts +1 -0
  82. package/dist/report-encoding-worker.js +2 -0
  83. package/dist/rich-text-layout-ALlMoYOG.cjs +3 -0
  84. package/dist/rich-text-layout-Ct5WrY1g.js +102 -0
  85. package/dist/runtime-DakRXui3.js +170 -0
  86. package/dist/runtime-dL5ygIfa.cjs +1 -0
  87. package/dist/sbom.cdx.json +2 -2
  88. package/dist/server/node.d.cts +132 -1
  89. package/dist/server/node.d.ts +132 -1
  90. package/dist/server-node.cjs +5 -1
  91. package/dist/server-node.js +5177 -463
  92. package/dist/server.cjs +1 -1
  93. package/dist/server.d.cts +182 -2
  94. package/dist/server.d.ts +182 -2
  95. package/dist/server.js +918 -833
  96. package/dist/sha256-BshdOkCC.cjs +1 -0
  97. package/dist/sha256-DTG-Gq8i.js +157 -0
  98. package/dist/style-67OqfNed.js +73 -0
  99. package/dist/style-C22Pbv3T.cjs +1 -0
  100. package/dist/style.css +1 -1
  101. package/dist/template-catalog-Dua8h9ZA.cjs +1 -0
  102. package/dist/{template-catalog-j2B1MJlL.js → template-catalog-wT1fNeAP.js} +10 -10
  103. package/dist/{template-fragments-DcKeiylI.cjs → template-fragments-BajTajb4.cjs} +1 -1
  104. package/dist/{template-fragments-BGbQLGlV.js → template-fragments-DmX5XK4N.js} +2 -2
  105. package/dist/template-registry-CpysHAxy.cjs +1 -0
  106. package/dist/{template-registry-BtaKPELV.js → template-registry-u11fPd8D.js} +389 -321
  107. package/dist/{textwrap-DE1kgcJB.js → textwrap-BEIg2w8y.js} +1 -1
  108. package/dist/textwrap-BI-yJ6Wt.cjs +4 -0
  109. package/dist/{tree-BX380Rr7.cjs → tree-CLpxYbKa.cjs} +1 -1
  110. package/dist/{tree-CjVZLRw7.js → tree-DNJorJUf.js} +1 -1
  111. package/dist/vue/async.d.cts +174 -2
  112. package/dist/vue/async.d.ts +174 -2
  113. package/dist/vue/index.d.cts +218 -3
  114. package/dist/vue/index.d.ts +218 -3
  115. package/dist/vue-async.cjs +1 -1
  116. package/dist/vue-async.js +3 -3
  117. package/dist/vue.cjs +1 -1
  118. package/dist/vue.js +7 -7
  119. package/dist/{workbook-session-BvToI-Fd.js → workbook-session-B8pNW24X.js} +153 -140
  120. package/dist/{workbook-session-Bjv1YCRK.cjs → workbook-session-DN5LSA5C.cjs} +12 -12
  121. package/dist/worker.cjs +1 -1
  122. package/dist/worker.d.cts +84 -1
  123. package/dist/worker.d.ts +84 -1
  124. package/dist/worker.js +12 -157
  125. package/dist/xlsx-node.cjs +33 -33
  126. package/dist/xlsx-node.js +1282 -1289
  127. package/dist/xlsx.cjs +4 -3
  128. package/dist/xlsx.d.cts +90 -2
  129. package/dist/xlsx.d.ts +90 -2
  130. package/dist/xlsx.js +279 -259
  131. package/package.json +6 -3
  132. package/dist/ReportPreview-ChV19HBp.js +0 -4619
  133. package/dist/ReportPreview-DbLvvOUT.cjs +0 -6
  134. package/dist/RuleEditor-C_Clasvd.js +0 -2037
  135. package/dist/RuleEditor-XhGHK8DE.cjs +0 -1
  136. package/dist/assets-B9ImAi6_.cjs +0 -1
  137. package/dist/assets-DEaz4qsp.js +0 -124
  138. package/dist/batch-BaP6pWDE.cjs +0 -1
  139. package/dist/batch-CGyt-b2W.js +0 -273
  140. package/dist/capabilities-CAh2Nrue.cjs +0 -1
  141. package/dist/capabilities-DskCHs3V.js +0 -69
  142. package/dist/computed-C-4C2S5h.js +0 -521
  143. package/dist/computed-CGV2a809.cjs +0 -1
  144. package/dist/config-D10us76d.cjs +0 -1
  145. package/dist/data-explanation-B8MZRYVS.js +0 -16
  146. package/dist/data-explanation-DE55G30w.cjs +0 -1
  147. package/dist/dataset-BkRmwgeJ.cjs +0 -1
  148. package/dist/dataset-H5pFuQGU.js +0 -121
  149. package/dist/defaults-DXhiM1ZD.js +0 -10
  150. package/dist/defaults-xhmcLLrf.cjs +0 -1
  151. package/dist/designer-2bDlcNXQ.js +0 -5136
  152. package/dist/designer-BT7XCdbW.cjs +0 -2
  153. package/dist/drill-DYTxuL3A.cjs +0 -1
  154. package/dist/grid-strokes-Cr7DwUux.cjs +0 -1
  155. package/dist/grid-strokes-DyyG1q_o.js +0 -53
  156. package/dist/json-snapshot-DFb2eWkf.js +0 -1416
  157. package/dist/json-snapshot-WWSGlaHG.cjs +0 -2
  158. package/dist/matrix-CGRGkn5s.js +0 -112
  159. package/dist/matrix-gEO7ZM_u.cjs +0 -1
  160. package/dist/prepared-CFy9B75C.cjs +0 -1
  161. package/dist/prepared-ajM-H-9B.js +0 -69
  162. package/dist/record-bindings-By_UKZ2g.cjs +0 -1
  163. package/dist/render-plan-7xpGrCEl.cjs +0 -1
  164. package/dist/render-plan-Ck6koX9L.js +0 -13
  165. package/dist/sha256-ArEYjaTI.cjs +0 -1
  166. package/dist/sha256-DPEuJ3nh.js +0 -155
  167. package/dist/style-CQ1PK8ZB.js +0 -67
  168. package/dist/style-UgIJSA1F.cjs +0 -1
  169. package/dist/template-catalog-FJE_c9Qe.cjs +0 -1
  170. package/dist/template-registry-Co1zPq5e.cjs +0 -1
  171. package/dist/textwrap-CWHyzkBH.cjs +0 -4
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("vue"),Xe=require("@agile-team/mach-report/vue"),P=require("@agile-team/mach-report"),Y=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Se=require("./record-bindings-By_UKZ2g.cjs"),Dt=require("./tree-BX380Rr7.cjs"),Fe=require("./style-UgIJSA1F.cjs"),Tt=require("./template-outline-BwRV_eRo.cjs");function $t(t,l,o=3){if(!t.tree)return l.slice(0,o).map(a=>t.columns.map(n=>Se.resolveListSampleCell(t,n,a)));if(l.length>200)return[];try{return Dt.createTreeTable(l,{...t.tree,maxRows:Math.min(200,t.tree.maxRows??200),maxAggregationVisits:Math.min(2e3,t.tree.maxAggregationVisits??2e3)},{computed:t.computed?.length?{fields:t.computed,maxRows:200,maxCells:4096}:void 0}).entries.slice(0,o).map(n=>t.columns.map(r=>Se.resolveTreeListSampleCell(t,r,n)))}catch{return[]}}const Ke=96/25.4;function Oe(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((l,o)=>l+o,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function ce(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:Oe(t)}}function he(t,l){return l?t.template.pages[l.pageIndex]?.components[l.componentIndex]:void 0}function It(t,l="detail"){const o={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="qrcode"?{...o,kind:t,widthMm:22,heightMm:22,code:{value:"MACHREPORT",errorCorrection:"M",quietZoneModules:4}}:t==="barcode"?{...o,kind:t,widthMm:50,heightMm:16,code:{value:"MR20261022",symbology:"code128",quietZoneModules:10,showText:!0}}:t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:l,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...o,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...o,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...o,kind:t,widthMm:48,heightMm:24,imageData:`data:image/svg+xml;charset=utf-8,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="180" height="90" viewBox="0 0 180 90"><rect width="180" height="90" rx="5" fill="#eff6ff"/><path d="m25 68 32-32 25 23 27-35 45 44" fill="none" stroke="#94b8e5" stroke-width="3"/><circle cx="45" cy="24" r="7" fill="#bfd5ef"/></svg>')}`}}function He(t,l,o=!1){const a=Math.max(2,Math.min(l.widthMm,t.widthMm)),n=Math.max(2,Math.min(l.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(l.widthMm-a,t.leftMm)),topMm:Math.max(0,Math.min(l.heightMm-(o?2:n),t.topMm)),widthMm:a,heightMm:n}}function Me(t,l){const o=t.widthMm;if(Object.assign(t,{leftMm:l.leftMm,topMm:l.topMm,widthMm:l.widthMm}),t.kind!=="list")t.heightMm=l.heightMm;else if(o>0&&l.widthMm!==o){const a=l.widthMm/o;t.columns.forEach(n=>{n.widthMm=Math.round(n.widthMm*a*100)/100}),t.widthMm=t.columns.reduce((n,r)=>n+r.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(n=>n.widthMm))}}function Rt(t,l,o){if(l===o||!t.columns[l]||!t.columns[o])return!1;if(t.headerGrid){if(P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:r})=>(r.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const n=ze(t);n.forEach(r=>{r.splice(o,0,r.splice(l,1)[0])}),t.headerGrid=Ge(n,t.columns.map(r=>r.widthMm),t.headerGrid.rowHeightsMm??n.map(()=>8))}return t.columns.splice(o,0,t.columns.splice(l,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(a=>a.widthMm)),!0}function ze(t){if(!t.headerGrid)return[t.columns.map(o=>({text:o.header}))];const l=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:o,ri:a,ci:n}of P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)l[a][n]=o;return l}function Ge(t,l,o){const a=new Set;return{cells:t.map((r,c)=>r.flatMap((u,m)=>{if(a.has(`${c}:${m}`))return[];if(!u)return[null];for(let k=c;k<c+(u.rowSpan??1);k++)for(let S=m;S<m+(u.colSpan??1);S++)(k!==c||S!==m)&&a.add(`${k}:${S}`);return[u]})),colWidthsMm:l,rowHeightsMm:o}}function _t(t){const l=ze(t),o=t.headerGrid?.rowHeightsMm??l.map(()=>8);l.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=Ge(l,t.columns.map(a=>a.widthMm),[8,...o])}function Lt(t,l,o,a){if(o>=a||o<0||a>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const n=ze(t),r=n[l];if(!r)throw new Error("表头行不存在。");const c=r.slice(o,a+1);if(c.some(m=>!m||(m.colSpan??1)!==1||(m.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const u=c[0];r[o]={...u,colSpan:a-o+1};for(let m=o+1;m<=a;m++)r[m]=null;t.headerGrid=Ge(n,t.columns.map(m=>m.widthMm),t.headerGrid?.rowHeightsMm??[8])}function Pt(t,l,o){if(!t.headerGrid)return;const n=P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:k,ci:S,cell:p})=>l>=k&&l<k+(p.rowSpan??1)&&o>=S&&o<S+(p.colSpan??1));if(!n)return;const r=ze(t),{ri:c,ci:u,cell:m}=n;for(let k=c;k<c+(m.rowSpan??1);k++)for(let S=u;S<u+(m.colSpan??1);S++){const p={...m,text:k===r.length-1?t.columns[S].header:m.text};delete p.colSpan,delete p.rowSpan,r[k][S]=p}t.headerGrid=Ge(r,t.columns.map(k=>k.widthMm),t.headerGrid.rowHeightsMm??r.map(()=>8))}function At(t){const l=e.ref(),o=e.ref(.8),a=e.ref(0),n=e.ref(0),r=e.computed(()=>o.value*Ke),c=e.computed(()=>t.document.template.pages[t.pageIndex]),u=e.computed(()=>c.value.widthMm*r.value>n.value-40);let m,k=!!t.document.template.repeat;function S(d){const v=l.value;if(!v||v.clientWidth<=40||v.clientHeight<=40)return;let w={leftMm:0,topMm:0,widthMm:c.value.widthMm,heightMm:c.value.heightMm};const $=t.selection?.pageIndex===t.pageIndex?c.value.components[t.selection.componentIndex]:void 0;d==="selection"&&$&&(w=ce($));const B=(v.clientWidth-40)/(w.widthMm*Ke),V=(v.clientHeight-40)/(w.heightMm*Ke);o.value=Math.max(.05,Math.min(2,d==="width"?B:Math.min(B,V))),e.nextTick(()=>{v.scrollLeft=w.leftMm*r.value,v.scrollTop=w.topMm*r.value})}function p(d){k=!1,S(d)}function b(d){Number.isFinite(d)&&(k=!1,o.value=Math.max(.05,Math.min(2,d)))}function N(){const d=l.value;d&&(n.value=d.clientWidth,a.value=d.scrollWidth>d.clientWidth?Math.round(d.scrollLeft/(d.scrollWidth-d.clientWidth)*100):0)}function h(d){const v=l.value;v&&(v.scrollLeft=(v.scrollWidth-v.clientWidth)*d/100),a.value=d}function g(){N(),k&&t.document.template.repeat&&S("page")}async function E(){await e.nextTick();const d=l.value,v=t.selection;if(!d||v?.pageIndex!==t.pageIndex)return;const w=c.value.components[v.componentIndex];if(!w)return;const $=ce(w);if(w.kind==="list"&&t.columnIndex!==void 0&&t.columnIndex>=0){const D=w;$.leftMm+=D.columns.slice(0,t.columnIndex).reduce((F,z)=>F+z.widthMm,0),$.widthMm=D.columns[t.columnIndex]?.widthMm??$.widthMm}const B=$.leftMm*r.value,V=$.topMm*r.value,y=B+$.widthMm*r.value,x=V+$.heightMm*r.value;B<d.scrollLeft?d.scrollLeft=B:y>d.scrollLeft+d.clientWidth-40&&(d.scrollLeft=Math.max(0,Math.min(B,y-d.clientWidth+40))),V<d.scrollTop?d.scrollTop=V:x>d.scrollTop+d.clientHeight-40&&(d.scrollTop=Math.max(0,Math.min(V,x-d.clientHeight+40))),N()}return e.watch(()=>[t.selection,t.columnIndex,t.pageIndex],()=>{E()}),e.watch(()=>t.document.id,()=>{k=!!t.document.template.repeat,e.nextTick(g)}),e.watch(()=>[!!t.document.template.repeat,t.pageIndex,c.value.widthMm,c.value.heightMm],()=>{e.nextTick(g)}),e.onMounted(()=>{g(),typeof ResizeObserver<"u"&&l.value&&(m=new ResizeObserver(g),m.observe(l.value))}),e.onBeforeUnmount(()=>m?.disconnect()),{viewport:l,zoom:o,scale:r,page:c,wide:u,fraction:a,fit:p,setZoom:b,sync:N,navigate:h}}function Ft(t,l,o){if(t.kind==="list")return{text:t.dataset};const a=t.kind==="barcode"||t.kind==="qrcode"?t.code?.value??t.fallbackText??t.text??"":t.text??t.fallbackText??"";return t.binding?Ht(t,l,o):{text:a,...t.imageData?{image:t.imageData}:{}}}function Ht(t,l,o){const a=t.binding,n=l.template.repeat,r=n?o?.[n.dataset]?.[0]:void 0;if(!r)return{text:a.field,bound:!0};try{const c=Se.resolveComponentBinding(a,r,{dataset:n?.dataset,rowIndex:0});return t.kind==="image"&&c&&!Se.isLabelImageData(c)?{text:a.field,bound:!0,error:"image-binding"}:{text:c,bound:!0,...t.kind==="image"&&Se.isLabelImageData(c)?{image:c}:{}}}catch(c){return{text:a.field,bound:!0,error:c instanceof Error?c.message:String(c)}}}function rt(t,l){const a=[1,2,5,10,20,50,100,200,500,1e3].find(r=>r*l>=36)??Math.max(1e3,Math.ceil(t/200));return Array.from({length:Math.min(201,Math.floor(t/a)+1)},(r,c)=>({mm:c*a,position:c*a*l}))}const Ye=[{id:"label-80-55",widthMm:80,heightMm:55},{id:"label-80-50",widthMm:80,heightMm:50},{id:"label-100-60",widthMm:100,heightMm:60},{id:"a4",widthMm:210,heightMm:297},{id:"a3",widthMm:297,heightMm:420}];function De(t,l,o){return typeof t.meta?.title=="string"&&t.meta.title.trim()?t.meta.title:`${o} ${l+1}`}function ft(t){return t.components.flatMap((l,o)=>{const a=l.kind==="list"?l.rowHeightMm??Oe(l):l.heightMm;return l.leftMm<0||l.topMm<0||l.leftMm+l.widthMm>t.widthMm+.001||l.topMm+a>t.heightMm+.001?[o]:[]})}function Ot(t,l){const o=JSON.parse(JSON.stringify(t)),a=new Set(l.flatMap(c=>c.components.map(u=>u.kind==="list"?u.id:u.nid)).filter(Boolean)),n=new Map;let r=0;for(const c of o.components){const u=c.kind==="list"?c.id:c.nid;if(!u)continue;let m;do m=`page-copy-${++r}`;while(a.has(m));a.add(m),n.set(u,m),c.kind==="list"?c.id=m:(c.nid=m,delete c.rkey)}return o.flow?.bands.forEach(c=>{c.componentIds=c.componentIds.map(u=>n.get(u)??u)}),o}function zt(t,l,o){const a=t.template.pages,n=a[l];if(!n)return 0;if(o.type==="patch")return Object.assign(n,o.patch),l;if(o.type==="remove")return a.length<=1?l:(a.splice(l,1),Math.min(l,a.length-1));const r=o.type==="duplicate"?Ot(n,a):JSON.parse(JSON.stringify(n));return o.type==="add"&&(r.components=[],delete r.flow,delete r.meta),a.splice(l+1,0,r),l+1}function it(t,l,o){const a=t.filter(n=>n!==l).flatMap(n=>{const r=n[o],c=o==="leftMm"?n.widthMm:Oe(n);return[r,r+c/2,r+c]});return[...new Set(a)].sort((n,r)=>n-r)}function Gt(t,l){if(!t.length)return;let o=0,a=t.length;for(;o<a;){const c=o+a>>>1;t[c]<l?o=c+1:a=c}const n=t[Math.max(0,o-1)],r=t[Math.min(t.length-1,o)];return Math.abs(n-l)<Math.abs(r-l)?n:r}function st(t,l,o,a){let n=1/0,r={value:Math.round(t*2)/2};for(const c of[0,l/2,l]){const u=Gt(o,t+c);if(u===void 0)continue;const m=Math.abs(u-t-c);m<=a&&m<n&&(n=m,r={value:u-c,guide:u})}return r}function jt(t,l,o,a){if(a){const n=Math.abs(l)>=Math.abs(o)?l:o,r=Math.round((t.widthMm+n)*2)/2;return{...t,widthMm:r,heightMm:r}}return{...t,widthMm:Math.round((t.widthMm+l)*2)/2,heightMm:Math.round((t.heightMm+o)*2)/2}}function qt(t){let l;function o(a,n,r=!1){if(t.disabled()||a.button!==0)return;a.preventDefault(),a.stopPropagation(),l?.();const c=a.currentTarget.closest("[data-canvas-component]"),u=ce(n),m=a.clientX,k=a.clientY;let S=u,p=0;const b=t.scale.value,N=c.parentElement;let h,g;const E=()=>{for(const[x,D]of[["x",h],["y",g]])N.style.setProperty(`--mr-canvas-guide-${x}-display`,D===void 0?"none":"block"),D!==void 0&&N.style.setProperty(`--mr-canvas-guide-${x}`,`${D*b}px`)},d=()=>{p=0,E(),c.style.left=`${S.leftMm*b}px`,c.style.top=`${S.topMm*b}px`,c.style.width=`${S.widthMm*b}px`,c.style.height=`${S.heightMm*b}px`},v={leftMm:it(t.page().components,n,"leftMm"),topMm:it(t.page().components,n,"topMm")},w=x=>{const D=(x.clientX-m)/b,F=(x.clientY-k)/b,z=st(u.leftMm+D,u.widthMm,v.leftMm,5/b),Z=st(u.topMm+F,u.heightMm,v.topMm,5/b);h=r?void 0:z.guide,g=r?void 0:Z.guide,S=He(r?jt(u,D,F,n.kind==="qrcode"):{...u,leftMm:z.value,topMm:Z.value},t.page(),n.kind==="list"),r&&n.kind==="qrcode"&&(S.widthMm=S.heightMm=Math.min(S.widthMm,S.heightMm)),p||(p=requestAnimationFrame(d))},$=x=>{window.removeEventListener("pointermove",w),window.removeEventListener("pointerup",B),window.removeEventListener("pointercancel",V),window.removeEventListener("keydown",y),p&&cancelAnimationFrame(p),S=x?S:u,h=void 0,g=void 0,d(),l=void 0,x&&JSON.stringify(S)!==JSON.stringify(u)&&t.commit(S)},B=()=>$(!0),V=()=>$(!1),y=x=>{x.key==="Escape"&&(x.preventDefault(),V())};window.addEventListener("pointermove",w),window.addEventListener("pointerup",B),window.addEventListener("pointercancel",V),window.addEventListener("keydown",y),l=V}return e.watch(t.disabled,a=>{a&&l?.()}),e.watch(t.page,()=>l?.()),e.onBeforeUnmount(()=>l?.()),{start:o}}const Wt={title:"报表模板设计器",heading:"模板设计",unpublished:"未发布",dirty:"有未保存修改",reset:"恢复草稿",saving:"正在保存…",save:"保存草稿",name:"模板名称",description:"说明",area:"明细区域",page:"页",header:"表头",field:"业务字段",width:"列宽(mm)",semantic:"字段语义",identifier:"编号",dimension:"分类",measure:"数值",date:"日期",text:"文本",bodyAlign:"正文对齐",headerAlign:"表头对齐",auto:"按字段语义",left:"居左",center:"居中",right:"居右",justify:"两端对齐",editable:"允许编辑",json:"完整模板 JSON",applyJson:"校验并应用 JSON",note:"字段映射应与数据源契约一致。此编辑器维护模板属性;保存由接入方提供的版本服务处理。",invalid:"请先修正模板错误,再预览或保存。"},Ut={toolTarget:"当前目标",toolPreview:"显示画布",toolPreviewHide:"收起画布",toolChooseComponent:"选择组件",previousColumns:"上一组字段",nextColumns:"下一组字段",columnWindow:"{start}–{end} / {total}",paperAndPages:"纸张与版面",pageDirectory:"版面目录",pageName:"版面名称",addPage:"新增版面",duplicatePage:"复制版面",removePage:"删除版面",removePageConfirm:"此版面包含组件,删除后可通过撤销恢复。",confirmRemovePage:"确认删除",paperPreset:"纸张规格",labelPaper:"标签",customPaper:"自定义尺寸",paperWidth:"纸宽(mm)",paperHeight:"纸高(mm)",pageLayout:"展示方式",fixedPaper:"固定纸张",completeWide:"完整宽表",pageMargins:"页边距 · mm",marginTop:"上边距",marginRight:"右边距",marginBottom:"下边距",marginLeft:"左边距",pageOverflow:"{count} 个组件超出纸张",pageOverflowHint:"内容位置和尺寸已保留,请调整组件或纸张后核对打印预览。",locateOverflow:"定位超界组件",repeatRecords:"按记录生成标签",repeatRecordsHint:"每条记录按版面顺序生成,支持多版与多份。",recordDataset:"记录数据集",recordRowKey:"记录主键字段(可选)",labelCopies:"份数来源",fixedCopies:"固定份数",fieldCopies:"记录字段",copiesPerRecord:"每条记录份数",copiesField:"份数字段",repeatBoundHint:"已有组件绑定此记录;移除全部字段绑定后可关闭。",repeatOrderHint:"生成顺序:记录 → 份数 → 版面;预览会使用提供的真实样例。",repeatNeedsFixed:"先使用固定纸张、将组件置于纸内,并移除明细表或流式区域。",dataBinding:"记录绑定",contentSource:"内容来源",staticContent:"固定内容",recordField:"记录字段",bindingField:"绑定字段",bindingNeedsRepeat:"先在“模板”开启按记录生成,再选择字段。",bindingRecordHint:"字段随当前记录变化,空值与真实的 0 分开处理。",bindingImageHint:"图片字段使用 PNG/JPEG base64 data URL;空值不显示,业务 URL 由接入方安全加载。",valueFormat:"值格式",naturalFormat:"原始显示",numberFormat:"数值",percentFormat:"百分比",dateFormat:"日期",decimalPlaces:"小数位",datePattern:"日期格式",bindingDecoration:"前后缀与空值",valuePrefix:"前缀",valueSuffix:"后缀",emptyValueText:"空值显示",insertQrcode:"二维码",insertBarcode:"条形码",codeSettings:"编码设置",codeAdvancedSettings:"纠错、留白与使用说明",codeValue:"固定编码内容",codeSymbology:"条码制式",codeCorrection:"二维码纠错",codeQuietZone:"留白(模块)",codeShowText:"显示条码文字",eanContentHint:"使用完整的 8 / 13 位数字,包含有效校验位;切换制式不会改写内容。",code39ContentHint:"支持大写字母、数字、空格与 - . $ / + %;内容不会自动转换。",code128ContentHint:"支持可打印 ASCII 内容;中文请使用二维码。",codePlaceholder:"编码区域",codePreviewHint:"设计中显示内容标识;切换预览核对实际编码。",boundImagePlaceholder:"记录图片",rulerLabel:"毫米标尺",rulerToggle:"标尺",designSample:"样例",repeatPage:"每页重复",repeatNone:"不重复",repeatHeader:"页眉",repeatFooter:"页脚",textFormat:"文字样式",fontSize:"字号(pt)",fontBold:"加粗",textColor:"文字颜色",backgroundColor:"背景颜色",canvasGridLimited:"设计窗口仅显示前 2000 个单元格;最终预览与导出保留完整内容。",design:"设计",preview:"预览",componentSection:"组件",toolsSection:"工具",component:"组件",components:"组件目录",canvasHint:"点击选择 · 拖动移动 · 方向键微调 · Shift 加速 · Esc 取消",zoom:"缩放",sampleRows:"数据预览区域",treeSampleHint:"树形样例需完整且有界,请在报表预览中验证",resizeComponent:"调整组件尺寸",resizeColumn:"调整列宽",insertComponent:"添加组件",insertText:"文本",insertList:"明细表",insertImage:"图片",insertRect:"矩形",chartComponent:"图表",lineComponent:"线条",ellipseComponent:"椭圆",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,支持 PNG/JPEG/WebP/SVG",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",flowLayout:"区域版式由 Excel 绑定向导管理;可编辑字段、格式与业务规则。",paramsTool:"查询参数",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",unapplied:"待应用",pendingToolsLabel:"待处理配置",pendingToolsHint:"应用或恢复后可保存",saveReadonly:"当前为只读,无法保存",saveConfirmation:"请先处理修改确认",saveUnchanged:"没有需要保存的修改",saveInvalid:"模板有错误,请先修正",saveJsonPending:"完整 JSON 待应用",returnToConfiguration:"返回配置",rulesNeedList:"请先在字段区域选择明细表。",undo:"撤销",redo:"重做",columnsSearch:"搜索列名或字段",columnsSelected:"已选列",selectVisible:"选择当前结果",clearSelection:"清除选择",noColumns:"没有匹配的列",batchBody:"批量正文对齐",batchHeader:"批量表头对齐",chooseAlignment:"选择对齐方式",discardTitle:"保留当前修改?",discardDescription:"当前包含未保存的属性或尚未应用的 JSON,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃修改并继续",jsonPending:"JSON 尚未应用。请先校验并应用,或撤销 JSON 修改后继续属性编辑与保存。",fieldsSection:"字段",templateSection:"模板",advancedSection:"高级",sectionsLabel:"模板设置分区",columnDirectory:"字段目录",columnProperties:"字段属性",selectColumn:"选择字段",clearSearch:"清除搜索",fieldsCount:"个字段",templateDetails:"模板信息",advancedTitle:"完整配置",advancedDescription:"用于批量迁移或配置复杂模板。应用前会校验;未应用的内容会受到草稿保护。",templateIdentity:"模板标识",templateRevision:"当前修订",readonly:"只读",ready:"可编辑",previewTitle:"实时预览",contentGroup:"内容",formatGroup:"格式",autoShort:"自动",previousColumn:"上一字段",nextColumn:"下一字段",closeDirectory:"关闭字段目录",technicalDetails:"标识与修订",fieldPosition:"当前字段",previewFieldDirectory:"定位字段"},me={outlineTool:"结构大纲",reuseTool:"片段与样式",fitWidth:"适宽",fitPage:"适页",fitSelection:"选区",wideNavigation:"宽表导航",alignSelection:"对齐选区",leftEdges:"左对齐",centers:"水平居中",rightEdges:"右对齐",topEdges:"顶对齐",middles:"垂直居中",bottomEdges:"底对齐",horizontalSpacing:"水平等距",verticalSpacing:"垂直等距",lockSelection:"锁定位置",unlockSelection:"解锁位置",sessionLock:"位置锁定仅当前设计会话有效。",toolsPending:"工具中还有未应用的配置,请先应用或恢复后再保存模板。",...Wt,...Ut},Jt={class:"mr-canvas"},Kt={class:"mr-canvas-heading"},Yt={class:"mr-canvas-sheet-info"},Xt=["title"],Zt=["title"],Qt={class:"mr-canvas-gesture-hint"},en={class:"mr-canvas-toolbar"},tn={class:"mr-canvas-view-tools"},nn=["aria-pressed"],on=["disabled"],an=["value","aria-label"],ln=["value"],rn=["width","aria-label"],sn=["transform"],cn={x:"3",y:"9"},dn=["height"],un=["transform"],mn={x:"3",y:"10"},pn=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],fn={class:"mr-canvas-table"},vn={key:1,class:"mr-canvas-table-row is-header"},gn=["onPointerdown"],hn={key:2,class:"mr-canvas-placeholder"},yn=["aria-label","onPointerdown"],bn={key:1,class:"mr-canvas-static-grid"},kn={key:0,class:"mr-canvas-grid-limit"},En=["title"],Sn={key:0},Nn=["src"],wn=["title"],Vn=["aria-label","onPointerdown"],xn={key:0,class:"mr-canvas-navigator"},Cn=["value","aria-label"],Bn=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{},selections:{},locked:{type:Function},activeColumnIndex:{},pageIndex:{},datasets:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},messages:{}},emits:["select","geometry","column","width"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),{viewport:r,zoom:c,scale:u,page:m,wide:k,fraction:S,fit:p,setZoom:b,sync:N,navigate:h}=At({get document(){return o.document},get pageIndex(){return o.pageIndex},get selection(){return o.selection},get columnIndex(){return o.activeColumnIndex}}),g=e.computed(()=>o.disabled===!0||o.geometryDisabled===!0||!!m.value.flow),E=e.computed(()=>m.value.components.map(C=>C.kind==="list"?$t(C,o.datasets?.[C.dataset]??[],m.value.flow||C.cardinality==="record"?1:3):[])),d=e.computed(()=>m.value.components.map(C=>Ft(C,o.document,o.datasets))),v=e.ref(!0),w=e.computed(()=>rt(m.value.widthMm,u.value)),$=e.computed(()=>rt(m.value.heightMm,u.value));function B(C,T,M){return{width:`${T*u.value}px`,opacity:M?.35:1,textAlign:C.style?.align,paddingLeft:C.indentMm?`${C.indentMm*u.value}px`:void 0,color:C.style?.color,backgroundColor:C.style?.backgroundColor,fontWeight:C.style?.bold?"700":"400",fontSize:`${Fe.resolveFontSize(C.style).fontSizePx*c.value}px`}}function V(C){return o.locked?.({pageIndex:o.pageIndex,componentIndex:C})===!0}function y(C,T){a("select",{pageIndex:o.pageIndex,componentIndex:T,additive:C.ctrlKey||C.metaKey||C.shiftKey}),!C.ctrlKey&&!C.metaKey&&!C.shiftKey&&!V(T)&&x.start(C,m.value.components[T])}const x=qt({scale:u,page:()=>m.value,disabled:()=>g.value,commit:C=>a("geometry",C)});function D(C){return(o.selections??(o.selection?[o.selection]:[])).some(T=>T.pageIndex===o.pageIndex&&T.componentIndex===C)}function F(C){const T=m.value.components[C],M=T.kind==="list"?T.id:T.nid,_=m.value.flow?.bands.find(W=>W.componentIds.includes(M??"")),R=_&&T.kind==="list"?_.topMm+_.heightMm-T.topMm:Oe(T);return{left:`${T.leftMm*u.value}px`,top:`${T.topMm*u.value}px`,width:`${T.widthMm*u.value}px`,height:`${R*u.value}px`}}function z(C,T){const M=m.value.components[T];if(g.value||V(T)||!D(T))return;const _={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},R=_[C.key];if(!R)return;C.preventDefault(),C.stopPropagation();const W=ce(M),te=C.shiftKey?5:.5;W.leftMm+=R[0]*te,W.topMm+=R[1]*te,a("geometry",W)}function Z(C){let T=0;return C.columns.map(M=>(T+=M.widthMm,T))}function I(C){return C.grid?P.resolveGridLayout(C.grid,C.widthMm,C.heightMm).cells.slice(0,2e3):[]}function i(C){return C.headerGrid?P.resolveGridLayout(C.headerGrid,C.widthMm,C.headerGrid.rowHeightsMm?.reduce((T,M)=>T+M,0)??C.headerGrid.cells.length*8).cells:[]}let j;e.watch(()=>g.value,C=>{C&&j?.()}),e.watch(()=>o.document,()=>j?.()),e.onBeforeUnmount(()=>j?.());function G(C,T,M){if(g.value||C.button!==0)return;C.preventDefault(),C.stopPropagation(),j?.();const _=C.clientX,R=T.columns[M].widthMm;let W=R;const te=C.currentTarget,ie=le=>{W=Math.max(2,Math.round((R+(le.clientX-_)/u.value)*2)/2),te.style.transform=`translateX(${(W-R)*u.value}px)`},ne=()=>{window.removeEventListener("pointermove",ie),window.removeEventListener("pointerup",J),window.removeEventListener("pointercancel",ae),window.removeEventListener("keydown",K),te.style.transform="",j=void 0},J=()=>{ne(),W!==R&&a("width",M,W)},ae=()=>ne(),K=le=>{le.key==="Escape"&&(le.preventDefault(),ae())};window.addEventListener("pointermove",ie),window.addEventListener("pointerup",J),window.addEventListener("pointercancel",ae),window.addEventListener("keydown",K),j=ae}return(C,T)=>(e.openBlock(),e.createElementBlock("div",Jt,[e.createElementVNode("div",Kt,[e.createElementVNode("div",Yt,[e.createElementVNode("strong",{title:e.unref(De)(e.unref(m),t.pageIndex,n.value.page)},e.toDisplayString(e.unref(De)(e.unref(m),t.pageIndex,n.value.page)),9,Xt),e.createElementVNode("span",null,e.toDisplayString(e.unref(m).widthMm)+" × "+e.toDisplayString(e.unref(m).heightMm)+" mm",1),t.document.template.repeat?(e.openBlock(),e.createElementBlock("small",{key:0,title:t.document.template.repeat.dataset},e.toDisplayString(n.value.designSample)+" · "+e.toDisplayString(t.document.template.repeat.dataset),9,Zt)):e.createCommentVNode("",!0)]),e.createElementVNode("span",Qt,e.toDisplayString(n.value.canvasHint),1),e.createElementVNode("div",en,[e.createElementVNode("nav",tn,[e.createElementVNode("button",{type:"button","aria-pressed":v.value,onClick:T[0]||(T[0]=M=>v.value=!v.value)},e.toDisplayString(n.value.rulerToggle),9,nn),e.createElementVNode("button",{type:"button",onClick:T[1]||(T[1]=M=>e.unref(p)("width"))},e.toDisplayString(n.value.fitWidth),1),e.createElementVNode("button",{type:"button",onClick:T[2]||(T[2]=M=>e.unref(p)("page"))},e.toDisplayString(n.value.fitPage),1),e.createElementVNode("button",{type:"button",disabled:!t.selection,onClick:T[3]||(T[3]=M=>e.unref(p)("selection"))},e.toDisplayString(n.value.fitSelection),9,on)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.zoom),1),e.createElementVNode("select",{value:e.unref(c),"aria-label":n.value.zoom,onChange:T[4]||(T[4]=M=>e.unref(b)(Number(M.target.value)))},[[.5,.8,1,1.25].includes(e.unref(c))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("option",{key:0,value:e.unref(c)},e.toDisplayString(Math.round(e.unref(c)*100))+"%",9,ln)),T[7]||(T[7]=e.createElementVNode("option",{value:.5},"50%",-1)),T[8]||(T[8]=e.createElementVNode("option",{value:.8},"80%",-1)),T[9]||(T[9]=e.createElementVNode("option",{value:1},"100%",-1)),T[10]||(T[10]=e.createElementVNode("option",{value:1.25},"125%",-1))],40,an)])])]),e.createElementVNode("div",{ref_key:"viewport",ref:r,class:"mr-canvas-scroll",onScrollPassive:T[5]||(T[5]=(...M)=>e.unref(N)&&e.unref(N)(...M))},[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${e.unref(m).widthMm*e.unref(u)}px`,height:`${e.unref(m).heightMm*e.unref(u)}px`})},[v.value?(e.openBlock(),e.createElementBlock("svg",{key:0,class:"mr-canvas-ruler is-horizontal",width:e.unref(m).widthMm*e.unref(u),height:"17","aria-label":n.value.rulerLabel,role:"img"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,M=>(e.openBlock(),e.createElementBlock("g",{key:M.mm,transform:`translate(${M.position}, 0)`},[T[11]||(T[11]=e.createElementVNode("line",{y1:"12",y2:"17"},null,-1)),e.createElementVNode("text",cn,e.toDisplayString(M.mm),1)],8,sn))),128))],8,rn)):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("svg",{key:1,class:"mr-canvas-ruler is-vertical",width:"17",height:e.unref(m).heightMm*e.unref(u),"aria-hidden":"true"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,M=>(e.openBlock(),e.createElementBlock("g",{key:M.mm,transform:`translate(0, ${M.position})`},[T[12]||(T[12]=e.createElementVNode("line",{x1:"12",x2:"17"},null,-1)),e.createElementVNode("text",mn,e.toDisplayString(M.mm),1)],8,un))),128))],8,dn)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m).components,(M,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:e.normalizeClass(["mr-canvas-component",{"is-selected":D(_),"is-locked":V(_)}]),"data-canvas-component":_,style:e.normalizeStyle(F(_)),role:"button","aria-label":`${n.value.component} ${_+1} ${M.kind}`,"aria-pressed":D(_),tabindex:D(_)?0:-1,onFocus:R=>!D(_)&&a("select",{pageIndex:t.pageIndex,componentIndex:_}),onPointerdown:R=>y(R,_),onClick:R=>R.detail===0&&!D(_)&&a("select",{pageIndex:t.pageIndex,componentIndex:_}),onKeydown:R=>z(R,_)},[M.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",fn,[M.header!==!1&&M.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(M.headerGrid.rowHeightsMm?.reduce((R,W)=>R+W,0)??M.headerGrid.cells.length*8)*e.unref(u)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i(M),(R,W)=>(e.openBlock(),e.createElementBlock("div",{key:W,style:e.normalizeStyle({left:`${R.xMm*e.unref(u)}px`,top:`${R.yMm*e.unref(u)}px`,width:`${R.widthMm*e.unref(u)}px`,height:`${R.heightMm*e.unref(u)}px`,textAlign:R.cell.style?.align??"center"})},e.toDisplayString(R.cell.text),5))),128))],4)):M.header!==!1?(e.openBlock(),e.createElementBlock("div",vn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.columns,(R,W)=>(e.openBlock(),e.createElementBlock("div",{key:W,style:e.normalizeStyle(B({text:R.header,style:e.unref(Se.resolveListHeaderStyle)(M,R)},R.widthMm,R.hidden)),onPointerdown:e.withModifiers(te=>{a("select",{pageIndex:t.pageIndex,componentIndex:_}),a("column",W)},["stop"])},e.toDisplayString(R.header),45,gn))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value[_],(R,W)=>(e.openBlock(),e.createElementBlock("div",{key:W,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.columns,(te,ie)=>(e.openBlock(),e.createElementBlock("div",{key:ie,style:e.normalizeStyle(B(R[ie],te.widthMm,te.hidden))},e.toDisplayString(R[ie].text),5))),128))]))),128)),E.value[_]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",hn,e.toDisplayString(M.dataset)+" · "+e.toDisplayString(M.tree&&t.datasets?.[M.dataset]?.length?n.value.treeSampleHint:n.value.sampleRows),1))]),D(_)&&!g.value&&!V(_)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(Z(M),(R,W)=>(e.openBlock(),e.createElementBlock("span",{key:W,class:"mr-canvas-column-handle","aria-label":`${n.value.resizeColumn} ${M.columns[W]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${R*e.unref(u)}px`}),onPointerdown:te=>G(te,M,W)},null,44,yn))),128)):e.createCommentVNode("",!0)],64)):M.grid?(e.openBlock(),e.createElementBlock("div",bn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I(M),(R,W)=>(e.openBlock(),e.createElementBlock("div",{key:W,style:e.normalizeStyle({left:`${R.xMm*e.unref(u)}px`,top:`${R.yMm*e.unref(u)}px`,width:`${R.widthMm*e.unref(u)}px`,height:`${R.heightMm*e.unref(u)}px`,backgroundColor:R.cell.style?.backgroundColor,color:R.cell.style?.color,fontWeight:R.cell.style?.bold?"700":"400",fontSize:`${e.unref(Fe.resolveFontSize)(R.cell.style).fontSizePx*e.unref(c)}px`,textAlign:R.cell.style?.align??"left"})},e.toDisplayString(R.cell.text),5))),128)),M.grid.cells.reduce((R,W)=>R+W.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",kn,e.toDisplayString(n.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):(M.kind==="barcode"||M.kind==="qrcode")&&!d.value[_]?.image?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["mr-canvas-code",{"is-error":d.value[_]?.error}]),title:d.value[_]?.error??n.value.codePreviewHint},[T[13]||(T[13]=e.createElementVNode("svg",{viewBox:"0 0 32 24","aria-hidden":"true"},[e.createElementVNode("rect",{x:"3",y:"3",width:"26",height:"18",rx:"2"}),e.createElementVNode("path",{d:"M10 8 6 12l4 4m12-8 4 4-4 4m-8 2 4-12"})],-1)),e.createElementVNode("strong",null,e.toDisplayString(M.kind==="qrcode"?n.value.insertQrcode:(M.code?.symbology??"code128").toUpperCase()),1),e.createElementVNode("span",null,e.toDisplayString(d.value[_]?.text||n.value.codePlaceholder),1),d.value[_]?.bound?(e.openBlock(),e.createElementBlock("small",Sn,e.toDisplayString(M.binding?.field),1)):e.createCommentVNode("",!0)],10,En)):d.value[_]?.image?(e.openBlock(),e.createElementBlock("img",{key:3,src:d.value[_]?.image,alt:"",draggable:"false"},null,8,Nn)):(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass(["mr-canvas-content",{"is-binding-error":d.value[_]?.error,"is-bound-image":M.kind==="image"&&M.binding}]),title:d.value[_]?.error==="image-binding"?n.value.bindingImageHint:d.value[_]?.error,style:e.normalizeStyle({color:M.style?.color,backgroundColor:M.style?.backgroundColor,fontWeight:M.style?.bold?"700":"400",fontSize:`${e.unref(Fe.resolveFontSize)(M.style).fontSizePx*e.unref(c)}px`,textAlign:M.style?.align,justifyContent:M.style?.verticalAlign==="bottom"?"flex-end":M.style?.verticalAlign==="middle"?"center":"flex-start"})},e.toDisplayString(d.value[_]?.text||(M.kind==="rect"?"":M.kind==="image"&&M.binding?n.value.boundImagePlaceholder:"")),15,wn)),D(_)&&!g.value&&!V(_)?(e.openBlock(),e.createElementBlock("span",{key:5,class:"mr-canvas-resize","aria-label":n.value.resizeComponent,role:"separator",onPointerdown:R=>e.unref(x).start(R,M,!0)},null,40,Vn)):e.createCommentVNode("",!0)],46,pn))),128))],4)],544),e.unref(k)?(e.openBlock(),e.createElementBlock("footer",xn,[e.createElementVNode("span",null,e.toDisplayString(n.value.wideNavigation),1),e.createElementVNode("input",{type:"range",min:"0",max:"100",value:e.unref(S),"aria-label":n.value.wideNavigation,onInput:T[6]||(T[6]=M=>e.unref(h)(Number(M.target.value)))},null,40,Cn),e.createElementVNode("span",null,e.toDisplayString(e.unref(S))+"%",1)])):e.createCommentVNode("",!0)]))}}),Mn=Y._export_sfc(Bn,[["__scopeId","data-v-c512529e"]]),Dn={class:"mr-component-binding"},Tn=["value","disabled"],$n={value:"static"},In=["disabled"],Rn={key:0,class:"mr-binding-hint"},_n=["value","disabled"],Ln=["value"],Pn={key:0,class:"mr-binding-grid"},An=["value","disabled"],Fn={value:"natural"},Hn={value:"number"},On={value:"percent"},zn={value:"date"},Gn={key:0},jn=["value","disabled"],qn={key:1},Wn=["value","disabled"],Un={key:1},Jn={class:"mr-binding-grid"},Kn=["value","disabled"],Yn=["value","disabled"],Xn=["value","disabled"],Zn={class:"mr-binding-hint"},Qn=e.defineComponent({__name:"ComponentDataBinding",props:{component:{},repeat:{},schema:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.computed(()=>o.component.binding),c=`mr-component-fields-${e.getCurrentInstance()?.uid??0}`;function u(b){return b.target.value}function m(b){!o.disabled&&r.value&&a("change",{...r.value,...b})}function k(b){o.disabled||(u(b)==="static"?a("change",void 0):o.repeat&&a("change",{field:o.schema?.fields[0]?.field??"value"}))}function S(b){if(!r.value||o.disabled)return;const N={...r.value},h=u(b);h==="natural"?delete N.format:N.format=h==="date"?{kind:"date",pattern:"YYYY-MM-DD"}:{kind:h,digits:2},a("change",N)}function p(b){const N=u(b),h=r.value?.format;N.trim()&&h&&h.kind!=="date"&&m({format:{...h,digits:Number(N)}})}return(b,N)=>(e.openBlock(),e.createElementBlock("div",Dn,[e.createElementVNode("h3",null,e.toDisplayString(n.value.componentContent),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.contentSource),1),e.createElementVNode("select",{value:r.value?"field":"static",disabled:t.disabled,onChange:k},[e.createElementVNode("option",$n,e.toDisplayString(n.value.staticContent),1),e.createElementVNode("option",{value:"field",disabled:!t.repeat},e.toDisplayString(n.value.recordField),9,In)],40,Tn)]),t.repeat?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Rn,e.toDisplayString(n.value.bindingNeedsRepeat),1)),r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.bindingField),1),e.createElementVNode("input",{value:r.value.field,list:c,disabled:t.disabled,onChange:N[0]||(N[0]=h=>u(h).trim()&&m({field:u(h).trim()}))},null,40,_n)]),e.createElementVNode("datalist",{id:c},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.schema?.fields??[],h=>(e.openBlock(),e.createElementBlock("option",{key:h.field,value:h.field},e.toDisplayString(h.label),9,Ln))),128))]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Pn,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valueFormat),1),e.createElementVNode("select",{value:r.value.format?.kind??"natural",disabled:t.disabled,onChange:S},[e.createElementVNode("option",Fn,e.toDisplayString(n.value.naturalFormat),1),e.createElementVNode("option",Hn,e.toDisplayString(n.value.numberFormat),1),e.createElementVNode("option",On,e.toDisplayString(n.value.percentFormat),1),e.createElementVNode("option",zn,e.toDisplayString(n.value.dateFormat),1)],40,An)]),r.value.format&&r.value.format.kind!=="date"?(e.openBlock(),e.createElementBlock("label",Gn,[e.createTextVNode(e.toDisplayString(n.value.decimalPlaces),1),e.createElementVNode("input",{type:"number",min:"0",max:"100",step:"1",value:r.value.format.digits??2,disabled:t.disabled,onChange:p},null,40,jn)])):r.value.format?.kind==="date"?(e.openBlock(),e.createElementBlock("label",qn,[e.createTextVNode(e.toDisplayString(n.value.datePattern),1),e.createElementVNode("input",{value:r.value.format.pattern??"YYYY-MM-DD",disabled:t.disabled,onChange:N[1]||(N[1]=h=>m({format:{kind:"date",pattern:u(h)}}))},null,40,Wn)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),t.component.kind!=="image"?(e.openBlock(),e.createElementBlock("details",Un,[e.createElementVNode("summary",null,e.toDisplayString(n.value.bindingDecoration),1),e.createElementVNode("div",Jn,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valuePrefix),1),e.createElementVNode("input",{value:r.value.prefix??"",disabled:t.disabled,onChange:N[2]||(N[2]=h=>m({prefix:u(h)}))},null,40,Kn)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valueSuffix),1),e.createElementVNode("input",{value:r.value.suffix??"",disabled:t.disabled,onChange:N[3]||(N[3]=h=>m({suffix:u(h)}))},null,40,Yn)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.emptyValueText),1),e.createElementVNode("input",{value:r.value.emptyText??"",disabled:t.disabled,onChange:N[4]||(N[4]=h=>m({emptyText:u(h)}))},null,40,Xn)])])):e.createCommentVNode("",!0),e.createElementVNode("p",Zn,e.toDisplayString(t.repeat?.dataset)+" · "+e.toDisplayString(t.component.kind==="image"?n.value.bindingImageHint:n.value.bindingRecordHint),1)],64)):e.createCommentVNode("",!0)]))}}),eo=Y._export_sfc(Qn,[["__scopeId","data-v-4558f265"]]),to={class:"mr-code-properties"},no={key:0},oo=["value","disabled"],ao={key:1},lo=["value","disabled"],ro={key:2,class:"mr-code-checkbox"},io=["checked","disabled"],so={class:"mr-code-advanced"},co={class:"mr-code-grid"},uo={key:0},mo=["value","disabled"],po=["min","value","disabled"],fo={key:0},vo=e.defineComponent({__name:"CodeComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.computed(()=>o.component.kind==="qrcode"?4:o.component.code?.symbology?.startsWith("ean")?11:10);function c(k){return k.target.value}function u(k){o.disabled||a("change",{...o.component.code,...k})}function m(k){const S=c(k);u({symbology:S,quietZoneModules:S.startsWith("ean")?11:10})}return(k,S)=>(e.openBlock(),e.createElementBlock("div",to,[e.createElementVNode("h3",null,e.toDisplayString(n.value.codeSettings),1),t.component.binding?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("label",no,[e.createTextVNode(e.toDisplayString(n.value.codeValue),1),e.createElementVNode("textarea",{rows:"2",value:t.component.code?.value??t.component.fallbackText??t.component.text??"",disabled:t.disabled,onChange:S[0]||(S[0]=p=>u({value:c(p)}))},null,40,oo)])),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",ao,[e.createTextVNode(e.toDisplayString(n.value.codeSymbology),1),e.createElementVNode("select",{value:t.component.code?.symbology??"code128",disabled:t.disabled,onChange:m},[...S[4]||(S[4]=[e.createElementVNode("option",{value:"code128"},"Code 128",-1),e.createElementVNode("option",{value:"code39"},"Code 39",-1),e.createElementVNode("option",{value:"ean13"},"EAN-13",-1),e.createElementVNode("option",{value:"ean8"},"EAN-8",-1)])],40,lo)])):e.createCommentVNode("",!0),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",ro,[e.createElementVNode("input",{type:"checkbox",checked:t.component.code?.showText===!0,disabled:t.disabled,onChange:S[1]||(S[1]=p=>u({showText:p.target.checked}))},null,40,io),e.createTextVNode(e.toDisplayString(n.value.codeShowText),1)])):e.createCommentVNode("",!0),e.createElementVNode("details",so,[e.createElementVNode("summary",null,e.toDisplayString(n.value.codeAdvancedSettings),1),e.createElementVNode("div",co,[t.component.kind==="qrcode"?(e.openBlock(),e.createElementBlock("label",uo,[e.createTextVNode(e.toDisplayString(n.value.codeCorrection),1),e.createElementVNode("select",{value:t.component.code?.errorCorrection??"M",disabled:t.disabled,onChange:S[2]||(S[2]=p=>u({errorCorrection:c(p)}))},[...S[5]||(S[5]=[e.createElementVNode("option",{value:"L"},"L · 7%",-1),e.createElementVNode("option",{value:"M"},"M · 15%",-1),e.createElementVNode("option",{value:"Q"},"Q · 25%",-1),e.createElementVNode("option",{value:"H"},"H · 30%",-1)])],40,mo)])):e.createCommentVNode("",!0),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.codeQuietZone),1),e.createElementVNode("input",{type:"number",min:r.value,max:"64",step:"1",value:t.component.code?.quietZoneModules??r.value,disabled:t.disabled,onChange:S[3]||(S[3]=p=>c(p).trim()&&u({quietZoneModules:Number(c(p))}))},null,40,po)])]),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("p",fo,e.toDisplayString(t.component.code?.symbology?.startsWith("ean")?n.value.eanContentHint:t.component.code?.symbology==="code39"?n.value.code39ContentHint:n.value.code128ContentHint),1)):e.createCommentVNode("",!0),e.createElementVNode("p",null,e.toDisplayString(n.value.codePreviewHint),1)])]))}}),go=Y._export_sfc(vo,[["__scopeId","data-v-907fe45a"]]),ho=["aria-label"],yo=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],bo={key:0},ko={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},Eo={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},So={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},No={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},wo={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},Vo=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,a=l,n=()=>o.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function r(c,u){if(!["ArrowLeft","ArrowRight","Home","End"].includes(c.key))return;c.preventDefault();const k=n(),S=k.indexOf(u),p=c.key==="Home"?0:c.key==="End"?k.length-1:(S+(c.key==="ArrowRight"?1:-1)+k.length)%k.length;a("update:modelValue",k[p]);const b=c.currentTarget.parentElement;await e.nextTick(),b?.querySelector(`[data-align="${k[p]}"]`)?.focus()}return(c,u)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-designer-alignment",role:"radiogroup","aria-label":t.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n(),m=>(e.openBlock(),e.createElementBlock("button",{key:m,type:"button",role:"radio","data-align":m,"aria-label":t.labels[m],title:t.labels[m],"aria-checked":t.modelValue===m,tabindex:t.modelValue===m?0:-1,onClick:k=>a("update:modelValue",m),onKeydown:k=>r(k,m)},[m==="auto"?(e.openBlock(),e.createElementBlock("span",bo,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",ko,[m==="left"?(e.openBlock(),e.createElementBlock("path",Eo)):m==="center"?(e.openBlock(),e.createElementBlock("path",So)):m==="right"?(e.openBlock(),e.createElementBlock("path",No)):(e.openBlock(),e.createElementBlock("path",wo))]))],40,yo))),128))],8,ho))}}),Ze=Y._export_sfc(Vo,[["__scopeId","data-v-c85770c4"]]),xo=["disabled"],Co={class:"mr-component-content"},Bo={key:1},Mo=["value"],Do=["value"],To={class:"mr-component-upload"},$o=["aria-label"],Io={key:0,role:"alert"},Ro={key:4},_o=["value"],Lo={key:0,class:"mr-component-type"},Po={class:"mr-component-dimensions"},Ao=["value"],Fo=["checked"],Ho={class:"mr-component-dimensions"},Oo=["value"],zo=["value"],Go=["open"],jo={class:"mr-component-dimensions"},qo=["min","value","disabled","onChange"],Wo={key:0},Uo=["value","disabled"],Jo={value:""},Ko={value:"header"},Yo={value:"footer"},Xo=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},repeat:{},schema:{},messages:{}},emits:["geometry","patch"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.ref(""),c=["leftMm","topMm","widthMm","heightMm"],u=e.computed(()=>[n.value.leftPosition,n.value.topPosition,n.value.componentWidth,n.value.componentHeight]);function m(N,h){if(o.disabled||o.geometryDisabled)return;const g=Number(h.target.value);if(!Number.isFinite(g))return;const E={...ce(o.component),[N]:g};o.component.kind==="qrcode"&&(N==="widthMm"||N==="heightMm")&&(E.widthMm=E.heightMm=g),a("geometry",E)}function k(N,h){if(o.component.kind==="list")return;const g={...o.component.style,[N]:h};N==="fontSize"&&delete g.fontSizePx,a("patch",{style:g})}const S=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));function p(N){return N.target.value}async function b(N){const h=N.target,g=h.files?.[0];if(!g)return;r.value="";const E=o.component;try{if(g.size>4*1024*1024||!["image/png","image/jpeg","image/webp","image/svg+xml"].includes(g.type))throw new Error(n.value.imageBudget);const d=new FileReader,v=await new Promise((w,$)=>{d.onload=()=>w(String(d.result)),d.onerror=()=>$(d.error),d.readAsDataURL(g)});!o.disabled&&o.component===E&&a("patch",{imageData:v})}catch(d){r.value=d instanceof Error?d.message:String(d)}finally{h.value=""}}return(N,h)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("div",Co,[["text","image","barcode","qrcode"].includes(t.component.kind)&&t.component.kind!=="list"&&!t.component.grid?(e.openBlock(),e.createBlock(eo,{key:0,component:t.component,repeat:t.repeat,schema:t.schema,disabled:t.disabled,messages:n.value,onChange:h[0]||(h[0]=g=>a("patch",{binding:g,...["barcode","qrcode"].includes(t.component.kind)?{imageData:void 0}:{}}))},null,8,["component","repeat","schema","disabled","messages"])):e.createCommentVNode("",!0),t.component.kind==="text"&&!t.component.binding?(e.openBlock(),e.createElementBlock("label",Bo,[e.createTextVNode(e.toDisplayString(n.value.componentText),1),e.createElementVNode("textarea",{rows:"3",value:t.component.text,onChange:h[1]||(h[1]=g=>a("patch",{text:p(g)}))},null,40,Mo)])):e.createCommentVNode("",!0),t.component.kind==="image"&&!t.component.binding?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:h[2]||(h[2]=g=>a("patch",{imageData:p(g)}))},null,40,Do)]),e.createElementVNode("label",To,[e.createTextVNode(e.toDisplayString(n.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg,image/webp,image/svg+xml","aria-label":n.value.imageUpload,onChange:b},null,40,$o)]),r.value?(e.openBlock(),e.createElementBlock("p",Io,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="barcode"||t.component.kind==="qrcode"?(e.openBlock(),e.createBlock(go,{key:3,component:t.component,disabled:t.disabled,messages:n.value,onChange:h[3]||(h[3]=g=>a("patch",{code:g,imageData:void 0}))},null,8,["component","disabled","messages"])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",Ro,[e.createTextVNode(e.toDisplayString(n.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:h[4]||(h[4]=g=>a("patch",{dataset:p(g)}))},null,40,_o)])):e.createCommentVNode("",!0)]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Lo,[e.createElementVNode("h3",null,e.toDisplayString(n.value.textFormat),1),e.createElementVNode("div",Po,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(Fe.resolveFontSize)(t.component.style).fontSizePt,onChange:h[5]||(h[5]=g=>k("fontSize",Number(p(g))))},null,40,Ao)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:h[6]||(h[6]=g=>k("bold",g.target.checked))},null,40,Fo)])]),e.createVNode(Ze,{"model-value":t.component.style?.align??"left",label:n.value.bodyAlign,labels:S.value,"auto-label":n.value.autoShort,"onUpdate:modelValue":h[7]||(h[7]=g=>k("align",g))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",Ho,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:h[8]||(h[8]=g=>k("color",p(g)))},null,40,Oo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:h[9]||(h[9]=g=>k("backgroundColor",p(g)))},null,40,zo)])])])):e.createCommentVNode("",!0),e.createElementVNode("details",{class:"mr-component-position",open:!t.repeat},[e.createElementVNode("summary",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.positionGroup),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ce)(t.component).widthMm)+" × "+e.toDisplayString(e.unref(ce)(t.component).heightMm),1)]),e.createElementVNode("div",jo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.filter(g=>t.component.kind!=="list"||g!=="heightMm"),(g,E)=>(e.openBlock(),e.createElementBlock("label",{key:g},[e.createTextVNode(e.toDisplayString(u.value[E]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:g==="widthMm"||g==="heightMm"?2:0,value:e.unref(ce)(t.component)[g],disabled:t.geometryDisabled,onChange:d=>m(g,d)},null,40,qo)]))),128))]),t.component.kind!=="list"&&!t.repeat?(e.openBlock(),e.createElementBlock("label",Wo,[e.createTextVNode(e.toDisplayString(n.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",disabled:t.geometryDisabled,onChange:h[10]||(h[10]=g=>a("patch",{pageAnchor:p(g)||void 0}))},[e.createElementVNode("option",Jo,e.toDisplayString(n.value.repeatNone),1),e.createElementVNode("option",Ko,e.toDisplayString(n.value.repeatHeader),1),e.createElementVNode("option",Yo,e.toDisplayString(n.value.repeatFooter),1)],40,Uo)])):e.createCommentVNode("",!0)],8,Go)],8,xo))}}),Zo=Y._export_sfc(Xo,[["__scopeId","data-v-435b5126"]]),Qo=["disabled"],ea={class:"mr-page-section-heading"},ta=["aria-label"],na=["aria-pressed","onClick"],oa={class:"mr-page-actions"},aa=["disabled"],la={key:0,class:"mr-page-confirm",role:"alert"},ra=["value","placeholder"],ia=["value"],sa=["value"],ca={value:"custom"},da={class:"mr-page-grid"},ua=["value"],ma=["value"],pa=["value"],fa={value:"page"},va=["disabled"],ga={class:"mr-page-grid"},ha=["value","onChange"],ya={key:1,class:"mr-page-overflow",role:"status"},ba=e.defineComponent({__name:"TemplatePageInspector",props:{document:{},pageIndex:{},disabled:{type:Boolean},messages:{}},emits:["select","command","locate"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.computed(()=>o.document.template.pages[o.pageIndex]),c=e.computed(()=>Ye.find(E=>E.widthMm===r.value.widthMm&&E.heightMm===r.value.heightMm)?.id??"custom"),u=e.computed(()=>ft(r.value)),m=e.ref(!1);e.watch(()=>[o.pageIndex,o.document],()=>{m.value=!1});const k=["marginTopMm","marginRightMm","marginBottomMm","marginLeftMm"],S=e.computed(()=>[n.value.marginTop,n.value.marginRight,n.value.marginBottom,n.value.marginLeft]);function p(E){return E.target.value}function b(E){o.disabled||a("command",{type:"patch",patch:E})}function N(E){const d=Ye.find(v=>v.id===p(E));d&&b({widthMm:d.widthMm,heightMm:d.heightMm,layout:"page"})}function h(E,d){const v=p(d);v.trim()&&Number.isFinite(Number(v))&&b({[E]:Number(v)})}function g(){if(!(o.disabled||o.document.template.pages.length<=1)){if(r.value.components.length&&!m.value){m.value=!0;return}a("command",{type:"remove"}),m.value=!1}}return(E,d)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-page-properties",disabled:t.disabled},[e.createElementVNode("div",ea,[e.createElementVNode("h3",null,e.toDisplayString(n.value.paperAndPages),1),e.createElementVNode("span",null,e.toDisplayString(r.value.widthMm)+" × "+e.toDisplayString(r.value.heightMm)+" mm",1)]),e.createElementVNode("div",{class:"mr-page-list","aria-label":n.value.pageDirectory},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.document.template.pages,(v,w)=>(e.openBlock(),e.createElementBlock("button",{key:w,type:"button","aria-pressed":t.pageIndex===w,onClick:$=>a("select",w)},[e.createElementVNode("span",null,e.toDisplayString(w+1),1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(De)(v,w,n.value.page)),1),e.createElementVNode("small",null,e.toDisplayString(v.widthMm)+" × "+e.toDisplayString(v.heightMm),1)],8,na))),128))],8,ta),e.createElementVNode("div",oa,[e.createElementVNode("button",{type:"button",onClick:d[0]||(d[0]=v=>a("command",{type:"add"}))},"+ "+e.toDisplayString(n.value.addPage),1),e.createElementVNode("button",{type:"button",onClick:d[1]||(d[1]=v=>a("command",{type:"duplicate"}))},e.toDisplayString(n.value.duplicatePage),1),e.createElementVNode("button",{type:"button",disabled:t.disabled||t.document.template.pages.length<=1,onClick:g},e.toDisplayString(n.value.removePage),9,aa)]),m.value?(e.openBlock(),e.createElementBlock("div",la,[e.createElementVNode("span",null,e.toDisplayString(n.value.removePageConfirm),1),e.createElementVNode("button",{type:"button",onClick:d[2]||(d[2]=v=>m.value=!1)},e.toDisplayString(n.value.keepEditing),1),e.createElementVNode("button",{type:"button",onClick:g},e.toDisplayString(n.value.confirmRemovePage),1)])):e.createCommentVNode("",!0),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.pageName),1),e.createElementVNode("input",{value:r.value.meta?.title??"",placeholder:`${n.value.page} ${t.pageIndex+1}`,maxlength:"120",onChange:d[3]||(d[3]=v=>b({meta:{...r.value.meta,title:p(v)}}))},null,40,ra)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperPreset),1),e.createElementVNode("select",{value:c.value,onChange:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ye),v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.id.startsWith("label")?n.value.labelPaper:v.id.toUpperCase())+" · "+e.toDisplayString(v.widthMm)+" × "+e.toDisplayString(v.heightMm)+" mm",9,sa))),128)),e.createElementVNode("option",ca,e.toDisplayString(n.value.customPaper),1)],40,ia)]),e.createElementVNode("div",da,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperWidth),1),e.createElementVNode("input",{type:"number",min:"1",step:"0.5",value:r.value.widthMm,onChange:d[4]||(d[4]=v=>h("widthMm",v))},null,40,ua)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperHeight),1),e.createElementVNode("input",{type:"number",min:"1",max:"4999",step:"0.5",value:r.value.heightMm,onChange:d[5]||(d[5]=v=>h("heightMm",v))},null,40,ma)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.pageLayout),1),e.createElementVNode("select",{value:r.value.layout??"page",onChange:d[6]||(d[6]=v=>b({layout:p(v)}))},[e.createElementVNode("option",fa,e.toDisplayString(n.value.fixedPaper),1),e.createElementVNode("option",{value:"wide",disabled:!!t.document.template.repeat},e.toDisplayString(n.value.completeWide),9,va)],40,pa)]),e.createElementVNode("details",null,[e.createElementVNode("summary",null,e.toDisplayString(n.value.pageMargins),1),e.createElementVNode("div",ga,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,(v,w)=>e.createElementVNode("label",{key:v},[e.createTextVNode(e.toDisplayString(S.value[w]),1),e.createElementVNode("input",{type:"number",min:"0",step:"0.5",value:r.value[v]??0,onChange:$=>h(v,$)},null,40,ha)])),64))])]),u.value.length?(e.openBlock(),e.createElementBlock("div",ya,[e.createElementVNode("strong",null,e.toDisplayString(n.value.pageOverflow.replace("{count}",String(u.value.length))),1),e.createElementVNode("p",null,e.toDisplayString(n.value.pageOverflowHint),1),e.createElementVNode("button",{type:"button",onClick:d[7]||(d[7]=v=>a("locate",u.value[0]))},e.toDisplayString(n.value.locateOverflow),1)])):e.createCommentVNode("",!0)],8,Qo))}}),ka=Y._export_sfc(ba,[["__scopeId","data-v-da0b7ab6"]]),Ea=["disabled"],Sa={class:"mr-repeat-toggle"},Na=["checked","disabled"],wa=["value","list"],Va=["id"],xa=["value"],Ca=["value"],Ba=["value"],Ma={class:"mr-repeat-grid"},Da=["value"],Ta={value:"fixed"},$a={value:"field"},Ia={key:0},Ra=["value"],_a={key:1},La=["value"],Pa={class:"mr-repeat-note"},Aa=e.defineComponent({__name:"TemplateRepeatInspector",props:{document:{},datasets:{},schemas:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.computed(()=>o.document.template.repeat),c=e.computed(()=>o.schemas?.[r.value?.dataset??""]?.fields??[]),u=e.computed(()=>[...new Set([...o.datasets??[],...Object.keys(o.schemas??{}),...r.value?[r.value.dataset]:[]])]),m=e.computed(()=>o.document.template.pages.some(d=>d.components.some(v=>v.kind!=="list"&&v.binding))),k=e.computed(()=>o.document.template.pages.some(d=>d.layout==="wide"||!!d.flow||d.components.some(v=>v.kind==="list")||ft(d).length>0)),S=e.computed(()=>typeof r.value?.copies=="object"?"field":"fixed"),p=`mr-repeat-fields-${e.getCurrentInstance()?.uid??0}`;function b(d){return d.target.value}function N(d){!o.disabled&&r.value&&a("change",{...r.value,...d})}function h(d){o.disabled||(d.target.checked?k.value||a("change",{dataset:u.value[0]??"detail",copies:1}):m.value||a("change",void 0))}function g(d){if(!r.value||o.disabled)return;const v={...r.value},w=b(d).trim();w?v.rowKey=w:delete v.rowKey,a("change",v)}function E(d){N({copies:b(d)==="field"?{field:c.value.find(v=>v.type==="number")?.field??"copies"}:1})}return(d,v)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-repeat-properties",disabled:t.disabled},[e.createElementVNode("label",Sa,[e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.repeatRecords),1),e.createElementVNode("small",null,e.toDisplayString(k.value?n.value.repeatNeedsFixed:n.value.repeatRecordsHint),1)]),e.createElementVNode("input",{type:"checkbox",checked:!!r.value,disabled:t.disabled||!!r.value&&m.value||!r.value&&k.value,onChange:h},null,40,Na)]),r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.recordDataset),1),e.createElementVNode("input",{value:r.value.dataset,list:`${p}-datasets`,onChange:v[0]||(v[0]=w=>b(w).trim()&&N({dataset:b(w).trim()}))},null,40,wa)]),e.createElementVNode("datalist",{id:`${p}-datasets`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,w=>(e.openBlock(),e.createElementBlock("option",{key:w,value:w},null,8,xa))),128))],8,Va),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.recordRowKey),1),e.createElementVNode("input",{value:r.value.rowKey??"",list:p,onChange:g},null,40,Ca)]),e.createElementVNode("datalist",{id:p},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,w=>(e.openBlock(),e.createElementBlock("option",{key:w.field,value:w.field},e.toDisplayString(w.label),9,Ba))),128))]),e.createElementVNode("div",Ma,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.labelCopies),1),e.createElementVNode("select",{value:S.value,onChange:E},[e.createElementVNode("option",Ta,e.toDisplayString(n.value.fixedCopies),1),e.createElementVNode("option",$a,e.toDisplayString(n.value.fieldCopies),1)],40,Da)]),S.value==="fixed"?(e.openBlock(),e.createElementBlock("label",Ia,[e.createTextVNode(e.toDisplayString(n.value.copiesPerRecord),1),e.createElementVNode("input",{type:"number",min:"1",max:"1000",step:"1",value:r.value.copies??1,onChange:v[1]||(v[1]=w=>b(w).trim()&&N({copies:Number(b(w))}))},null,40,Ra)])):(e.openBlock(),e.createElementBlock("label",_a,[e.createTextVNode(e.toDisplayString(n.value.copiesField),1),e.createElementVNode("input",{value:typeof r.value.copies=="object"?r.value.copies.field:"",list:p,onChange:v[2]||(v[2]=w=>b(w).trim()&&N({copies:{field:b(w).trim()}}))},null,40,La)]))]),e.createElementVNode("p",Pa,e.toDisplayString(m.value?n.value.repeatBoundHint:n.value.repeatOrderHint),1)],64)):e.createCommentVNode("",!0)],8,Ea))}}),Fa=Y._export_sfc(Aa,[["__scopeId","data-v-de1ee031"]]),vt={outline:"结构大纲",search:"搜索版面、组件、字段或引用",noMatches:"没有匹配的结构项",more:"显示更多",usages:"引用位置",all:"全部结构",count:"项",page:"版面",component:"组件",field:"字段",calculation:"计算",binding:"绑定",reuse:"片段与样式",fragments:"可复用片段",styles:"内容样式",insert:"插入独立副本",update:"显式更新此片段",noFragments:"尚未配置片段库。可从当前组件保存会话片段,或通过 fragments 接入共享片段。",capture:"保存当前组件为片段",fragmentName:"片段名称",role:"样式角色",apply:"应用到当前组件",copy:"复制当前样式",paste:"粘贴样式",bindings:"重新绑定字段",dataset:"数据集",target:"目标字段",preserve:"副本独立保存;共享片段更新后不会改变已有模板。",select:"选择一个目标组件后应用样式",revision:"修订",instance:"已插入修订",newRevision:"存在可显式应用的新修订",noStyles:"使用内置内容样式,或通过 documentStyles 配置品牌样式。",nameRequired:"请填写片段名称",styleText:"标题",styleHeading:"表头",styleBody:"正文",styleNumber:"数值",styleNote:"说明",rename:"确认字段映射变化",renameHint:"以下位置仍引用原字段。继续仅修改当前列的映射,不会改写计算或业务字段。",continue:"确认更换映射",cancel:"取消",locate:"定位"},Ha=["aria-label"],Oa=["onClick"],za=["disabled"],Ga=["disabled"],ja=e.defineComponent({__name:"TemplateFieldImpactPanel",props:{change:{},messages:{},disabled:{type:Boolean}},emits:["confirm","cancel","locate"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...vt,...o.messages}));return(r,c)=>t.change?(e.openBlock(),e.createElementBlock("section",{key:0,class:"mr-impact",role:"alertdialog","aria-label":n.value.rename},[e.createElementVNode("strong",null,e.toDisplayString(n.value.rename),1),e.createElementVNode("code",null,e.toDisplayString(t.change.before)+" → "+e.toDisplayString(t.change.after),1),e.createElementVNode("p",null,e.toDisplayString(n.value.renameHint),1),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.change.references.slice(0,100),u=>(e.openBlock(),e.createElementBlock("li",{key:u.path},[e.createElementVNode("button",{type:"button",onClick:m=>a("locate",u)},e.toDisplayString(n.value.locate)+" · "+e.toDisplayString(u.path),9,Oa)]))),128))]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:c[0]||(c[0]=u=>a("cancel"))},e.toDisplayString(n.value.cancel),9,za),e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:c[1]||(c[1]=u=>a("confirm"))},e.toDisplayString(n.value.continue),9,Ga)])],8,Ha)):e.createCommentVNode("",!0)}}),qa=Y._export_sfc(ja,[["__scopeId","data-v-0813913f"]]),gt={available:"发现未保存草稿",restore:"恢复草稿",discard:"放弃草稿",stale:"草稿基线已变化,恢复后须核对最新版本再保存。",localOnly:"仅保存模板、JSON 与工具配置,不保存业务数据或 Excel 文件。",autosaved:"草稿已暂存",saving:"暂存中",storageError:"草稿暂存失败",conflict:"模板版本已变化",conflictHint:"本地修改已保留。核对差异后选择处理方式,不会自动合并或覆盖。",baseline:"共同基线",local:"本地修改",remote:"远端修改",changes:"处差异",path:"位置",before:"原值",after:"新值",empty:"没有差异",loadLatest:"读取最新版本",adopt:"采用最新版本",rebase:"保留本地内容,以最新版本为基线",confirm:"确认更新基线",confirmHint:"此操作保留完整本地内容,不合并远端改动;下次保存将以最新修订号校验。",keepCopy:"保留独立副本",copied:"副本已保留",revision:"修订",unknown:"未发布",close:"收起差异",review:"核对版本冲突",toolsNeedSource:"Excel 映射配置已恢复,请重新选择原文件后核对。"},Wa={key:0,class:"mr-recovery-banner",role:"status"},Ua={key:0},Ja={class:"mr-recovery-actions"},Ka=["disabled"],Ya={key:1,class:"mr-recovery-banner is-error",role:"alert"},Xa={class:"mr-recovery-actions"},Za={key:2,class:"mr-recovery-status",role:"status"},Qa={key:3,class:"mr-recovery-conflict",open:""},el={class:"mr-recovery-columns"},tl={key:0},nl={key:1},ol={key:0,role:"alert"},al={key:1,role:"status"},ll={class:"mr-recovery-actions"},rl=["disabled"],il=["disabled"],sl=["disabled"],cl=["disabled"],dl={key:2,class:"mr-recovery-confirm"},ul=["disabled"],ml=e.defineComponent({__name:"TemplateRecoveryPanel",props:{recovery:{},conflict:{},readonly:{type:Boolean},messages:{},canLoad:{type:Boolean},canCopy:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>({...gt,...l.messages}));return(a,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.recovery.available.value?(e.openBlock(),e.createElementBlock("div",Wa,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(o.value.available),1),e.createElementVNode("small",null,e.toDisplayString(t.recovery.available.value.savedAt)+" · "+e.toDisplayString(o.value.revision)+" "+e.toDisplayString(t.recovery.available.value.baseline.revision||o.value.unknown),1),t.recovery.stale.value?(e.openBlock(),e.createElementBlock("p",Ua,e.toDisplayString(o.value.stale),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ja,[e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:n[0]||(n[0]=(...r)=>t.recovery.restore&&t.recovery.restore(...r))},e.toDisplayString(o.value.restore),9,Ka),e.createElementVNode("button",{type:"button",onClick:n[1]||(n[1]=(...r)=>t.recovery.discard&&t.recovery.discard(...r))},e.toDisplayString(o.value.discard),1)])])):e.createCommentVNode("",!0),t.recovery.error.value?(e.openBlock(),e.createElementBlock("div",Ya,[e.createElementVNode("span",null,e.toDisplayString(o.value.storageError)+":"+e.toDisplayString(t.recovery.error.value),1),e.createElementVNode("div",Xa,[e.createElementVNode("button",{type:"button",onClick:n[2]||(n[2]=(...r)=>t.recovery.discard&&t.recovery.discard(...r))},e.toDisplayString(o.value.discard),1)])])):t.recovery.status.value!=="idle"?(e.openBlock(),e.createElementBlock("small",Za,e.toDisplayString(t.recovery.status.value==="saving"?o.value.saving:o.value.autosaved),1)):e.createCommentVNode("",!0),t.conflict.active.value?(e.openBlock(),e.createElementBlock("details",Qa,[e.createElementVNode("summary",null,e.toDisplayString(o.value.conflict),1),e.createElementVNode("p",null,e.toDisplayString(o.value.conflictHint),1),e.createElementVNode("div",el,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList([t.conflict.localChanges.value,t.conflict.remoteChanges.value],(r,c)=>(e.openBlock(),e.createElementBlock("section",{key:c},[e.createElementVNode("h4",null,[e.createTextVNode(e.toDisplayString(c?o.value.remote:o.value.local)+" ",1),e.createElementVNode("small",null,e.toDisplayString(r?.totalChanges??"—")+" "+e.toDisplayString(o.value.changes),1)]),r?.changes.length?(e.openBlock(),e.createElementBlock("table",tl,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,e.toDisplayString(o.value.path),1),e.createElementVNode("th",null,e.toDisplayString(o.value.before),1),e.createElementVNode("th",null,e.toDisplayString(o.value.after),1)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.changes,u=>(e.openBlock(),e.createElementBlock("tr",{key:`${u.kind}:${u.path}`},[e.createElementVNode("th",null,e.toDisplayString(u.path),1),e.createElementVNode("td",null,e.toDisplayString(u.before??"—"),1),e.createElementVNode("td",null,e.toDisplayString(u.after??"—"),1)]))),128))])])):(e.openBlock(),e.createElementBlock("p",nl,e.toDisplayString(o.value.empty),1))]))),128))]),t.conflict.error.value?(e.openBlock(),e.createElementBlock("p",ol,e.toDisplayString(t.conflict.error.value),1)):e.createCommentVNode("",!0),t.conflict.copied.value?(e.openBlock(),e.createElementBlock("p",al,e.toDisplayString(o.value.copied),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ll,[t.canLoad?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:t.conflict.busy.value,onClick:n[3]||(n[3]=(...r)=>t.conflict.load&&t.conflict.load(...r))},e.toDisplayString(o.value.loadLatest),9,rl)):e.createCommentVNode("",!0),t.canCopy?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[4]||(n[4]=(...r)=>t.conflict.keepCopy&&t.conflict.keepCopy(...r))},e.toDisplayString(o.value.keepCopy),9,il)):e.createCommentVNode("",!0),t.conflict.latest.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[5]||(n[5]=(...r)=>t.conflict.adoptLatest&&t.conflict.adoptLatest(...r))},e.toDisplayString(o.value.adopt),9,sl)):e.createCommentVNode("",!0),t.conflict.latest.value?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[6]||(n[6]=(...r)=>t.conflict.toggleRebase&&t.conflict.toggleRebase(...r))},e.toDisplayString(o.value.rebase),9,cl)):e.createCommentVNode("",!0)]),t.conflict.confirmRebase.value?(e.openBlock(),e.createElementBlock("div",dl,[e.createElementVNode("p",null,e.toDisplayString(o.value.confirmHint),1),e.createElementVNode("button",{type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[7]||(n[7]=(...r)=>t.conflict.rebase&&t.conflict.rebase(...r))},e.toDisplayString(o.value.confirm),9,ul)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],64))}}),pl=Y._export_sfc(ml,[["__scopeId","data-v-f02f2a53"]]),fl={class:"mr-header-editor"},vl=["disabled"],gl=["value"],hl=["value"],yl=["value"],bl=["disabled"],kl=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:l}){const o=t,a=l,n=e.computed(()=>({...me,...o.messages})),r=e.ref(0),c=e.ref(0),u=e.ref(Math.min(1,o.list.columns.length-1));return e.watch(()=>o.list.columns.length,m=>{c.value=Math.min(c.value,m-1),u.value=Math.min(u.value,m-1)}),(m,k)=>(e.openBlock(),e.createElementBlock("details",fl,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(n.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":k[0]||(k[0]=S=>r.value=S)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,S=>(e.openBlock(),e.createElementBlock("option",{key:S,value:S-1},e.toDisplayString(S),9,gl))),128))],512),[[e.vModelSelect,r.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":k[1]||(k[1]=S=>c.value=S)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(S,p)=>(e.openBlock(),e.createElementBlock("option",{key:p,value:p},e.toDisplayString(p+1)+" · "+e.toDisplayString(S.header),9,hl))),128))],512),[[e.vModelSelect,c.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":k[2]||(k[2]=S=>u.value=S)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(S,p)=>(e.openBlock(),e.createElementBlock("option",{key:p,value:p},e.toDisplayString(p+1)+" · "+e.toDisplayString(S.header),9,yl))),128))],512),[[e.vModelSelect,u.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:k[3]||(k[3]=S=>a("command",{action:"add",row:r.value,first:c.value,last:u.value}))},e.toDisplayString(n.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:c.value>=u.value,onClick:k[4]||(k[4]=S=>a("command",{action:"merge",row:r.value,first:c.value,last:u.value}))},e.toDisplayString(n.value.mergeHeader),9,bl),e.createElementVNode("button",{type:"button",onClick:k[5]||(k[5]=S=>a("command",{action:"split",row:r.value,first:c.value,last:u.value}))},e.toDisplayString(n.value.splitHeader),1)])],8,vl)]))}}),El=Y._export_sfc(kl,[["__scopeId","data-v-acd607ef"]]),fe=t=>`${t.pageIndex}:${t.componentIndex}`;function Sl(t,l,o){const a=e.ref([]),n=e.ref(new Set);e.watch(()=>t.value.id,()=>{a.value=[],n.value=new Set});const r=b=>!!b&&n.value.has(fe(b));function c(b){const N={pageIndex:b.pageIndex,componentIndex:b.componentIndex};if(b.additive&&a.value.every(h=>h.pageIndex===b.pageIndex)){const h=a.value.some(g=>fe(g)===fe(b));a.value=h?a.value.filter(g=>fe(g)!==fe(b)):[...a.value,N],l.value=h?a.value.at(-1):N}else a.value=[N],l.value=N}const u=e.computed(()=>a.value.filter(b=>!r(b)));function m(){const b=new Set(n.value),N=a.value.every(r);for(const h of a.value)N?b.delete(fe(h)):b.add(fe(h));n.value=b}function k(b){u.value.length<2||o(N=>{const h=u.value.map($=>he(N,$)).filter(Boolean),g=h.map(ce),E=Math.min(...g.map($=>$.leftMm)),d=Math.min(...g.map($=>$.topMm)),v=Math.max(...g.map($=>$.leftMm+$.widthMm)),w=Math.max(...g.map($=>$.topMm+$.heightMm));h.forEach(($,B)=>{const V=g[B],y={left:E,center:(E+v-V.widthMm)/2,right:v-V.widthMm},x={top:d,middle:(d+w-V.heightMm)/2,bottom:w-V.heightMm};b in y?V.leftMm=y[b]:V.topMm=x[b],Me($,V)})})}function S(b){u.value.length<3||o(N=>{const h=b==="horizontal"?"leftMm":"topMm",g=b==="horizontal"?"widthMm":"heightMm",E=u.value.map(B=>({component:he(N,B),box:ce(he(N,B))})).sort((B,V)=>B.box[h]-V.box[h]),d=E[0].box[h],w=(Math.max(...E.map(B=>B.box[h]+B.box[g]))-d-E.reduce((B,V)=>B+V.box[g],0))/(E.length-1);let $=d;for(const B of E)B.box[h]=$,Me(B.component,B.box),$+=B.box[g]+w})}function p(b,N,h){function g(E){if(E.pageIndex!==b)return E;const d=E.componentIndex;return h===void 0?d===N?void 0:{...E,componentIndex:d>N?d-1:d}:{...E,componentIndex:d===N?h:d===h?N:d}}n.value=new Set([...n.value].flatMap(E=>{const[d,v]=E.split(":").map(Number),w=g({pageIndex:d,componentIndex:v});return w?[fe(w)]:[]})),a.value=a.value.flatMap(E=>{const d=g(E);return d?[d]:[]})}return{clearLocks:()=>{n.value=new Set},selections:a,locked:r,allLocked:e.computed(()=>!!a.value.length&&a.value.every(r)),toggleLock:m,align:k,distribute:S,select:c,remap:p}}function Nl(t,l){const o=e.ref("preview"),a=e.ref(),n=e.ref(0),r=e.computed(()=>!!t.value.template.pages[a.value?.pageIndex??n.value]?.flow),c=Sl(t,a,g=>r.value?!1:l(g)),u=e.computed(()=>he(t.value,a.value));e.watch(n,g=>{a.value?.pageIndex!==g&&(a.value=void 0,c.selections.value=[])}),e.watch(t,()=>{u.value||(a.value=void 0),c.selections.value=c.selections.value.filter(g=>!!he(t.value,g)),t.value.template.pages[n.value]||(n.value=0)});function m(g){c.select(g),n.value=g.pageIndex}function k(g){const E=a.value;return!E||c.locked(E)?!1:l(d=>{const v=he(d,E);v&&g(v,d)})}function S(g){r.value||k((E,d)=>{const v=d.template.pages[a.value.pageIndex];Me(E,He(g,v,E.kind==="list"))})}function p(g){if(t.value.template.pages[n.value]?.flow||g==="list"&&t.value.template.repeat)return;let E=-1;const d=n.value;l(v=>{const w=v.template.pages[d].components,$=It(g);Me($,He(ce($),v.template.pages[d],$.kind==="list")),$.kind==="qrcode"&&($.widthMm=$.heightMm=Math.min($.widthMm,$.heightMm)),w.push($),E=w.length-1})&&m({pageIndex:d,componentIndex:E})}function b(){if(r.value)return;const g=a.value;g&&!c.locked(g)&&l(E=>{E.template.pages[g.pageIndex].components.splice(g.componentIndex,1)})&&(c.remap(g.pageIndex,g.componentIndex),a.value=void 0)}function N(){if(r.value)return;const g=a.value;if(!g)return;let E=-1;l(d=>{const v=d.template.pages[g.pageIndex],w=JSON.parse(JSON.stringify(he(d,g))),$=ce(w);$.leftMm+=4,$.topMm+=4,Me(w,He($,v,w.kind==="list")),w.kind==="list"?delete w.id:(delete w.nid,delete w.rkey),v.components.push(w),E=v.components.length-1})&&m({pageIndex:g.pageIndex,componentIndex:E})}function h(g){if(r.value)return;const E=a.value;if(!E||c.locked(E))return;const d=E.componentIndex+g;t.value.template.pages[E.pageIndex]?.components[d]&&l(v=>{const w=v.template.pages[E.pageIndex].components;w.splice(d,0,w.splice(E.componentIndex,1)[0])})&&(c.remap(E.pageIndex,E.componentIndex,d),m({pageIndex:E.pageIndex,componentIndex:d}))}return{...c,mode:o,selection:a,pageIndex:n,active:u,geometryDisabled:r,select:m,mutate:k,geometry:S,insert:p,remove:b,duplicate:N,reorder:h}}function wl(t,l,o){const{draft:a,lists:n,selected:r,activeList:c,blocked:u,jsonPending:m,error:k}=t,{section:S,activeIndex:p}=l,b=Nl(a,t.transaction),{mode:N,selection:h,pageIndex:g,active:E}=b;t.connectHistoryView({read:()=>({pageIndex:g.value,componentIndex:h.value?.pageIndex===g.value?h.value.componentIndex:void 0}),restore:I=>{g.value=Math.max(0,Math.min(a.value.template.pages.length-1,I.pageIndex)),b.selection.value=void 0,b.selections.value=[],I.componentIndex!==void 0&&a.value.template.pages[g.value]?.components[I.componentIndex]&&b.select({pageIndex:g.value,componentIndex:I.componentIndex})}}),e.watch(t.historyViewRevision,()=>t.captureHistoryView(),{flush:"post"});const d=e.ref("excel"),v=e.ref(new Set);e.watch([S,d],()=>{S.value==="tools"&&(v.value=new Set([...v.value,d.value]))}),e.watch(h,I=>{if(!I)return;const i=n.value.findIndex(j=>j.pageIndex===I.pageIndex&&j.componentIndex===I.componentIndex);i>=0&&(r.value=i)}),e.watch([p,r,N,S],()=>{if(N.value!=="design"||S.value!=="fields")return;const I=n.value[r.value];I&&(h.value?.pageIndex!==I.pageIndex||h.value.componentIndex!==I.componentIndex)&&b.select({pageIndex:I.pageIndex,componentIndex:I.componentIndex})});const w=e.computed(()=>t.editingReadonly.value||u.value||m.value),$=e.computed(()=>o()?.[c.value?.dataset??""]);function B(I){N.value=I,S.value==="tools"&&(S.value=I==="design"||!n.value.length?"component":"fields")}function V(I){if(!a.value.template.pages[I.pageIndex]?.components[I.componentIndex])return;if(b.select(I),a.value.template.pages[I.pageIndex]?.components[I.componentIndex]?.kind==="list"){const j=n.value.findIndex(G=>G.pageIndex===I.pageIndex&&G.componentIndex===I.componentIndex);j>=0&&(r.value=j),S.value="fields"}else S.value="component"}function y(I){const i=I.target;i.value&&(b.insert(i.value),N.value="design",S.value="component",i.value="")}function x(I){a.value.template.pages[g.value]?.flow&&["leftMm","topMm","widthMm","heightMm","pageAnchor","grid"].some(i=>i in I)||b.mutate((i,j)=>{if(i.kind!=="list"&&I.pageAnchor!==i.pageAnchor){const C=j.template.pages[h.value.pageIndex];I.pageAnchor==="header"&&(i.topMm=C.marginTopMm??0),I.pageAnchor==="footer"&&(i.topMm=Math.max(0,C.heightMm-(C.marginBottomMm??0)-i.heightMm))}const G=i;for(const[C,T]of Object.entries(I))T===void 0?delete G[C]:G[C]=T})}function D(I){const i=n.value[r.value];i&&t.transaction(j=>{j.template.pages[i.pageIndex].components[i.componentIndex]=I})}function F(I){const i=c.value;if(!i||a.value.template.pages[n.value[r.value]?.pageIndex??-1]?.flow)return;const j=JSON.parse(JSON.stringify(i));try{Rt(j,p.value,p.value+I)&&(D(j),l.activate(p.value+I))}catch(G){k.value=G instanceof Error?G.message:String(G)}}function z(I){const i=n.value[r.value];!i||a.value.template.pages[i.pageIndex]?.flow||t.transaction(j=>{const G=j.template.pages[i.pageIndex].components[i.componentIndex];G?.kind==="list"&&(I.action==="add"?_t(G):I.action==="merge"?Lt(G,I.row,I.first,I.last):Pt(G,I.row,I.first))})}function Z(I){const i=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(I.path??""),j=I.pageIndex??(i?Number(i[1]):void 0),G=I.componentIndex??(i?Number(i[2]):void 0);if(j!==void 0){if(G===void 0){g.value=j,S.value="template",N.value="design";return}if(N.value="design",V({pageIndex:j,componentIndex:G}),I.field){const C=c.value?.columns.findIndex(T=>T.field===I.field);C!==void 0&&C>=0&&l.activate(C)}}}return{mode:N,setMode:B,canvasSelection:h,canvasPage:g,canvasActive:E,tool:d,visitedTools:v,editDisabled:w,dataSchema:$,chooseCanvas:V,insertComponent:y,patchCanvas:x,changeList:D,moveColumn:F,headerCommand:z,locateReview:Z,canvas:b}}function Vl(t,l,o){if(!t.length)return;const a=Math.max(0,t.indexOf(l)),r={ArrowDown:Math.min(a+1,t.length-1),ArrowUp:Math.max(a-1,0),Home:0,End:t.length-1}[o];return r===void 0?void 0:t[r]}function xl(t,l,o){const a=e.ref(!1),n=e.ref(t.activeIndex.value),r=e.ref(null),c=e.ref(null),u=e.ref(null),m=e.ref(null),k=e.ref(0),S=100,p=e.computed(()=>o.value.slice(k.value,k.value+S));function b(){const y=Math.max(0,o.value.findIndex(x=>x.index===n.value));k.value=Math.floor(y/S)*S}async function N(y){const x=Math.max(0,Math.min(Math.max(0,o.value.length-1),k.value+y*S));n.value=o.value[x]?.index??-1,b(),await e.nextTick(),h(!0)}function h(y=!1){const x=m.value,D=x?.querySelector(`button[data-column-index="${n.value}"]`);if(!x||!D)return;y&&D.focus({preventScroll:!0});const F=x.getBoundingClientRect(),z=D.getBoundingClientRect(),Z=F.top+x.clientTop,I=Z+x.clientHeight;z.top<Z?x.scrollTop+=z.top-Z:z.bottom>I&&(x.scrollTop+=z.bottom-I)}async function g(y=!1){a.value&&(a.value=!1,y&&(await e.nextTick(),r.value?.focus({preventScroll:!0})))}async function E(){if(a.value)return g(!0);const y=o.value.map(x=>x.index);n.value=y.includes(t.activeIndex.value)?t.activeIndex.value:y[0]??-1,a.value=!0,b(),await e.nextTick(),u.value?.focus({preventScroll:!0}),h()}function d(y){t.activate(y),g(!0)}function v(y){!a.value||y.isComposing||y.keyCode===229||(y.preventDefault(),y.stopPropagation(),g(!0))}async function w(y){if(y.isComposing||y.keyCode===229)return;const x=Vl(o.value.map(D=>D.index),n.value,y.key);x!==void 0&&(n.value=x,b(),y.preventDefault(),await e.nextTick(),h(!0))}async function $(y){if(y.isComposing||y.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(y.key))return;y.preventDefault(),y.stopPropagation();const x=o.value.map(D=>D.index);if(x.length){if(y.key==="Enter"){x.includes(n.value)&&d(n.value);return}y.key==="ArrowUp"&&(n.value=x.at(-1)),b(),await e.nextTick(),h(!0)}}function B(y){const x=y.target;!a.value||c.value?.contains(x)||r.value?.contains(x)||g()}function V(y){const x=y.relatedTarget;!x||c.value?.contains(x)||r.value?.contains(x)||g()}return e.watch(o,y=>{y.some(x=>x.index===n.value)||(n.value=y[0]?.index??-1),b()}),e.watch(l,()=>{g()}),e.onMounted(()=>document.addEventListener("pointerdown",B)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",B)),{open:a,cursor:n,trigger:r,panel:c,search:u,list:m,windowColumns:p,windowStart:k,windowSize:S,stepWindow:N,toggle:E,close:g,choose:d,escape:v,navigate:w,searchKeydown:$,leave:V}}const ht=Symbol("mach-report:tool-drafts");function Cl(t){const l=e.ref({}),o=e.ref(0),a={epoch:o,read:r=>l.value[r],write(r,c){const u={...l.value};c?u[r]=c:delete u[r],l.value=u;const m=r.split(":")[0];t(m,Object.keys(u).some(k=>k.split(":")[0]===m))}};e.provide(ht,a);function n(r){l.value=JSON.parse(JSON.stringify(r));for(const c of["params","rules","excel"])t(c,Object.keys(r).some(u=>u.split(":")[0]===c));o.value++}return{records:l,restore:n,clear:()=>n({})}}function Bl(t){const l=e.inject(ht,void 0);if(!l)return;let o=!1;const a=()=>{const r=l.read(t.key());if(r){o=!0;try{t.restore(r.value,r.baseline)}finally{o=!1}}};e.watch([t.key,()=>l.epoch.value],a,{immediate:!0,flush:"sync"});const n=e.watch([t.pending,t.snapshot],()=>{o||l.write(t.key(),t.pending()?{baseline:t.baseline(),value:t.snapshot()}:void 0)},{flush:"post"});e.onBeforeUnmount(n)}const Qe=new WeakMap;function Ml(t,l,o){let a=Qe.get(t);a||(a=new Map,Qe.set(t,a));const n=a.get(l);let r,c;const u=new Promise((N,h)=>{r=N,c=h}),m={run:o,resolve:r,reject:c};if(n)return n.latest?.resolve(),n.latest=m,u;let k;const S={done:new Promise(N=>{k=N}),finish:()=>k()};a.set(l,S);const p=()=>{const N=S.latest;S.latest=void 0,N?b(N):(a.delete(l),S.finish())},b=N=>{let h;try{h=N.run()}catch(g){N.reject(g),p();return}Promise.resolve(h).then(N.resolve,N.reject).then(p)};return b(m),u}async function Dl(t,l){await Qe.get(t)?.get(l)?.done}function Q(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function ve(t,l){return l.every(o=>typeof t[o]=="string")}function de(t){return Array.isArray(t)&&t.length<=1e4}function yt(t,l=0){return!Q(t)||l>16?!1:"op"in t?typeof t.op=="string"&&de(t.args)&&t.args.every(o=>yt(o,l+1)):"field"in t?typeof t.field=="string":"aggregate"in t?typeof t.aggregate=="string":"value"in t&&(t.value===null||["string","number","boolean"].includes(typeof t.value))}function ct(t){return Q(t)&&typeof t.field=="string"&&yt(t.expression)}function Te(t){return de(t)&&t.every(l=>typeof l=="string")}function Tl(t){return Q(t)&&Te(t.rowFields)&&Te(t.columnFields)&&de(t.measures)&&t.measures.every(l=>Q(l)&&typeof l.op=="string")}function dt(t){return Q(t)&&ve(t,["sheet","dataset","rowKey"])&&Te(t.fields)&&Q(t.regions)}function ut(t){return Q(t)&&typeof t.sheet=="string"&&de(t.regions)&&t.regions.every(l=>Q(l)&&ve(l,["id","range","dataset","mode","rowKey"])&&Te(l.fields))}function mt(t,l){return de(t)&&t.every(o=>Array.isArray(o)&&o.length===2&&typeof o[0]=="string"&&l(o[1]))}function $l(t){return typeof t.initial=="string"&&Number.isSafeInteger(t.selected)&&de(t.rows)&&t.rows.every(Il)}function Il(t){return Q(t)&&ve(t,["field","label","type","placeholder","defaultValue","min","max","minLength","maxLength"])&&typeof t.required=="boolean"&&typeof t.defaultEnabled=="boolean"&&(t.optionsMode===void 0||t.optionsMode==="static"||t.optionsMode==="remote")&&(t.optionsSource===void 0||typeof t.optionsSource=="string")&&(t.dependsOn===void 0||Te(t.dependsOn))&&de(t.options)&&t.options.every(l=>Q(l)&&ve(l,["label","value"]))}function Rl(t){return ct(t.formula)&&de(t.groups)&&t.groups.every(l=>Q(l)&&typeof l.field=="string")&&Q(t.when)&&Q(t.style)&&ve(t,["selectedComputed","column","conditionKey","effect","tab","formulaBaseline","groupBaseline","conditionBaseline"])&&Number.isSafeInteger(t.conditionIndex)&&mt(t.computedDrafts,ct)&&mt(t.conditionDrafts,l=>Q(l)&&Q(l.when)&&Q(l.style))}function _l(t){return typeof t.enabled=="boolean"&&typeof t.baseline=="string"&&Q(t.detail)&&ve(t.detail,["dataset","parentKey","foreignKey"])&&de(t.detail.columns)&&t.detail.columns.every(l=>Q(l)&&ve(l,["field","header"]))&&Tl(t.matrix)&&Q(t.tree)&&typeof t.tree.input=="string"}function Ll(t){return dt(t.recipe)&&ut(t.regions)&&Q(t.identity)&&ve(t.identity,["id","name"])&&Q(t.cached)&&de(t.cached.table)&&t.cached.table.every(dt)&&de(t.cached.regions)&&t.cached.regions.every(ut)&&(t.mode==="table"||t.mode==="regions")}function Pl(t,l,o){const a=JSON.parse(l);if(!Q(a))throw new Error("Invalid stored tool draft");const n=t==="params"?$l(a):t==="excel"?Ll(a):t.split(":").length>3?_l(a):Rl(a);if(t==="params"){const r=JSON.parse(o);if(!de(r)||!r.every(c=>Q(c)&&typeof c.field=="string"))throw new Error("Invalid stored parameter baseline")}if(!n)throw new Error(`Invalid stored ${t.split(":")[0]} draft`)}function Al(t){return{read:l=>t.getItem(l),write:(l,o)=>t.setItem(l,o),remove:l=>t.removeItem(l)}}function Fl(t,l){if(!t.trim()||t.length>1024||l.length>1024)throw new Error("Draft scope and template identity must be bounded and non-empty");return`mach-report:draft:1:${JSON.stringify([t,l])}`}function Hl(t){const l=t.maxBytes??2097152,o=t.debounceMs??400;if(!Number.isSafeInteger(l)||l<1024||l>16*1024*1024)throw new RangeError("Draft maxBytes must be between 1024 and 16777216");if(!Number.isSafeInteger(o)||o<0||o>1e4)throw new RangeError("Draft debounceMs must be between 0 and 10000");return{maxBytes:l,debounceMs:o}}function pt(t,l,o){if(t.length*2>o)throw new Error("Draft exceeds storage budget");const a=JSON.parse(t);if(a.version!==1||a.templateId!==l||typeof a.savedAt!="string"||!Number.isFinite(Date.parse(a.savedAt)))throw new Error("Invalid draft identity or version");for(const n of["json","appliedJson"])if(typeof a[n]!="string")throw new Error("Invalid draft JSON input");if(a.baseline=P.parseReportTemplate(a.baseline),a.document=P.parseReportTemplate(a.document),a.baseline.id!==l||a.document.id!==l||a.baseline.revision!==a.document.revision)throw new Error("Invalid draft baseline");if(!a.tools||typeof a.tools!="object"||Array.isArray(a.tools)||Object.keys(a.tools).length>100)throw new Error("Invalid tool drafts");for(const[n,r]of Object.entries(a.tools)){if(!/^(params|excel|rules:[0-9]+:[0-9]+(?::(?:detail|matrix|tree))?)$/.test(n)||!r||typeof r.baseline!="string"||typeof r.value!="string")throw new Error("Invalid tool draft");Pl(n,r.value,r.baseline)}return a}function Ol(t){const l=e.ref(!1),o=e.shallowRef(),a=e.ref(""),n=e.ref("idle"),r=e.computed(()=>!!o.value&&P.serializeReportTemplate(o.value.baseline)!==t.baseline());let c,u=0,m=!1,k=!1,S=new AbortController,p=new AbortController,b=Promise.resolve(),N;function h(){clearTimeout(c),c=void 0,u++,S.abort(),p.abort(),S=new AbortController,p=new AbortController}function g(V,y){!m&&y===u&&(a.value=V instanceof Error?V.message:String(V))}async function E(){h();const V=u;l.value=!0,k=!1,o.value=void 0,a.value="",n.value="idle",N=void 0;try{const y=t.storage();if(!y)return;const x=t.id();if(N={storage:y,key:Fl(y.scope,x),...Hl(y)},await Dl(y.adapter,N.key),V!==u||m)return;const D=await y.adapter.read(N.key,{signal:p.signal});if(V!==u||m||D===null)return;o.value=pt(D,x,N.maxBytes)}catch(y){V===u&&(k=!0),g(y,V)}finally{V===u&&!m&&(l.value=!1)}}function d(V){const y=N;if(!y)return;const x=u,D=S.signal;n.value="saving";const F=async()=>{D.aborted||(V===null?await y.storage.adapter.remove(y.key,{signal:D}):await y.storage.adapter.write(y.key,V,{signal:D}),!m&&x===u&&(n.value=V===null?"idle":"saved",a.value=""))};b=Ml(y.storage.adapter,y.key,F).catch(z=>g(z,x))}function v(){if(clearTimeout(c),c=void 0,!(!N||o.value))try{if(!t.pending()){k||d(null);return}const V=JSON.stringify(t.snapshot());pt(V,t.id(),N.maxBytes),d(V)}catch(V){g(V,u)}}function w(){clearTimeout(c),!(!N||o.value)&&(c=setTimeout(v,N.debounceMs))}async function $(){o.value=void 0,k=!1,d(null),await b,w()}function B(){if(o.value)try{t.restore(o.value),o.value=void 0,w()}catch(V){g(V,u)}}return e.watch([t.id,()=>t.storage()?.scope,()=>t.storage()?.adapter,()=>t.storage()?.maxBytes,()=>t.storage()?.debounceMs],()=>{E()},{immediate:!0}),e.watch([t.pending,t.changedSource],w,{deep:!0}),e.onMounted(()=>{globalThis.addEventListener?.("pagehide",v)}),e.onBeforeUnmount(()=>{globalThis.removeEventListener?.("pagehide",v),v(),m=!0,p.abort(),clearTimeout(c)}),{available:o,stale:r,error:a,status:n,checking:l,restore:B,discard:$,flush:v}}function zl(t){const l=e.ref(!1),o=e.shallowRef(),a=e.ref(!1),n=e.ref(""),r=e.ref(!1),c=e.ref(!1);let u=0,m;const k=e.computed(()=>P.diffReportTemplates(t.baseline(),t.local(),{maxChanges:100})),S=e.computed(()=>o.value?P.diffReportTemplates(t.baseline(),o.value,{maxChanges:100}):void 0);function p(){u++,m?.abort(),m=void 0,a.value=!1}function b(){p(),l.value=!1,o.value=void 0,n.value="",r.value=!1,c.value=!1}async function N(){const v=t.configuration().loadLatest;if(!v||a.value)return;p();const w=u,$=t.local().id;m=new AbortController,a.value=!0,n.value="";try{const B=P.parseReportTemplate(await v({id:$,signal:m.signal}));if(w!==u)return;if(B.id!==$)throw new Error("Latest template identity does not match");o.value=B}catch(B){w===u&&(n.value=B instanceof Error?B.message:String(B))}finally{w===u&&(a.value=!1)}}function h(v){b(),l.value=!0,v?o.value=P.parseReportTemplate(v):N()}async function g(){!o.value||a.value||await t.applyLatest(P.parseReportTemplate(o.value))&&b()}function E(){if(!(!o.value||a.value||!r.value))try{t.rebase(P.parseReportTemplate(o.value)),b()}catch(v){n.value=v instanceof Error?v.message:String(v)}}async function d(){const v=t.configuration().keepCopy;if(!v||a.value)return;p();const w=u,$=P.parseReportTemplate(t.local());m=new AbortController,a.value=!0,n.value="";try{await v($,{id:$.id,sourceRevision:$.revision,signal:m.signal}),w===u&&(c.value=!0)}catch(B){w===u&&(n.value=B instanceof Error?B.message:String(B))}finally{w===u&&(a.value=!1)}}return e.onBeforeUnmount(p),{active:l,latest:o,busy:a,error:n,confirmRebase:r,copied:c,localChanges:k,remoteChanges:S,begin:h,clear:b,load:N,adoptLatest:g,rebase:E,keepCopy:d,toggleRebase:()=>{r.value=!r.value}}}function Gl(t,l,o,a){const n=e.ref(0),r=e.ref(""),c=e.ref([]),u=e.ref();e.watch(t,()=>{u.value=void 0},{flush:"sync"});const m=e.computed(()=>t.value.template.pages.flatMap((B,V)=>B.components.flatMap((y,x)=>y.kind==="list"?[{component:y,pageIndex:V,componentIndex:x}]:[]))),k=e.computed(()=>m.value[n.value]?.component),S=e.computed(()=>{const B=k.value;if(!B)return[];const V=B.columns.map(y=>y.headerStyle?.align??y.headerAlign??B.headerStyle?.align??B.headerAlign??y.style?.align??"center");if(B.headerGrid&&l())for(const y of P.resolveGridLayout(B.headerGrid,B.widthMm,100).cells)for(let x=y.ci;x<y.ci+(y.cell.colSpan??1);x++)V[x]=y.cell.style?.align??"left";return V}),p=e.computed(()=>{const B=r.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(k.value?.columns??[]).flatMap((V,y)=>{const x=`${V.header} ${V.field}`.toLocaleLowerCase();return B.every(D=>x.includes(D))?[{column:V,index:y}]:[]})});function b(B,V){c.value=V?[...new Set([...c.value,B])]:c.value.filter(y=>y!==B)}function N(B){const V=new Set(c.value);for(const{index:y}of p.value)B?V.add(y):V.delete(y);c.value=[...V]}function h(){c.value=[]}function g(B,V,y){if(!o())return;const x=m.value[n.value];if((V==="widthMm"||V==="hidden")&&x&&t.value.template.pages[x.pageIndex]?.flow)return;const D=k.value?.columns[B];if(D){if(V==="field"&&y!==D.field){const F=k.value.dataset,z=`$.template.pages[${x.pageIndex}].components[${x.componentIndex}].columns[${B}].field`,Z=Tt.inspectTemplateFieldUsage(t.value.template,F,D.field).filter(I=>I.path!==z);if(Z.length){u.value={index:B,listIndex:n.value,before:D.field,after:String(y),references:Z};return}}V==="hidden"&&y===!0&&!k.value?.columns.some((F,z)=>z!==B&&!F.hidden)||(Object.assign(D,{[V]:V==="widthMm"?Number(y):y}),V==="header"&&v(B,String(y)),V==="headerAlign"&&w(B,y),V==="widthMm"&&d(),a())}}function E(){const B=u.value;if(!B||!o())return;const V=m.value[B.listIndex]?.component.columns[B.index];u.value=void 0,!(!V||V.field!==B.before)&&(V.field=B.after,a())}function d(){const B=m.value[n.value];if(!B)return;const V=B.component,y=t.value.template.pages[B.pageIndex],x=V.columns.map(D=>D.widthMm);V.headerGrid&&(V.headerGrid.colWidthsMm=x),y.layout==="wide"&&x.every(D=>Number.isFinite(D)&&D>0)&&(V.widthMm=x.reduce((D,F)=>D+F,0),y.widthMm=Math.max(...y.components.map(D=>D.leftMm+D.widthMm))+(y.marginRightMm??0))}function v(B,V){const y=k.value;if(!y?.headerGrid)return;const D=P.resolveGridLayout(y.headerGrid,y.widthMm,100).cells.filter(({ci:F,cell:z})=>F<=B&&F+(z.colSpan??1)>B).slice(-1)[0];D&&(Object.assign(D.cell,{text:V,rawText:V,value:V}),y.columns.slice(D.ci,D.ci+(D.cell.colSpan??1)).forEach(F=>{F.header=V}))}function w(B,V){const y=k.value,x=y?.columns[B];if(x?.headerStyle?.align!==void 0&&(x.headerStyle={...x.headerStyle,align:V}),!y?.headerGrid)return;const F=P.resolveGridLayout(y.headerGrid,y.widthMm,100).cells.filter(({ci:z,cell:Z})=>z<=B&&z+(Z.colSpan??1)>B).slice(-1)[0];F&&(F.cell.style={...F.cell.style,align:V},y.columns.slice(F.ci,F.ci+(F.cell.colSpan??1)).forEach(z=>{z.headerAlign=V,z.headerStyle?.align!==void 0&&(z.headerStyle={...z.headerStyle,align:V})}))}function $(B,V){if(!(!o()||B==="headerAlign"&&V==="auto")){for(const y of c.value){const x=k.value?.columns[y];x&&(Object.assign(x,{[B]:V}),B==="headerAlign"&&w(y,V))}a()}}return{selected:n,query:r,selectedColumns:c,lists:m,activeList:k,headerAlignments:S,visibleColumns:p,toggleColumn:b,selectVisible:N,clearSelection:h,fieldChange:u,confirmFieldChange:E,cancelFieldChange:()=>{u.value=void 0},setColumn:g,alignColumns:$}}function et(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function jl(t,l,o=!1){const a={kind:"snapshot",value:l};if(o)return a;let n=0;const r=Math.min(t.length,l.length);for(;n<r&&t.charCodeAt(n)===l.charCodeAt(n);)n++;let c=t.length,u=l.length;for(;c>n&&u>n&&t.charCodeAt(c-1)===l.charCodeAt(u-1);)c--,u--;const m={kind:"patch",start:n,removed:t.slice(n,c),inserted:l.slice(n,u)};return et(m)<et(a)?m:a}function Pe(t,l,o=!1){if(l.kind==="snapshot")return l.value;const a=o?l.inserted:l.removed,n=o?l.removed:l.inserted;return t.slice(0,l.start)+n+t.slice(l.start+a.length)}const Be=t=>et(t)+(t.view?64:0),Ae=(t,l)=>l?{...t,view:{before:{...l},after:{...l}}}:t;function ql(t,l={entries:100,bytes:16*1024*1024}){if(![l.entries,l.bytes].every(E=>Number.isSafeInteger(E)&&E>0))throw new RangeError("History budgets must be positive safe integers");const o=e.shallowRef([{kind:"snapshot",value:t}]),a=e.ref(0),n=e.ref(t),r=e.computed(()=>a.value>0),c=e.computed(()=>a.value+1<o.value.length),u=e.computed(()=>n.value),m=e.computed(()=>o.value.reduce((E,d)=>E+Be(d),0)),k=e.shallowRef();function S(E,d){o.value=[Ae({kind:"snapshot",value:E},d)],a.value=0,n.value=E,k.value=d}function p(E){let d=E;for(;d>0&&o.value[d].kind!=="snapshot";)d--;let v="";for(;d<=E;d++)v=Pe(v,o.value[d]);return v}function b(E){let d=E.reduce((v,w)=>v+Be(w),0);for(;E.length>1&&(E.length>l.entries||d>l.bytes);){const v=E[0],w=E[1],$=Ae({kind:"snapshot",value:Pe(v.value,w)},w.view?.after);d+=Be($)-Be(v)-Be(w),E.splice(0,2,$)}return E}function N(E){if(!E)return;const d=o.value.slice(),v=d[a.value];d[a.value]=v.view?{...v,view:{before:v.view.before,after:{...E}}}:Ae(v,E),o.value=d}function h(E,d){if(n.value===E)return!1;const v=o.value.slice(0,a.value+1);return v.push(Ae(jl(n.value,E,v.length%20===0),d)),o.value=b(v),a.value=o.value.length-1,n.value=E,!0}function g(E){if(E<0?!r.value:!c.value)return;const d=o.value[a.value];return k.value=E<0?d.view?.before:o.value[a.value+1]?.view?.after,E<0&&d.kind==="patch"?n.value=Pe(n.value,d,!0):E>0?n.value=Pe(n.value,o.value[a.value+1]):n.value=p(a.value-1),a.value+=E,n.value}return{canUndo:r,canRedo:c,current:u,context:k,retainedBytes:m,reset:S,record:h,move:g,annotate:N}}function Wl(t){const l=e.shallowRef(null),o=e.ref(!1);let a,n=0;function r(m){a?.(m),a=void 0,l.value=null}function c(){n++,r(!1),o.value=!1}async function u(m){c();const k=n,S=t();o.value=!0;try{const p=await new Promise((b,N)=>{if(a=b,!S){l.value=m;return}Promise.resolve().then(()=>n===k?S(m):!1).then(h=>{n===k&&r(h===!0)},h=>{n===k&&(a=void 0,l.value=null,N(h))})});return n===k&&p===!0}finally{n===k&&(o.value=!1)}}return e.onBeforeUnmount(c),{confirmation:l,pending:o,decide:r,request:u,cancel:c}}function Ul(t,l){const o=e.ref(P.parseReportTemplate(t.modelValue)),a=e.ref(P.serializeReportTemplate(o.value)),n=e.ref(P.serializeReportTemplate(o.value)),r=e.ref(""),c=e.ref(!1),u=e.computed(()=>({...me,...t.messages})),m=e.computed(()=>({showExport:!1,showPrint:!1,showPdfWindow:!1,...t.preview,theme:{shellBg:"#f1f5f9",shellFg:"#334155",toolbarBg:"#ffffff",toolbarBorder:"#e2e8f0",toolbarFg:"#334155",btnFg:"#475569",btnBorder:"#cbd5e1",btnHoverBg:"#eff6ff",btnHoverFg:"#1d4ed8",btnActiveBg:"#2563eb",...t.preview?.theme}}));Xe.provideMachReportConfig({get defaults(){return m.value}});let k,S=0;const p=e.computed(()=>P.validateReportTemplateDocument(o.value)),b=e.computed(()=>{try{return P.serializeReportTemplate(o.value)!==a.value}catch{return!0}}),N=e.ref(n.value),h=e.computed(()=>n.value!==N.value),g=e.ref({}),E=e.ref(0),d=e.ref(0),v=e.computed(()=>Object.values(g.value).some(Boolean)),w=e.computed(()=>Object.keys(g.value).filter(A=>g.value[A]));function $(A,H){g.value={...g.value,[A]:H},E.value++}const B=Cl($),V=e.computed(()=>b.value||n.value!==N.value||v.value||!!G.fieldChange.value),y=()=>JSON.stringify({document:o.value,json:n.value,appliedJson:N.value}),x=ql(y()),D=e.ref(0);let F;function z(A){F=A,x.annotate(A.read())}function Z(){x.annotate(F?.read())}const I=Wl(()=>t.beforeDiscard),i=e.computed(()=>c.value||I.pending.value||ge.active.value||be.checking.value||!!be.available.value),j=()=>!t.readonly&&!i.value&&!h.value,G=Gl(o,()=>p.value.ok,j,K),{selected:C,lists:T,activeList:M,headerAlignments:_,setColumn:R}=G;e.watch(C,()=>G.clearSelection());const W=e.shallowRef();e.watch([()=>o.value.template,()=>t.datasets],()=>{W.value=Xe.createLocalFetcher({draft:{template:o.value.template,datasets:t.datasets??{},params:[]}})},{deep:!0,immediate:!0});const te=e.computed(()=>p.value.ok?W.value:void 0);function ie(){S++,k?.abort(),k=void 0,c.value=!1}let ne=0;async function J(A="replace",H){if(!V.value)return!0;const q=y(),oe=E.value;try{return await I.request({reason:A,document:JSON.parse(JSON.stringify(o.value)),replacement:H?P.parseReportTemplate(H):void 0,pendingLocalChanges:!0})&&q===y()&&oe===E.value}catch(ue){return r.value=ue instanceof Error?ue.message:String(ue),!1}}function ae(A){ie(),ge.clear(),B.clear(),o.value=A,a.value=P.serializeReportTemplate(A),n.value=a.value,N.value=n.value,r.value="",C.value=0,G.clearSelection(),G.cancelFieldChange(),g.value={},E.value++,d.value++,x.reset(y(),F?.read())}e.watch(()=>t.modelValue,async A=>{let H;try{H=P.parseReportTemplate(A)}catch(oe){r.value=oe instanceof Error?oe.message:String(oe);return}try{if(P.serializeReportTemplate(H)===P.serializeReportTemplate(o.value))return}catch{}const q=++ne;if(ie(),!await J("replace",H)){q===ne&&p.value.ok&&l("update:modelValue",P.parseReportTemplate(o.value));return}q===ne&&ae(H)}),e.onBeforeUnmount(()=>{ne++,ie()});function K(){I.cancel(),r.value="",p.value.ok&&(n.value=P.serializeReportTemplate(o.value),N.value=n.value,l("update:modelValue",P.parseReportTemplate(o.value))),x.record(y(),F?.read())&&D.value++}function le(A){if(!j())return!1;try{const H=P.parseReportTemplate(o.value);A(H);const q=P.validateReportTemplateDocument(H);if(!q.ok)throw new Error(q.errors.map(oe=>`${oe.path}: ${oe.message}`).join(`
2
- `));return o.value=H,K(),!0}catch(H){return r.value=H instanceof Error?H.message:String(H),!1}}async function ee(A){if(!j())return!1;try{const H=P.parseReportTemplate(A);return!await J("replace",H)||!j()?!1:(o.value=H,C.value=0,G.clearSelection(),K(),!0)}catch(H){return r.value=H instanceof Error?H.message:String(H),!1}}function ye(A){j()&&(o.value.name=A,K())}function je(A){j()&&(o.value.description=A,K())}function $e(){if(!(t.readonly||i.value))try{const A=P.parseReportTemplate(n.value);if(A.id!==o.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(A.revision!==o.value.revision)throw new Error("修订号由保存服务管理,不能在 JSON 中修改");o.value=A,C.value=0,G.clearSelection(),K()}catch(A){r.value=A instanceof Error?A.message:String(A)}}async function qe(){i.value||t.readonly||!await J("reset")||(ae(P.parseReportTemplate(a.value)),l("update:modelValue",P.parseReportTemplate(o.value)))}function Ie(A){if(i.value||t.readonly)return;x.record(y(),F?.read());const H=x.move(A);if(!H)return;I.cancel();const q=JSON.parse(H);o.value=q.document,n.value=q.json,N.value=q.appliedJson,r.value="",C.value=0,G.clearSelection(),x.context.value&&F?.restore(x.context.value),p.value.ok&&l("update:modelValue",P.parseReportTemplate(o.value))}async function Re(){if(!t.save||!j()||!p.value.ok)return;if(v.value||G.fieldChange.value){r.value=u.value.toolsPending;return}const A=++S;k=new AbortController,c.value=!0,r.value="";const H=P.parseReportTemplate(o.value);try{const q=P.parseReportTemplate(await t.save(H,{expectedRevision:H.revision,signal:k.signal}));if(A!==S)return;if(q.id!==H.id)throw new Error("保存服务返回了其他模板的文档");o.value=q,a.value=P.serializeReportTemplate(q),n.value=a.value,N.value=n.value,x.reset(y(),F?.read()),B.clear(),be.flush(),l("saved",P.parseReportTemplate(q)),l("update:modelValue",P.parseReportTemplate(q))}catch(q){A===S&&(r.value=q instanceof Error?q.message:String(q),q&&typeof q=="object"&&"code"in q&&q.code==="conflict"&&ge.begin())}finally{A===S&&(c.value=!1,k=void 0)}}const ge=zl({configuration:()=>t,baseline:()=>P.parseReportTemplate(a.value),local:()=>P.parseReportTemplate(o.value),async applyLatest(A){return await J("replace",A)?(ae(A),l("update:modelValue",P.parseReportTemplate(A)),!0):!1},rebase(A){const H=P.parseReportTemplate(o.value);A.revision===void 0?delete H.revision:H.revision=A.revision;const q=P.serializeReportTemplate(H),oe=P.serializeReportTemplate(A),ue=h.value;H.revision===void 0?delete o.value.revision:o.value.revision=H.revision,a.value=oe,ue||(n.value=q),N.value=q,x.reset(y(),F?.read()),l("update:modelValue",P.parseReportTemplate(o.value))}}),be=Ol({storage:()=>t.draftStorage,id:()=>o.value.id,baseline:()=>a.value,pending:()=>V.value,changedSource:()=>[o.value,a.value,n.value,N.value,B.records.value],snapshot:()=>({version:1,templateId:o.value.id,savedAt:new Date().toISOString(),baseline:P.parseReportTemplate(a.value),document:JSON.parse(JSON.stringify(o.value)),json:n.value,appliedJson:N.value,tools:B.records.value}),restore(A){if(t.readonly||c.value)return;const H=P.parseReportTemplate(t.modelValue);o.value=P.parseReportTemplate(A.document),a.value=P.serializeReportTemplate(A.baseline),n.value=A.json,N.value=A.appliedJson,d.value++,B.restore(A.tools);const q=Object.keys(A.tools).find(oe=>oe.startsWith("rules:"));if(q){const[,oe,ue]=q.split(":"),Ne=T.value.findIndex(we=>we.pageIndex===Number(oe)&&we.componentIndex===Number(ue));Ne>=0&&(C.value=Ne)}x.reset(y(),F?.read()),P.serializeReportTemplate(H)!==a.value&&ge.begin(H),l("update:modelValue",P.parseReportTemplate(o.value))}}),U=e.computed(()=>x.canUndo.value||y()!==x.current.value),re=e.computed(()=>x.canRedo.value&&y()===x.current.value);return{...G,recovery:be,conflict:ge,editingReadonly:e.computed(()=>t.readonly===!0),connectHistoryView:z,captureHistoryView:Z,historyViewRevision:D,transaction:le,replaceDocument:ee,originalDocument:e.computed(()=>P.parseReportTemplate(a.value)),canUndo:U,canRedo:re,undo:()=>Ie(-1),redo:()=>Ie(1),pendingLocalChanges:V,setToolPending:$,isToolPending:A=>g.value[A]===!0,toolEpoch:d,toolPending:v,pendingTools:w,jsonPending:h,blocked:i,confirmation:I.confirmation,decideDiscard:I.decide,guardChanges:J,draft:o,json:n,selected:C,error:r,saving:c,dirty:b,validation:p,lists:T,activeList:M,headerAlignments:_,previewOptions:m,fetcher:te,messages:u,setName:ye,setDescription:je,setColumn:R,applyJson:$e,reset:qe,save:Re}}function Jl(t,l){const o=e.ref(l.value?"fields":"component"),a=()=>l.value?.columns.length?0:-1,n=e.ref(a()),r=e.computed(()=>{const m=l.value?.columns[n.value];return m?{column:m,index:n.value}:void 0});e.watch(t,()=>{n.value=a()}),e.watch(l,m=>{m?.columns[n.value]||(n.value=a()),!m&&o.value==="fields"&&(o.value="component")});function c(m){l.value?.columns[m]&&(n.value=m)}function u(m){const k=l.value?.columns.length??0;k&&(n.value=Math.max(0,Math.min(k-1,n.value+m)))}return{section:o,activeIndex:n,activeColumn:r,activate:c,stepColumn:u}}const Kl=["aria-label","aria-busy"],Yl={class:"mr-designer-bar"},Xl={class:"mr-designer-heading"},Zl=["aria-label"],Ql=["id","aria-selected","aria-controls","tabindex","onClick"],er={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},tr=["aria-label"],nr=["aria-pressed"],or=["aria-pressed"],ar={class:"mr-designer-actions"},lr={class:"mr-designer-history"},rr=["aria-label","title","disabled"],ir=["aria-label","title","disabled"],sr=["disabled"],cr=["title","aria-describedby","disabled"],dr=["id"],ur=["id"],mr=["aria-label","onClick"],pr=["aria-label"],fr=["aria-label"],vr=["id","aria-pressed","aria-describedby","onClick"],gr={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},hr={class:"mr-designer-tool-target"},yr=["value","aria-label"],br=["value"],kr=["value","aria-label"],Er={value:-1,disabled:""},Sr=["value"],Nr=["aria-pressed"],wr={class:"mr-designer-tool-content"},Vr={key:5,class:"mr-designer-rule-workspace"},xr={key:0},Cr=["value"],Br=["value"],Mr={key:2,class:"mr-designer-note"},Dr={key:1,class:"mr-designer-inspector"},Tr=["id","aria-labelledby"],$r={key:0,class:"mr-designer-flow-note"},Ir={key:0,class:"mr-designer-area"},Rr=["value"],_r=["value"],Lr={class:"mr-designer-current"},Pr=["aria-expanded","aria-controls"],Ar={class:"mr-designer-current-name"},Fr={class:"mr-designer-directory-entry"},Hr={class:"mr-designer-field-position"},Or=["aria-label"],zr=["aria-label","title","disabled"],Gr=["aria-label","title","disabled"],jr=["disabled","aria-label"],qr={class:"mr-designer-property-group"},Wr=["value"],Ur=["value","list"],Jr=["id"],Kr=["value"],Yr={class:"mr-designer-property-group"},Xr={class:"mr-designer-format-pair"},Zr={class:"mr-designer-stacked"},Qr=["value","disabled"],ei={class:"mr-designer-stacked"},ti=["value"],ni={value:"identifier"},oi={value:"dimension"},ai={value:"measure"},li={value:"date"},ri={value:"text"},ii={class:"mr-designer-control-row"},si={class:"mr-designer-control-row"},ci={class:"mr-designer-toggle"},di=["checked"],ui={class:"mr-designer-column-structure"},mi=["aria-label","title","disabled"],pi=["aria-label","title","disabled"],fi=["checked","disabled"],vi=["id","aria-label"],gi={class:"mr-designer-directory-heading"},hi=["aria-label"],yi={class:"mr-designer-search"},bi=["aria-label","placeholder"],ki=["aria-label","title"],Ei={class:"mr-designer-column-tools"},Si=["disabled"],Ni={key:1,role:"status"},wi={key:2},Vi=["aria-label"],xi=["aria-label","checked","disabled","onChange"],Ci=["data-column-index","aria-pressed","tabindex","onClick"],Bi={class:"mr-designer-column-number"},Mi={class:"mr-designer-column-name"},Di={key:0,role:"status",class:"mr-designer-empty"},Ti=["aria-label"],$i=["disabled","aria-label"],Ii=["disabled","aria-label"],Ri={key:1,class:"mr-designer-batch"},_i=["aria-label","disabled"],Li={value:""},Pi={value:"auto"},Ai={value:"left"},Fi={value:"center"},Hi={value:"right"},Oi={value:"justify"},zi=["aria-label","disabled"],Gi={value:""},ji={value:"left"},qi={value:"center"},Wi={value:"right"},Ui={value:"justify"},Ji={key:2,role:"status",class:"mr-designer-empty"},Ki={class:"mr-designer-object-tools"},Yi=["aria-label","disabled"],Xi={value:""},Zi={value:"text"},Qi=["disabled"],es={value:"image"},ts={value:"rect"},ns={value:"qrcode"},os={value:"barcode"},as=["title","aria-label","disabled"],ls=["title","aria-label","disabled"],rs={key:0},is=["value"],ss={class:"mr-designer-stacked"},cs=["value"],ds={value:-1,disabled:""},us=["value"],ms={key:1,class:"mr-designer-arrange"},ps=["disabled"],fs=["aria-label","disabled"],vs={value:""},gs={value:"left"},hs={value:"center"},ys={value:"right"},bs={value:"top"},ks={value:"middle"},Es={value:"bottom"},Ss=["disabled"],Ns=["disabled"],ws={key:0},Vs={class:"mr-designer-layer-tools"},xs=["disabled"],Cs=["disabled"],Bs={key:3,class:"mr-designer-empty"},Ms={class:"mr-designer-stacked"},Ds=["value","disabled"],Ts={class:"mr-designer-stacked"},$s=["value","disabled"],Is={class:"mr-designer-technical"},Rs={class:"mr-designer-identity"},_s={class:"mr-designer-stacked mr-designer-json-label"},Ls=["aria-label","disabled"],Ps=["disabled"],As={key:5,role:"status",class:"mr-designer-note mr-designer-pending"},Fs=["aria-label"],Hs={key:0,role:"alert",class:"mr-designer-error"},Os={key:1,role:"alert",class:"mr-designer-error"},zs={key:4,class:"mr-designer-note mr-designer-invalid"},Gs=e.defineComponent({__name:"ReportTemplateEditor",props:{draftStorage:{},recoveryMessages:{},productMessages:{},reviewMessages:{},fragments:{},documentStyles:{},reviewFixtures:{},modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},preview:{},beforeDiscard:{type:Function},save:{type:Function},loadLatest:{type:Function},keepCopy:{type:Function}},emits:["update:modelValue","saved","excel-bound"],setup(t,{expose:l,emit:o}){const a=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-Bs43BGNp.cjs"))),n=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-Da4akw6V.cjs"))),r=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-XhGHK8DE.cjs"))),c=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-JTSR53vJ.cjs"))),u=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-Kx35S0Ql.cjs"))),m=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-Dn6X9UmY.cjs"))),k=t,S=o,p=Ul(k,(L,f)=>{S(L==="saved"?"saved":"update:modelValue",f)}),{draft:b,json:N,selected:h,error:g,saving:E,pendingLocalChanges:d,jsonPending:v,blocked:w,confirmation:$,canUndo:B,canRedo:V,validation:y,lists:x,activeList:D,visibleColumns:F,query:z,selectedColumns:Z,fetcher:I,messages:i}=p;function j(L){return p.transaction(f=>{f.template.params=L})}const G=Jl(h,D),{section:C,activeIndex:T,activeColumn:M}=G,_=`mr-designer-${e.getCurrentInstance()?.uid??0}`,R=e.computed(()=>[...x.value.length?["fields"]:[],"component","template","tools","advanced"]),W=wl(p,G,()=>k.dataSchemas),{mode:te,setMode:ie,canvasSelection:ne,canvasPage:J,canvasActive:ae,tool:K,visitedTools:le,editDisabled:ee,dataSchema:ye,chooseCanvas:je,insertComponent:$e,patchCanvas:qe,changeList:Ie,moveColumn:Re,headerCommand:ge,locateReview:be,canvas:U}=W,re=e.computed(()=>!!b.value.template.pages[J.value]?.flow),A=e.ref(new Set(["outline","reuse"])),H=e.computed(()=>C.value==="tools"&&A.value.has(K.value));function q(L){H.value?te.value=L:ie(L)}e.watch([C,K],()=>{H.value&&(te.value="design")});function oe(){const L=new Set(A.value);L.has(K.value)?L.delete(K.value):L.add(K.value),A.value=L,L.has(K.value)&&(te.value="design")}function ue(L){const f=Number(L.target.value);Number.isInteger(f)&&f>=0&&xe({pageIndex:J.value,componentIndex:f})}const Ne=e.computed(()=>k.dataSchemas?.[b.value.template.repeat?.dataset??""]),we=e.computed(()=>{const L={text:i.value.insertText,list:i.value.insertList,image:i.value.insertImage,rect:i.value.insertRect,qrcode:i.value.insertQrcode,barcode:i.value.insertBarcode,chart:i.value.chartComponent,line:i.value.lineComponent,ellipse:i.value.ellipseComponent},f=new Map(Ne.value?.fields.map(s=>[s.field,s.label||s.field]));return b.value.template.pages[J.value]?.components.map((s,O)=>{const se=L[s.kind],Ee=(s.kind==="list"?s.title||s.dataset:s.binding?f.get(s.binding.field)||s.binding.field:s.text)?.replace(/\s+/g," ").trim().slice(0,60);return{index:O,name:Ee&&Ee!==se?`${se} · ${Ee}`:se}})??[]});function bt(L){let f=J.value;p.transaction(s=>{f=zt(s,J.value,L)})&&(L.type!=="patch"&&(U.clearLocks(),U.selection.value=void 0,U.selections.value=[]),J.value=f)}const Ve=e.computed(()=>!!b.value.template.pages[x.value[h.value]?.pageIndex??-1]?.flow);function kt(){C.value="tools",K.value="excel"}const ke=e.computed(()=>{const L=["excel","rules","params"].filter(f=>p.pendingTools.value.includes(f)).map(f=>({target:f,label:i.value[`${f}Tool`]}));return v.value&&L.push({target:"json",label:i.value.json}),L}),_e=e.computed(()=>E.value?i.value.saving:k.readonly?i.value.saveReadonly:w.value?i.value.saveConfirmation:ke.value.length?ke.value.map(L=>`${L.label} · ${i.value.unapplied}`).join(";"):y.value.ok?d.value?"":i.value.saveUnchanged:i.value.saveInvalid);async function Et(L){L==="json"?C.value="advanced":(C.value="tools",K.value=L),await e.nextTick();const f=L==="json"?`#${_}-panel-advanced textarea`:`#${_}-tool-${L}`;document.querySelector(f)?.focus({preventScroll:!0})}const St=e.computed(()=>E.value?i.value.saving:k.readonly?i.value.readonly:d.value?i.value.dirty:i.value.ready),tt=e.ref(null),We=e.ref(null),X=xl(G,C,F),{open:nt,cursor:Nt,trigger:wt,panel:Vt,search:xt,list:Ct}=X;e.watch(C,async()=>{await e.nextTick(),We.value&&(We.value.scrollTop=0)});const ot=e.computed(()=>({auto:i.value.auto,left:i.value.left,center:i.value.center,right:i.value.right,justify:i.value.justify}));let Le=null;e.watch($,async L=>{L?(Le=document.activeElement,await e.nextTick(),tt.value?.focus()):(await e.nextTick(),Le?.isConnected&&Le.focus(),Le=null)}),l({get pendingLocalChanges(){return d.value},get saving(){return E.value},get blocked(){return w.value},guardChanges:p.guardChanges,reset:p.reset,save:p.save});async function Bt(L){const f={...L.document,id:b.value.id};if(b.value.revision===void 0?delete f.revision:f.revision=b.value.revision,!await p.replaceDocument(f))return!1;const s=P.parseReportTemplate(p.draft.value);return S("excel-bound",{...L,document:s,session:{...L.session,identity:{id:s.id,name:s.name}}}),!0}async function xe(L){const f=C.value==="tools",s=x.value.findIndex(O=>O.pageIndex===L.pageIndex&&O.componentIndex===L.componentIndex);s>=0&&s!==h.value&&p.isToolPending("rules")&&!await p.guardChanges()||(je(L),f&&(C.value="tools"))}async function Ue(L){const f=C.value==="tools"&&K.value==="outline",s=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(L.path??""),O=L.pageIndex??(s?Number(s[1]):void 0),se=L.componentIndex??(s?Number(s[2]):void 0),Ce=x.value.findIndex(Ee=>Ee.pageIndex===O&&Ee.componentIndex===se);Ce>=0&&Ce!==h.value&&p.isToolPending("rules")&&!await p.guardChanges()||(be(L),f&&(C.value="tools"))}async function at(L){const f=L.target,s=Number(f.value);if(p.isToolPending("rules")&&!await p.guardChanges()){f.value=String(h.value);return}h.value=s}function pe(L){return L.target.value}function Je(L){return L.target.checked}function lt(L,f){const s=L.target;p.alignColumns(f,s.value),s.value=""}async function Mt(L){const s={ArrowRight:1,ArrowLeft:-1,Home:-R.value.length,End:R.value.length}[L.key];if(s===void 0)return;L.preventDefault();const O=R.value.indexOf(C.value),se=L.key==="Home"?0:L.key==="End"?R.value.length-1:(O+s+R.value.length)%R.value.length;C.value=R.value[se];const Ce=L.currentTarget.parentElement;await e.nextTick(),Ce?.querySelector(`#${_}-tab-${C.value}`)?.focus()}return(L,f)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(i).title,"aria-busy":e.unref(E)},[e.createElementVNode("header",Yl,[e.createElementVNode("div",Xl,[e.createVNode(Y._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(d)})},e.toDisplayString(St.value),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(i).sectionsLabel},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,s=>(e.openBlock(),e.createElementBlock("button",{id:`${_}-tab-${s}`,key:s,type:"button",role:"tab","aria-selected":e.unref(C)===s,"aria-controls":`${_}-panel-${s}`,tabindex:e.unref(C)===s?0:-1,onClick:O=>C.value=s,onKeydown:Mt},[e.createTextVNode(e.toDisplayString(e.unref(i)[`${s}Section`])+" ",1),s==="tools"&&e.unref(p).toolPending.value||s==="advanced"&&e.unref(v)?(e.openBlock(),e.createElementBlock("span",er)):e.createCommentVNode("",!0)],40,Ql))),128))],8,Zl),e.createElementVNode("div",{class:"mr-designer-mode",role:"group","aria-label":e.unref(i).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(te)==="design",onClick:f[0]||(f[0]=s=>q("design"))},e.toDisplayString(e.unref(i).design),9,nr),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(te)==="preview",onClick:f[1]||(f[1]=s=>q("preview"))},e.toDisplayString(e.unref(i).preview),9,or)],8,tr),e.createElementVNode("div",ar,[e.createElementVNode("div",lr,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).undo,title:e.unref(i).undo,disabled:t.readonly||e.unref(w)||!e.unref(B),onClick:f[2]||(f[2]=s=>{e.unref(U).clearLocks(),e.unref(p).undo()})},[...f[59]||(f[59]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)])],8,rr),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).redo,title:e.unref(i).redo,disabled:t.readonly||e.unref(w)||!e.unref(V),onClick:f[3]||(f[3]=s=>{e.unref(U).clearLocks(),e.unref(p).redo()})},[...f[60]||(f[60]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)])],8,ir)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(w)||!e.unref(d),onClick:f[4]||(f[4]=(...s)=>e.unref(p).reset&&e.unref(p).reset(...s))},e.toDisplayString(e.unref(i).reset),9,sr),t.save?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",title:_e.value||e.unref(i).save,"aria-describedby":ke.value.length?`${_}-pending`:_e.value?`${_}-save-reason`:void 0,disabled:t.readonly||e.unref(w)||e.unref(v)||e.unref(p).toolPending.value||!!e.unref(p).fieldChange.value||!e.unref(y).ok||!e.unref(d),onClick:f[5]||(f[5]=(...s)=>e.unref(p).save&&e.unref(p).save(...s))},[e.createVNode(Y._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(E)?e.unref(i).saving:e.unref(i).save),1)],8,cr)):e.createCommentVNode("",!0),t.save&&_e.value&&!ke.value.length?(e.openBlock(),e.createElementBlock("span",{key:1,id:`${_}-save-reason`,class:"mr-designer-save-reason"},e.toDisplayString(_e.value),9,dr)):e.createCommentVNode("",!0)])]),e.createVNode(pl,{recovery:e.unref(p).recovery,conflict:e.unref(p).conflict,readonly:t.readonly,"can-load":!!t.loadLatest,"can-copy":!!t.keepCopy,messages:t.recoveryMessages},null,8,["recovery","conflict","readonly","can-load","can-copy","messages"]),e.createVNode(qa,{messages:t.productMessages,change:e.unref(p).fieldChange.value,disabled:e.unref(ee),onConfirm:e.unref(p).confirmFieldChange,onCancel:e.unref(p).cancelFieldChange,onLocate:Ue},null,8,["messages","change","disabled","onConfirm","onCancel"]),ke.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,id:`${_}-pending`,class:"mr-designer-pending",role:"status"},[e.createElementVNode("span",null,e.toDisplayString(e.unref(i).pendingToolsLabel),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ke.value,s=>(e.openBlock(),e.createElementBlock("button",{key:s.target,type:"button","aria-label":`${s.label} · ${e.unref(i).unapplied} · ${e.unref(i).returnToConfiguration}`,onClick:O=>Et(s.target)},[e.createTextVNode(e.toDisplayString(s.label),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(i).unapplied)+" ↗",1)],8,mr))),128)),e.createElementVNode("small",null,e.toDisplayString(e.unref(i).pendingToolsHint),1)],8,ur)):e.createCommentVNode("",!0),e.unref($)?(e.openBlock(),e.createElementBlock("div",{key:1,role:"alertdialog","aria-label":e.unref(i).discardTitle,class:"mr-designer-confirm",onKeydown:f[8]||(f[8]=e.withKeys(e.withModifiers(s=>e.unref(p).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(i).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:tt,type:"button",onClick:f[6]||(f[6]=s=>e.unref(p).decideDiscard(!1))},e.toDisplayString(e.unref(i).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:f[7]||(f[7]=s=>e.unref(p).decideDiscard(!0))},e.toDisplayString(e.unref(i).discard),1)])],40,pr)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(C)==="tools","is-docked":H.value}])},[e.unref(le).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:e.unref(p).toolEpoch.value,class:"mr-designer-tools"},[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(i).toolsSection},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["outline","reuse","excel","rules","params","review"],s=>e.createElementVNode("button",{key:s,id:`${_}-tool-${s}`,type:"button","aria-pressed":e.unref(K)===s,"aria-describedby":e.unref(p).isToolPending(s)?`${_}-pending`:void 0,onClick:O=>K.value=s},[e.createTextVNode(e.toDisplayString(e.unref(i)[`${s}Tool`])+" ",1),e.unref(p).isToolPending(s)?(e.openBlock(),e.createElementBlock("span",gr)):e.createCommentVNode("",!0)],8,vr)),64))],8,fr),e.createElementVNode("div",hr,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(e.unref(i).toolTarget),1),e.createElementVNode("select",{value:e.unref(J),"aria-label":e.unref(i).pageDirectory,onChange:f[9]||(f[9]=s=>J.value=Number(s.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b).template.pages,(s,O)=>(e.openBlock(),e.createElementBlock("option",{key:O,value:O},e.toDisplayString(e.unref(De)(s,O,e.unref(i).page)),9,br))),128))],40,yr)]),e.createElementVNode("select",{value:e.unref(ne)?.pageIndex===e.unref(J)?e.unref(ne).componentIndex:-1,"aria-label":e.unref(i).toolChooseComponent,onChange:ue},[e.createElementVNode("option",Er,e.toDisplayString(e.unref(i).toolChooseComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(we.value,s=>(e.openBlock(),e.createElementBlock("option",{key:s.index,value:s.index},e.toDisplayString(s.name),9,Sr))),128))],40,kr),e.createElementVNode("button",{type:"button","aria-pressed":H.value,onClick:oe},[e.createVNode(Y._sfc_main,{name:"columns",size:14}),e.createTextVNode(e.toDisplayString(H.value?e.unref(i).toolPreviewHide:e.unref(i).toolPreview),1)],8,Nr)]),e.createElementVNode("div",wr,[e.unref(le).has("outline")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(c),{key:0,messages:t.productMessages,document:e.unref(b),selection:e.unref(ne),onLocate:Ue},null,8,["messages","document","selection"])),[[e.vShow,e.unref(K)==="outline"]]):e.createCommentVNode("",!0),e.unref(le).has("reuse")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(u),{key:1,messages:t.productMessages,document:e.unref(b),"page-index":e.unref(J),selection:e.unref(ne),fragments:t.fragments,styles:t.documentStyles,disabled:e.unref(ee),accept:e.unref(p).transaction,onSelect:xe},null,8,["messages","document","page-index","selection","fragments","styles","disabled","accept"])),[[e.vShow,e.unref(K)==="reuse"]]):e.createCommentVNode("",!0),e.unref(le).has("params")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(n),{key:2,document:e.unref(b),readonly:e.unref(ee),accept:j,onDirty:f[10]||(f[10]=s=>e.unref(p).setToolPending("params",s))},null,8,["document","readonly"])),[[e.vShow,e.unref(K)==="params"]]):e.createCommentVNode("",!0),e.unref(le).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(a),{key:3,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(b).id,name:e.unref(b).name},"lock-id":"",readonly:e.unref(ee),accept:Bt,onDirty:f[11]||(f[11]=s=>e.unref(p).setToolPending("excel",s))},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(K)==="excel"]]):e.createCommentVNode("",!0),e.unref(le).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(m),{key:4,document:e.unref(b),previous:e.unref(p).originalDocument.value,fixtures:t.reviewFixtures,messages:t.reviewMessages,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:Ue},null,8,["document","previous","fixtures","messages","datasets","data-schemas"])),[[e.vShow,e.unref(K)==="review"]]):e.createCommentVNode("",!0),e.unref(le).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Vr,[e.unref(x).length>1?(e.openBlock(),e.createElementBlock("label",xr,[e.createTextVNode(e.toDisplayString(e.unref(i).area),1),e.createElementVNode("select",{value:e.unref(h),onChange:at},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(x),(s,O)=>(e.openBlock(),e.createElementBlock("option",{key:O,value:O},e.toDisplayString(s.component.title||s.component.dataset),9,Br))),128))],40,Cr)])):e.createCommentVNode("",!0),e.unref(D)?(e.openBlock(),e.createBlock(e.unref(r),{key:1,list:e.unref(D),"recovery-key":`rules:${e.unref(x)[e.unref(h)]?.pageIndex??0}:${e.unref(x)[e.unref(h)]?.componentIndex??0}`,datasets:t.datasets,"dataset-schema":e.unref(ye),"dataset-schemas":t.dataSchemas,readonly:e.unref(ee),onChange:e.unref(Ie),onDirty:f[12]||(f[12]=s=>e.unref(p).setToolPending("rules",s))},null,8,["list","recovery-key","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",Mr,e.toDisplayString(e.unref(i).rulesNeedList),1))],512)),[[e.vShow,e.unref(K)==="rules"]]):e.createCommentVNode("",!0)])])),[[e.vShow,e.unref(C)==="tools"]]):e.createCommentVNode("",!0),e.unref(C)!=="tools"?(e.openBlock(),e.createElementBlock("aside",Dr,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:We,id:`${_}-panel-${e.unref(C)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(C)==="advanced"}]),role:"tabpanel","aria-labelledby":`${_}-tab-${e.unref(C)}`},[re.value||Ve.value?(e.openBlock(),e.createElementBlock("div",$r,[e.createElementVNode("small",null,e.toDisplayString(e.unref(i).flowLayout),1),e.createElementVNode("button",{type:"button",onClick:kt},e.toDisplayString(e.unref(i).excelTool)+" ↗",1)])):e.createCommentVNode("",!0),e.unref(C)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(x).length>1?(e.openBlock(),e.createElementBlock("label",Ir,[e.createTextVNode(e.toDisplayString(e.unref(i).area),1),e.createElementVNode("select",{value:e.unref(h),onChange:at},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(x),(s,O)=>(e.openBlock(),e.createElementBlock("option",{key:O,value:O},e.toDisplayString(s.pageIndex+1)+" "+e.toDisplayString(e.unref(i).page)+" · "+e.toDisplayString(s.component.title||s.component.dataset),9,_r))),128))],40,Rr)])):e.createCommentVNode("",!0),e.unref(D)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Lr,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:wt,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(nt),"aria-controls":`${_}-directory`,"aria-haspopup":"dialog",onClick:f[13]||(f[13]=(...s)=>e.unref(X).toggle&&e.unref(X).toggle(...s)),onKeydown:f[14]||(f[14]=e.withKeys((...s)=>e.unref(X).escape&&e.unref(X).escape(...s),["esc"]))},[e.createElementVNode("span",Ar,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(M)?.column.header||e.unref(i).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(M)?.column.field||"—"),1)]),e.createElementVNode("span",Fr,[e.createTextVNode(e.toDisplayString(e.unref(i).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(D).columns.length),1),e.createVNode(Y._sfc_main,{name:"chevron-down",size:13})])],40,Pr),e.createElementVNode("div",Hr,[e.createElementVNode("span",{"aria-label":e.unref(i).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(T)>=0?e.unref(T)+1:0),1),f[61]||(f[61]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(D).columns.length),1)],8,Or),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).previousColumn,title:e.unref(i).previousColumn,disabled:e.unref(T)<=0,onClick:f[15]||(f[15]=s=>e.unref(G).stepColumn(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:14})],8,zr),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).nextColumn,title:e.unref(i).nextColumn,disabled:e.unref(T)>=e.unref(D).columns.length-1,onClick:f[16]||(f[16]=s=>e.unref(G).stepColumn(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:14})],8,Gr)])]),e.unref(M)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(w)||e.unref(v),"aria-label":e.unref(i).columnProperties},[e.createElementVNode("div",qr,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).header),1),e.createElementVNode("input",{value:e.unref(M).column.header,onInput:f[17]||(f[17]=s=>e.unref(p).setColumn(e.unref(M).index,"header",pe(s)))},null,40,Wr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).field),1),e.createElementVNode("input",{value:e.unref(M).column.field,list:e.unref(ye)?`${_}-fields`:void 0,onChange:f[18]||(f[18]=s=>e.unref(p).setColumn(e.unref(M).index,"field",pe(s)))},null,40,Ur)]),e.unref(ye)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${_}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ye).fields,s=>(e.openBlock(),e.createElementBlock("option",{key:s.field,value:s.field},e.toDisplayString(s.label)+" · "+e.toDisplayString(s.type)+" "+e.toDisplayString(s.unit),9,Kr))),128))],8,Jr)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Yr,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).formatGroup),1),e.createElementVNode("div",Xr,[e.createElementVNode("label",Zr,[e.createTextVNode(e.toDisplayString(e.unref(i).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(M).column.widthMm,disabled:Ve.value,onChange:f[19]||(f[19]=s=>e.unref(p).setColumn(e.unref(M).index,"widthMm",pe(s)))},null,40,Qr)]),e.createElementVNode("label",ei,[e.createTextVNode(e.toDisplayString(e.unref(i).semantic),1),e.createElementVNode("select",{value:e.unref(M).column.semanticRole||"text",onChange:f[20]||(f[20]=s=>e.unref(p).setColumn(e.unref(M).index,"semanticRole",pe(s)))},[e.createElementVNode("option",ni,e.toDisplayString(e.unref(i).identifier),1),e.createElementVNode("option",oi,e.toDisplayString(e.unref(i).dimension),1),e.createElementVNode("option",ai,e.toDisplayString(e.unref(i).measure),1),e.createElementVNode("option",li,e.toDisplayString(e.unref(i).date),1),e.createElementVNode("option",ri,e.toDisplayString(e.unref(i).text),1)],40,ti)])]),e.createElementVNode("div",ii,[e.createElementVNode("span",null,e.toDisplayString(e.unref(i).bodyAlign),1),e.createVNode(Ze,{"model-value":e.unref(M).column.align??e.unref(M).column.style?.align??e.unref(D).align??"left",label:e.unref(i).bodyAlign,labels:ot.value,"auto-label":e.unref(i).autoShort,"allow-auto":"","onUpdate:modelValue":f[21]||(f[21]=s=>e.unref(p).setColumn(e.unref(M).index,"align",s))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",si,[e.createElementVNode("span",null,e.toDisplayString(e.unref(i).headerAlign),1),e.createVNode(Ze,{"model-value":e.unref(p).headerAlignments.value[e.unref(M).index]||"left",label:e.unref(i).headerAlign,labels:ot.value,"auto-label":e.unref(i).autoShort,"onUpdate:modelValue":f[22]||(f[22]=s=>e.unref(p).setColumn(e.unref(M).index,"headerAlign",s))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",ci,[e.createTextVNode(e.toDisplayString(e.unref(i).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(M).column.editable===!0,onChange:f[23]||(f[23]=s=>e.unref(p).setColumn(e.unref(M).index,"editable",Je(s)))},null,40,di)]),e.createElementVNode("div",ui,[e.createElementVNode("span",null,e.toDisplayString(e.unref(i).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).moveColumnLeft,title:e.unref(i).moveColumnLeft,disabled:Ve.value||e.unref(T)<=0,onClick:f[24]||(f[24]=s=>e.unref(Re)(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:13})],8,mi),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).moveColumnRight,title:e.unref(i).moveColumnRight,disabled:Ve.value||e.unref(T)>=e.unref(D).columns.length-1,onClick:f[25]||(f[25]=s=>e.unref(Re)(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:13})],8,pi),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(M).column.hidden!==!0,disabled:Ve.value||e.unref(M).column.hidden!==!0&&e.unref(D).columns.filter(s=>!s.hidden).length===1,onChange:f[26]||(f[26]=s=>e.unref(p).setColumn(e.unref(M).index,"hidden",!Je(s)))},null,40,fi)])])],8,jr)):e.createCommentVNode("",!0),e.unref(nt)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${_}-directory`,ref_key:"directoryPanel",ref:Vt,role:"dialog","aria-label":e.unref(i).columnDirectory,class:"mr-designer-directory",onKeydown:f[38]||(f[38]=e.withKeys((...s)=>e.unref(X).escape&&e.unref(X).escape(...s),["esc"])),onFocusout:f[39]||(f[39]=(...s)=>e.unref(X).leave&&e.unref(X).leave(...s))},[e.createElementVNode("div",gi,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(i).columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(D).columns.length),1)]),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).closeDirectory,onClick:f[27]||(f[27]=s=>e.unref(X).close(!0))},[e.createVNode(Y._sfc_main,{name:"close",size:15})],8,hi)]),e.createElementVNode("div",yi,[e.createVNode(Y._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:xt,"onUpdate:modelValue":f[28]||(f[28]=s=>e.isRef(z)?z.value=s:null),type:"search","aria-label":e.unref(i).columnsSearch,placeholder:e.unref(i).columnsSearch,onKeydown:f[29]||(f[29]=(...s)=>e.unref(X).searchKeydown&&e.unref(X).searchKeydown(...s))},null,40,bi),[[e.vModelText,e.unref(z)]]),e.unref(z)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(i).clearSearch,title:e.unref(i).clearSearch,onClick:f[30]||(f[30]=s=>z.value="")},[e.createVNode(Y._sfc_main,{name:"close",size:13})],8,ki)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ei,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(w)||e.unref(v)||!e.unref(F).length,onClick:f[31]||(f[31]=s=>e.unref(p).selectVisible(!0))},e.toDisplayString(e.unref(i).selectVisible),9,Si),e.unref(Z).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:f[32]||(f[32]=(...s)=>e.unref(p).clearSelection&&e.unref(p).clearSelection(...s))},e.toDisplayString(e.unref(i).clearSelection),1)):e.createCommentVNode("",!0),e.unref(Z).length?(e.openBlock(),e.createElementBlock("span",Ni,e.toDisplayString(e.unref(i).columnsSelected)+" "+e.toDisplayString(e.unref(Z).length),1)):(e.openBlock(),e.createElementBlock("span",wi,e.toDisplayString(e.unref(F).length)+" / "+e.toDisplayString(e.unref(D).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:Ct,class:"mr-designer-column-list","aria-label":e.unref(i).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(X).windowColumns.value,({column:s,index:O})=>(e.openBlock(),e.createElementBlock("div",{key:O,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(T)===O}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(i).selectColumn} ${s.header}`,checked:e.unref(Z).includes(O),disabled:t.readonly||e.unref(w)||e.unref(v),onChange:se=>e.unref(p).toggleColumn(O,Je(se))},null,40,xi),e.createElementVNode("button",{type:"button","data-column-index":O,"aria-pressed":e.unref(T)===O,tabindex:e.unref(Nt)===O?0:-1,onClick:se=>e.unref(X).choose(O),onKeydown:f[33]||(f[33]=(...se)=>e.unref(X).navigate&&e.unref(X).navigate(...se))},[e.createElementVNode("span",Bi,e.toDisplayString(O+1),1),e.createElementVNode("span",Mi,[e.createElementVNode("strong",null,e.toDisplayString(s.header),1),e.createElementVNode("small",null,e.toDisplayString(s.field),1)]),e.unref(T)===O?(e.openBlock(),e.createBlock(Y._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,Ci)],2))),128)),e.unref(F).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Di,[e.createVNode(Y._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(i).noColumns),1)]))],8,Vi),e.unref(F).length>e.unref(X).windowSize?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mr-designer-directory-pages","aria-label":e.unref(i).columnDirectory},[e.createElementVNode("button",{type:"button",disabled:e.unref(X).windowStart.value===0,"aria-label":e.unref(i).previousColumns,onClick:f[34]||(f[34]=s=>e.unref(X).stepWindow(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:14})],8,$i),e.createElementVNode("span",null,e.toDisplayString(e.unref(i).columnWindow.replace("{start}",String(e.unref(X).windowStart.value+1)).replace("{end}",String(Math.min(e.unref(F).length,e.unref(X).windowStart.value+e.unref(X).windowSize))).replace("{total}",String(e.unref(F).length))),1),e.createElementVNode("button",{type:"button",disabled:e.unref(X).windowStart.value+e.unref(X).windowSize>=e.unref(F).length,"aria-label":e.unref(i).nextColumns,onClick:f[35]||(f[35]=s=>e.unref(X).stepWindow(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:14})],8,Ii)],8,Ti)):e.createCommentVNode("",!0),e.unref(Z).length?(e.openBlock(),e.createElementBlock("div",Ri,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(i).batchBody,disabled:t.readonly||e.unref(w)||e.unref(v),onChange:f[36]||(f[36]=s=>lt(s,"align"))},[e.createElementVNode("option",Li,e.toDisplayString(e.unref(i).chooseAlignment),1),e.createElementVNode("option",Pi,e.toDisplayString(e.unref(i).auto),1),e.createElementVNode("option",Ai,e.toDisplayString(e.unref(i).left),1),e.createElementVNode("option",Fi,e.toDisplayString(e.unref(i).center),1),e.createElementVNode("option",Hi,e.toDisplayString(e.unref(i).right),1),e.createElementVNode("option",Oi,e.toDisplayString(e.unref(i).justify),1)],40,_i)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(i).batchHeader,disabled:t.readonly||e.unref(w)||e.unref(v),onChange:f[37]||(f[37]=s=>lt(s,"headerAlign"))},[e.createElementVNode("option",Gi,e.toDisplayString(e.unref(i).chooseAlignment),1),e.createElementVNode("option",ji,e.toDisplayString(e.unref(i).left),1),e.createElementVNode("option",qi,e.toDisplayString(e.unref(i).center),1),e.createElementVNode("option",Wi,e.toDisplayString(e.unref(i).right),1),e.createElementVNode("option",Ui,e.toDisplayString(e.unref(i).justify),1)],40,zi)])])):e.createCommentVNode("",!0)],40,vi)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Ji,e.toDisplayString(e.unref(i).noColumns),1))],64)):e.unref(C)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Ki,[e.createElementVNode("select",{"aria-label":e.unref(i).insertComponent,disabled:e.unref(ee)||re.value,onChange:f[40]||(f[40]=(...s)=>e.unref($e)&&e.unref($e)(...s))},[e.createElementVNode("option",Xi,e.toDisplayString(e.unref(i).insertComponent),1),e.createElementVNode("option",Zi,e.toDisplayString(e.unref(i).insertText),1),e.createElementVNode("option",{value:"list",disabled:!!e.unref(b).template.repeat},e.toDisplayString(e.unref(i).insertList),9,Qi),e.createElementVNode("option",es,e.toDisplayString(e.unref(i).insertImage),1),e.createElementVNode("option",ts,e.toDisplayString(e.unref(i).insertRect),1),e.createElementVNode("option",ns,e.toDisplayString(e.unref(i).insertQrcode),1),e.createElementVNode("option",os,e.toDisplayString(e.unref(i).insertBarcode),1)],40,Yi),e.createElementVNode("button",{type:"button",title:e.unref(i).duplicateComponent,"aria-label":e.unref(i).duplicateComponent,disabled:e.unref(ee)||re.value||!e.unref(ae),onClick:f[41]||(f[41]=(...s)=>e.unref(U).duplicate&&e.unref(U).duplicate(...s))}," + ",8,as),e.createElementVNode("button",{type:"button",title:e.unref(i).removeComponent,"aria-label":e.unref(i).removeComponent,disabled:e.unref(ee)||re.value||!e.unref(ae),onClick:f[42]||(f[42]=(...s)=>e.unref(U).remove&&e.unref(U).remove(...s))},[e.createVNode(Y._sfc_main,{name:"close",size:14})],8,ls)]),e.unref(b).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",rs,[e.createTextVNode(e.toDisplayString(e.unref(i).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[43]||(f[43]=s=>e.isRef(J)?J.value=s:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b).template.pages,(s,O)=>(e.openBlock(),e.createElementBlock("option",{key:O,value:O},e.toDisplayString(e.unref(De)(s,O,e.unref(i).page)),9,is))),128))],512),[[e.vModelSelect,e.unref(J),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",ss,[e.createTextVNode(e.toDisplayString(e.unref(i).components),1),e.createElementVNode("select",{value:e.unref(ne)&&e.unref(ne).pageIndex===e.unref(J)?e.unref(ne).componentIndex:-1,onChange:f[44]||(f[44]=s=>xe({pageIndex:e.unref(J),componentIndex:Number(pe(s))}))},[e.createElementVNode("option",ds,e.toDisplayString(e.unref(i).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(we.value,s=>(e.openBlock(),e.createElementBlock("option",{key:s.index,value:s.index},e.toDisplayString(s.index+1)+" · "+e.toDisplayString(s.name),9,us))),128))],40,cs)]),e.unref(U).selections.value.length?(e.openBlock(),e.createElementBlock("div",ms,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(U).selections.value.length)+" "+e.toDisplayString(e.unref(i).component),1),e.createElementVNode("button",{type:"button",disabled:e.unref(ee),onClick:f[45]||(f[45]=(...s)=>e.unref(U).toggleLock&&e.unref(U).toggleLock(...s))},e.toDisplayString(e.unref(U).allLocked.value?e.unref(i).unlockSelection:e.unref(i).lockSelection),9,ps),e.createElementVNode("select",{"aria-label":e.unref(i).alignSelection,disabled:e.unref(ee)||re.value||e.unref(U).selections.value.length<2,onChange:f[46]||(f[46]=s=>{e.unref(U).align(pe(s)),s.target.value=""})},[e.createElementVNode("option",vs,e.toDisplayString(e.unref(i).alignSelection),1),e.createElementVNode("option",gs,e.toDisplayString(e.unref(i).leftEdges),1),e.createElementVNode("option",hs,e.toDisplayString(e.unref(i).centers),1),e.createElementVNode("option",ys,e.toDisplayString(e.unref(i).rightEdges),1),e.createElementVNode("option",bs,e.toDisplayString(e.unref(i).topEdges),1),e.createElementVNode("option",ks,e.toDisplayString(e.unref(i).middles),1),e.createElementVNode("option",Es,e.toDisplayString(e.unref(i).bottomEdges),1)],40,fs),e.createElementVNode("button",{type:"button",disabled:e.unref(ee)||re.value||e.unref(U).selections.value.length<3,onClick:f[47]||(f[47]=s=>e.unref(U).distribute("horizontal"))},e.toDisplayString(e.unref(i).horizontalSpacing),9,Ss),e.createElementVNode("button",{type:"button",disabled:e.unref(ee)||re.value||e.unref(U).selections.value.length<3,onClick:f[48]||(f[48]=s=>e.unref(U).distribute("vertical"))},e.toDisplayString(e.unref(i).verticalSpacing),9,Ns),e.unref(U).allLocked.value?(e.openBlock(),e.createElementBlock("small",ws,e.toDisplayString(e.unref(i).sessionLock),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(ae)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Vs,[e.createElementVNode("button",{type:"button",disabled:e.unref(ee)||re.value||e.unref(ne)?.componentIndex===0,onClick:f[49]||(f[49]=s=>e.unref(U).reorder(-1))},e.toDisplayString(e.unref(i).backward),9,xs),e.createElementVNode("button",{type:"button",disabled:e.unref(ee)||re.value||e.unref(ne)?.componentIndex===(e.unref(b).template.pages[e.unref(J)]?.components.length??0)-1,onClick:f[50]||(f[50]=s=>e.unref(U).reorder(1))},e.toDisplayString(e.unref(i).forward),9,Cs)]),e.createVNode(Zo,{component:e.unref(ae),"geometry-disabled":re.value,disabled:e.unref(ee)||e.unref(U).locked(e.unref(ne)),messages:e.unref(i),repeat:e.unref(b).template.repeat,schema:Ne.value,onGeometry:e.unref(U).geometry,onPatch:e.unref(qe)},null,8,["component","geometry-disabled","disabled","messages","repeat","schema","onGeometry","onPatch"]),e.unref(ae).kind==="list"?(e.openBlock(),e.createBlock(El,{key:0,list:e.unref(ae),disabled:e.unref(ee)||re.value,messages:e.unref(i),onCommand:e.unref(ge)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Bs,e.toDisplayString(e.unref(i).noComponent),1))],64)):e.unref(C)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).templateDetails),1),e.createElementVNode("label",Ms,[e.createTextVNode(e.toDisplayString(e.unref(i).name),1),e.createElementVNode("input",{value:e.unref(b).name,disabled:t.readonly||e.unref(w)||e.unref(v),onInput:f[51]||(f[51]=s=>e.unref(p).setName(pe(s)))},null,40,Ds)]),e.createElementVNode("label",Ts,[e.createTextVNode(e.toDisplayString(e.unref(i).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(b).description,disabled:t.readonly||e.unref(w)||e.unref(v),onInput:f[52]||(f[52]=s=>e.unref(p).setDescription(pe(s)))},null,40,$s)]),e.createVNode(ka,{document:e.unref(b),"page-index":e.unref(J),disabled:e.unref(ee),messages:e.unref(i),onSelect:f[53]||(f[53]=s=>J.value=s),onCommand:bt,onLocate:f[54]||(f[54]=s=>{xe({pageIndex:e.unref(J),componentIndex:s}),q("design")})},null,8,["document","page-index","disabled","messages"]),e.createVNode(Fa,{document:e.unref(b),datasets:Object.keys(t.datasets??{}),schemas:t.dataSchemas,disabled:e.unref(ee),messages:e.unref(i),onChange:f[55]||(f[55]=s=>{e.unref(p).transaction(O=>{s?O.template.repeat=s:delete O.template.repeat})})},null,8,["document","datasets","schemas","disabled","messages"]),e.createElementVNode("details",Is,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(i).technicalDetails),1),e.createElementVNode("dl",Rs,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(i).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(b).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(i).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(b).revision||e.unref(i).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).advancedTitle),1),e.createElementVNode("label",_s,[e.createTextVNode(e.toDisplayString(e.unref(i).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":f[56]||(f[56]=s=>e.isRef(N)?N.value=s:null),class:"mr-designer-json","aria-label":e.unref(i).json,disabled:t.readonly||e.unref(w),spellcheck:"false"},null,8,Ls),[[e.vModelText,e.unref(N)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(w),onClick:f[57]||(f[57]=(...s)=>e.unref(p).applyJson&&e.unref(p).applyJson(...s))},e.toDisplayString(e.unref(i).applyJson),9,Ps)],64)),e.unref(v)?(e.openBlock(),e.createElementBlock("p",As,e.toDisplayString(e.unref(i).jsonPending),1)):e.createCommentVNode("",!0)],10,Tr)])):e.createCommentVNode("",!0),e.unref(C)!=="tools"||H.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(i).previewTitle},[e.unref(g)?(e.openBlock(),e.createElementBlock("div",Hs,e.toDisplayString(e.unref(g)),1)):e.createCommentVNode("",!0),e.unref(y).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",Os,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).errors,s=>(e.openBlock(),e.createElementBlock("li",{key:s.path},e.toDisplayString(s.path)+":"+e.toDisplayString(s.message),1))),128))])),e.unref(te)==="design"&&e.unref(y).ok?(e.openBlock(),e.createBlock(Mn,{key:2,document:e.unref(b),selection:e.unref(ne),selections:e.unref(U).selections.value,locked:e.unref(U).locked,"active-column-index":e.unref(T),"page-index":e.unref(J),datasets:t.datasets,disabled:e.unref(ee)||re.value||e.unref(p).isToolPending("rules"),messages:e.unref(i),onSelect:xe,onGeometry:e.unref(U).geometry,onColumn:e.unref(G).activate,onWidth:f[58]||(f[58]=(s,O)=>e.unref(p).setColumn(s,"widthMm",String(O)))},null,8,["document","selection","selections","locked","active-column-index","page-index","datasets","disabled","messages","onGeometry","onColumn"])):e.unref(I)&&e.unref(y).ok?(e.openBlock(),e.createBlock(e.unref(Xe.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(I),messages:{title:e.unref(i).previewTitle,columnDirectory:e.unref(i).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",zs,e.toDisplayString(e.unref(i).invalid),1))],8,Fs)):e.createCommentVNode("",!0)],2)],8,Kl))}}),js=Y._export_sfc(Gs,[["__scopeId","data-v-f0e5331d"]]),qs={cancel:"取消检查",cancelled:"本次检查已取消,没有替换上次结果。",progress:"组样例已检查",sampleConsentMissing:"请先确认当前数据已经脱敏",sampleNameMissing:"请为样例命名",sampleLimit:"最多配置 20 组验收样例",sampleNameDuplicate:"样例名称不能重复",sampleRowsLimit:"会话样例总行数不能超过 1000,请传入显式的小样例",namedFixtures:"命名验收样例",fixtureName:"样例名称",fixturePlaceholder:"例如:正常明细、空数据、跨页、超长文本",deidentified:"我确认当前样例数据已脱敏,仅用于本次会话验收",capture:"保存当前数据为样例",remove:"移除",fixtureHint:"显式样例逐组验收,不使用上方截断范围;每组总计最多 1000 行,最多 20 组。样例数据不会写入模板或草稿存储。",parameters:"样例参数(可选)",compare:"对比基线与草稿",dimensions:"页面尺寸",fieldsAdded:"新增字段引用",fieldsRemoved:"移除字段引用",baselinePreview:"基线 · 同一份样例",draftPreview:"草稿 · 同一份样例",closeCompare:"收起对比",stale:"输入或验收范围已变化,旧结果已失效,请重新运行检查。",scope:"上次实测范围",datasets:"个数据集",treeHint:"树形数据保留完整父子关系;20/100 作为本次总节点预算,超出请选全部或提供完整小样例。",title:"变更与验收",run:"运行检查",running:"检查中…",samples:"验收样例",none:"仅检查结构",first20:"每个数据集前 20 行",first100:"每个数据集前 100 行",all:"全部当前数据(总计 ≤1000 行)",changes:"模板变更",issues:"待处理项",results:"样例结果",noChanges:"与基线一致",noIssues:"本次检查未发现问题",empty:"选择验收样例后运行,检查字段映射、排版与输出能力。",baseline:"未提供上一版本,仅检查当前模板。",errors:"错误",warnings:"提示",locate:"定位",before:"修改前",after:"修改后",breaking:"影响兼容性",acknowledge:"已确认字段与结构变更",truncated:"变更较多,仅展示前 500 项;兼容检查仍包含全部变更。",pages:"页",rows:"行",checked:"检查结果对应本次样例,不代替服务端发布权限与全量数据校验。",categories:{metadata:"信息",structure:"结构",binding:"字段",calculation:"计算",format:"样式"},kinds:{added:"新增",removed:"删除",modified:"修改",moved:"调序"}},Ws={recoveredMapping:"映射配置已恢复,请重新选择原 Excel 文件后核对;源文件及业务数据未暂存。",recoveredSheetMissing:"所选文件没有草稿所需的工作表,请重新选择原文件或放弃映射草稿。",tableMode:"传统整表",multiRegions:"多区域绑定",multiHint:"点击单元格选择起点,Shift 点击选择终点;每个动态区域选择一行原型。",addRegion:"创建区域",removeRegion:"删除区域",regionProperties:"当前区域",regionReady:"就绪",regionPending:"待补齐",regionError:"需修正",locateIssue:"定位并修正",nextDataset:"下一步:选择业务数据集",nextRowKey:"下一步:选择稳定业务主键",nextField:"下一步:补齐或修正逐列字段映射",nextRange:"下一步:检查原型范围及区域重叠",nextRegion:"下一步:在原始模板中选择一行并创建区域",nextHeader:"下一步:选择整行并标记表头和明细",nextFooter:"下一步:检查重复页尾范围",nextContract:"下一步:检查数据集契约和样例",dataContract:"数据集契约",inspectIssues:"查看待修正项",previousIssues:"上一组问题",nextIssues:"下一组问题",noCellSelection:"请先点击单元格,Shift 点击选择一行范围",limitRegions:"最多创建 128 个区域",applying:"正在确认模板…",regionCoordinates:"原型范围",regionMode:"填充方式",recordMode:"单记录",repeatMode:"纵向重复",recordHint:"接收零或一行数据,保留旁列静态内容;多行输入会明确报错。",repeatHint:"按数据行纵向扩展,下方内容自动顺延;旁列不能放置非空静态内容。",bindRegionHeader:"选区作为表头",noRegionHeader:"无区域表头",clearHeader:"清除区域表头",flowFooter:"重复页尾",flowFooterHint:"选择来源最后几行的完整列宽;为每页预留空间,避免明细覆盖。",bindFooter:"选区作为页尾",clearFooter:"清除重复页尾",concurrency:"业务并发字段",revisionField:"修订字段",sourceTokenField:"来源令牌字段",selectionCellLabel:"选择源单元格",searchFields:"搜索字段名称、编码或单位",fieldLimit:"候选最多显示 64 项;输入字段名筛选,已选映射始终保留。",restoreDraft:"恢复工具草稿",title:"Excel 业务绑定",intro:"保留模板版式,明确数据来源",upload:"选择 Excel 模板",replace:"更换文件",loading:"正在解析模板…",cancel:"取消解析",source:"原始模板",sourceHint:"点击行号选择,Shift 点击扩展;选择整行区域后标记用途。",sourceOnly:"来源样例仅供设计,应用时将全部替换为接口数据。",sheet:"工作表",dataset:"业务数据集",chooseDataset:"选择数据集契约",rowKey:"稳定业务主键",chooseRowKey:"选择业务主键",titleRegion:"标题",headerRegion:"多层表头",detailRegion:"样例明细",footerRegion:"静态尾页",optional:"可选",selectRegion:"标记选中行",clear:"清除",mapping:"逐列映射",coverage:"映射覆盖",physical:"Excel 列",business:"业务字段",chooseField:"选择已声明字段",selected:"已选行",previousRows:"上一组行",nextRows:"下一组行",previousColumns:"上一组列",nextColumns:"下一组列",rowStart:"预览起始行",columnStart:"预览起始列",apply:"校验并使用模板",check:"校验绑定",identity:"新模板",templateId:"模板标识",templateName:"模板名称",issues:"请先修正绑定",ready:"绑定校验通过",noSource:"导入 .xlsx,开始绑定业务数据",noContract:"请由接入方提供数据集字段契约,再配置业务绑定。",fieldType:"类型",precision:"位小数",sample:"契约样例",unnamed:"未标记",applied:"模板已生成,等待接入方确认",readonly:"当前只读",invalidFile:"请选择未加密的 .xlsx 文件",emptySelection:"请先在原始模板中选择行",footerHint:"静态尾页保留为独立页面,不随明细重复;不是每页页脚。",inspectWarning:"来源兼容性提示",session:"绑定会话可随草稿保存,再次传入即可恢复",decimals:"精确小数按原文本保留",selectionLabel:"选择源行",regionLegend:"区域用途",summary:"绑定摘要",stepSource:"选模板",stepRegions:"标区域",stepFields:"绑字段",stepValidate:"校验应用",errors:"项问题",sourceError:"模板解析失败",dimensions:"原始范围",mappedTo:"绑定到",sampleOnly:"仅契约样例",schemaOnly:"契约字段,不执行接口查询"},Us={restoreDraft:"恢复工具草稿",catalog:"规则与字段",searchFields:"搜索字段、类型或单位",useField:"使用此字段",shown:"显示",explanation:"计算解释",sourceValues:"源值",expression:"表达式",result:"结果",notChecked:"修改后请重新验算",nullReason:"空值依规则保留;空值传播与除零策略见计算边界。",sourceHint:"最多展示 5 条明细;分组和全量聚合以当前验算范围为准。",pending:"未应用配置",detail:"主从",matrix:"矩阵",tree:"树形",treeInput:"输入结构",treeFlat:"扁平父子表",treeNested:"嵌套子节点",treeId:"节点业务键",treeParent:"父节点键",treeChildren:"子节点数组字段",treeLabel:"层级标签列",treeIndent:"每级缩进 · mm",treeOrphan:"孤儿节点",treeAsRoot:"作为根节点",treeValues:"父级数值来源",treeSource:"保留来源值",treeLeaves:"按后代叶子聚合",treeRows:"最多节点",treeDepth:"最多层级",treeHint:"全量树展示与导出。总计只统计叶子,避免父子重复。应用将替换普通分组、主从、矩阵和行可见条件;可撤销恢复。",treeReadonly:"嵌套输入首版只读;扁平输入的结构键和派生父级聚合只读。",treeBudget:"树形样例最多 1000 个节点,请提供完整关系样例。",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},Js={paramsTool:"查询参数",paramsDescription:"配置一次,预览与服务端使用同一份校验规则。",paramsDirectory:"参数目录",paramAdd:"添加参数",paramEmpty:"尚未配置查询参数",paramEmptyHint:"添加日期、厂别等条件,报表预览会自动生成查询面板。",paramField:"参数标识",paramLabel:"显示名称",paramType:"控件类型",paramRequired:"必填",paramPlaceholder:"输入提示",paramDefaultEnabled:"设置默认值",paramDefault:"默认值",paramMinimum:"最小值(含边界)",paramMaximum:"最大值(含边界)",paramMinLength:"最少字符数",paramMaxLength:"最多字符数",paramOptions:"静态下拉选项",paramOptionsMode:"选项来源",paramOptionsStatic:"固定选项",paramOptionsRemote:"远程搜索",paramOptionsSource:"来源标识",paramDependencyUnavailable:"已失效,请取消选择",paramDependencies:"上级条件",paramRemoteHint:"来源标识由项目的统一选项服务解析。上级条件变化会清空下级选择;模板不保存接口地址或账号。",paramOptionValue:"接口值",paramOptionLabel:"显示文字",paramOptionAdd:"添加选项",paramRemove:"删除参数",paramOptionRemove:"删除选项",paramMoveUp:"上移参数",paramMoveDown:"下移参数",paramApply:"校验并应用参数",paramRestore:"恢复参数草稿",paramPending:"尚未应用",paramReady:"规则有效",paramInvalid:"规则待修正",paramIssueCount:"待修正问题",paramLocateFirst:"定位首个问题",paramUnnamed:"未命名参数",paramRangeStart:"默认开始日期",paramRangeEnd:"默认结束日期",paramConflict:"模板参数已在其他操作中变更。请先恢复参数草稿,再继续编辑。",paramApplyFailed:"参数未应用,请检查模板校验信息。",paramRenameHint:"参数标识决定接口取数键。新增、删除或改名后,请同步检查接入方的数据查询;插件不会修改外部接口。",paramChanges:"接口参数键变更",paramAdded:"新增",paramRemoved:"移除",paramWire:"接口值格式",paramNoDefault:"未设置默认值",paramRangeHint:"两端均须填写,开始日期不能晚于结束日期;边界约束作用于整个范围。",paramText:"文本",paramNumber:"数字",paramDate:"日期",paramMonth:"月份",paramYear:"年份",paramDateRange:"日期范围",paramSelect:"下拉选择"},Ks={batchTitle:"批量生成",batchDescription:"每组参数独立生成;成功结果由接入方保存,当前页面仅保留回执。",batchAdd:"添加一组",batchDuplicate:"复制参数",batchDuplicateCompleted:"复制为新任务",batchRemove:"删除参数组",batchRun:"生成待处理",batchContinue:"继续未完成",batchRunning:"正在生成",batchRetry:"仅重试失败项",batchCancel:"取消剩余任务",batchCancelling:"正在取消…",batchPending:"待生成",batchCompleted:"已完成",batchCompletedHint:"此组已生成并保留回执;需修改参数或再次生成,请复制为新任务。",batchFailed:"失败",batchCancelled:"已取消",batchCase:"参数组",batchProgress:"本轮已结束 {completed}/{total} · 失败 {failed} · 取消 {cancelled}",batchInvalid:"请修正参数错误后再生成;本次未启动任何任务。",batchEmpty:"添加一组参数开始批量生成",batchNoMatches:"当前状态没有参数组",batchFilter:"按生成状态筛选",batchAll:"全部",batchNextFailure:"下一失败项",batchNoInstance:"已完成,接入方未返回可打开的实例标识。",batchOpen:"打开报表实例",batchLimit:"当前最多支持 {count} 组参数。",batchChanged:"参数定义或执行配置已变更,已请求取消当前批次,请核对后重新生成。",batchPages:"参数组分页",batchPrevious:"上一页",batchNext:"下一页",batchPage:"第 {page}/{pages} 页 · 共 {total} 组"},Ys={publicationChanged:"发布修订与目录不一致,请刷新目录后重新查看",continueDraft:"继续编辑草稿",viewPublished:"查看发布版",draft:"草稿",published:"已发布",draftPending:"草稿待发布",retrySearch:"重试目录查询",retryOpen:"重试打开模板",retryCopy:"重试创建副本",openingTarget:"正在打开 {name}…",creatingTarget:"正在创建 {name} 的副本…",title:"模板库",subtitle:"按业务分类查找、打开或复制模板",search:"搜索名称、编号或标签",all:"全部模板",refresh:"刷新",open:"打开设计器",copy:"复制模板",empty:"没有匹配的模板",emptyHint:"调整关键词或分类后重试",loadMore:"下一页",previous:"上一页",page:"页",loading:"正在加载…",retry:"重试",revision:"修订",copyTitle:"复制为新模板",newId:"新模板编号",newName:"新模板名称",create:"创建副本",cancel:"取消",count:"项",missing:"模板不存在或已不可访问",stale:"目录返回了重复项或无效分页游标",invalid:"模板目录响应格式无效"},Xs=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-Dn6X9UmY.cjs"))),Zs=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-Bs43BGNp.cjs"))),Qs=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-XhGHK8DE.cjs"))),ec=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-Da4akw6V.cjs"))),tc=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportBatchPanel-wP9m9Pj1.cjs"))),nc=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportTemplateLibrary-Sxr3eD0J.cjs"))),oc=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-JTSR53vJ.cjs"))),ac=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-Kx35S0Ql.cjs")));exports.DEFAULT_RULE_EDITOR_MESSAGES=Us;exports.EXCEL_BINDING_MESSAGES=Ws;exports.ExcelBindingWizard=Zs;exports.PARAM_EDITOR_MESSAGES=Js;exports.ParamEditor=ec;exports.REPORT_BATCH_MESSAGES=Ks;exports.ReportBatchPanel=tc;exports.ReportTemplateEditor=js;exports.ReportTemplateLibrary=nc;exports.RuleEditor=Qs;exports.TEMPLATE_EDITOR_MESSAGES=me;exports.TEMPLATE_LIBRARY_MESSAGES=Ys;exports.TEMPLATE_PRODUCT_MESSAGES=vt;exports.TEMPLATE_RECOVERY_MESSAGES=gt;exports.TEMPLATE_REVIEW_MESSAGES=qs;exports.TemplateOutlinePanel=oc;exports.TemplateReusePanel=ac;exports.TemplateReviewPanel=Xs;exports.createTemplateDraftStorage=Al;exports.useTemplateToolDraft=Bl;
@@ -1 +0,0 @@
1
- "use strict";const g=require("./batch-BaP6pWDE.cjs"),D=require("./grid-geometry-CZ_cYB6O.cjs");function m(e){return Number.isFinite(e)?Math.max(0,e):0}function C(e,r=0){const t=e.length,n=m(r),o=new Array(t+1);o[0]=0;for(let i=0;i<t;i++)o[i+1]=o[i]+m(e[i]??0)+n;const u=o[t];function f(i){let c=0,a=t-1,h=0;for(;c<=a;){const p=c+a>>>1;o[p]<=i?(h=p,c=p+1):a=p-1}return h}function l(i,c,a=1){if(t===0)return{start:0,end:-1,padTopPx:0,padBottomPx:0};const h=Math.floor(m(a)),p=m(c),v=f(p),x=Math.max(0,v-h),A=p+m(i);let y=v,b=t-1,I=t-1;for(;y<=b;){const w=y+b>>>1;o[w+1]<A?y=w+1:(I=w,b=w-1)}const S=Math.min(t-1,I+h);return{start:x,end:S,padTopPx:o[x],padBottomPx:Math.max(0,u-o[S+1])}}return{totalHeightPx:u,pageAt:f,offsetAt:i=>o[Math.max(0,Math.min(t,Math.floor(i)))]??0,window:l}}class s extends Error{constructor(r){super(`Report drill: ${r}`),this.code=r,this.name="ReportDrillError"}}function d(e){return typeof e=="string"&&e.trim().length>0&&e.length<=256}function j(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="boolean")return String(e);if(typeof e=="string"&&e.length>0&&e.length<=4096)return e;throw new s("missing-value")}function M(e,r){return Object.getOwnPropertyDescriptor(e,r)?.value}function R(e){if(!Array.isArray(e)||e.length>64)throw new s("config");const r=new Set;for(const t of e){if(!t||!d(t.id)||!d(t.label)||!t.target||!d(t.target.field)||r.has(t.id))throw new s("config");r.add(t.id);const n=t.target;if(n.datasetId!==void 0&&!d(n.datasetId)||n.reportScope!==void 0&&!d(n.reportScope))throw new s("config");if(n.roles!==void 0&&(!Array.isArray(n.roles)||n.roles.length>16||n.roles.some(o=>!d(o))))throw new s("config");E(t.params)}}function E(e){if(e!==void 0){if(!e||typeof e!="object"||Array.isArray(e)||Object.keys(e).length>32)throw new s("config");for(const[r,t]of Object.entries(e)){if(!d(r)||["__proto__","constructor","prototype"].includes(r)||!t||typeof t!="object")throw new s("config");if("value"in t)try{j(t.value)}catch{throw new s("config")}else if(!["value","rowKey","query","field"].includes(t.from)||(t.from==="query"||t.from==="field")&&!d(t.field))throw new s("config")}}}function O(e,r,t){const{target:n}=t,o=r.source?.datasetId??r.component.table?.source?.datasetId;return(r.source?.field??r.table?.columnKey)===n.field&&(n.datasetId===void 0||o===n.datasetId)&&(n.reportScope===void 0||e.pages[r.address.pageIndex]?.meta?.reportScope===n.reportScope)&&(n.roles?n.roles.includes(r.table?.role??""):r.table?.role!=="header")}function K(e,r,t){R(t);const n=g.getReportCellContext(e,r);return n?t.filter(o=>O(e,n,o)):[]}function q(e,r,t,n){if("value"in e)return e.value;switch(e.from){case"value":return t.value;case"rowKey":return t.source?.rowKey;case"query":return M(n,e.field);case"field":{const o=t.component.table?.columnKeys.indexOf(e.field)??-1;return o<0?void 0:g.getReportCellContext(r,{...t.address,columnIndex:o})?.value}}}function P(e,r,t,n={}){R([t]);const o=g.getReportCellContext(e,r);if(!o||!O(e,o,t))throw new s("target");const u=Object.fromEntries(Object.entries(t.params??{}).map(([i,c])=>[i,j(q(c,e,o,n))])),f=Object.entries(n);if(f.length>128||f.some(([i,c])=>!d(i)||typeof c!="string"||c.length>4096))throw new s("config");const l=e.pages[r.pageIndex]?.meta?.reportScope;return Object.freeze({actionId:t.id,params:Object.freeze(u),returnState:Object.freeze({params:Object.freeze(Object.fromEntries(f)),address:Object.freeze({...r}),...typeof l=="string"?{reportScope:l}:{},...o.source?{source:Object.freeze({sourceScope:o.source.sourceScope,datasetId:o.source.datasetId,rowKey:o.source.rowKey,field:o.source.field})}:{}})})}function z(e,r){if(!r.source)return e.pages[r.address.pageIndex]?.meta?.reportScope===r.reportScope&&g.getReportCellContext(e,r.address)?{...r.address}:null;const t=g.createReportCellResolver(e),n=g.reportCellEditKey({address:r.address,source:r.source});for(const[o,u]of e.pages.entries())if(!(r.reportScope!==void 0&&u.meta?.reportScope!==r.reportScope)){for(const[f,l]of u.components.entries())if(l.grid)for(const i of D.resolveGridLayout(l.grid,l.widthMm,l.heightMm).cells){const c={pageIndex:o,componentIndex:f,rowIndex:i.ri,columnIndex:i.ci},a=t(c);if(a?.source&&g.reportCellEditKey(a)===n)return c}}return null}exports.ReportDrillError=s;exports.createPageWindowIndex=C;exports.createReportDrillRequest=P;exports.matchReportDrillActions=K;exports.resolveReportDrillReturn=z;exports.validateReportDrillActions=R;
@@ -1 +0,0 @@
1
- "use strict";const h=require("./style-UgIJSA1F.cjs"),w=["borderTop","borderRight","borderBottom","borderLeft","borderColor","lineColor","lineWidthPt"];function k(r,o){const s=h.resolveBoxBorders(o.style),e=s.inner?[...r.edges]:[];s.top&&e.push({kind:"h",pos:0,from:0,to:o.widthMm}),s.bottom&&e.push({kind:"h",pos:o.heightMm,from:0,to:o.widthMm}),s.left&&e.push({kind:"v",pos:0,from:0,to:o.heightMm}),s.right&&e.push({kind:"v",pos:o.widthMm,from:0,to:o.heightMm});const t=h.resolveStroke(o.style);return e.map(n=>({...n,...t}))}function g(r,o,s){const e=r.get(o);(!e||s.widthPt>e.widthPt)&&r.set(o,s)}function d(r,o,s,e,t,n){const l=s<o.rows.length?o.rows[s].pos:o.rows[o.rows.length-1].pos+o.rows[o.rows.length-1].size;for(let i=e;i<t;i++){const c=o.columns[i];g(r,`h:${s}:${i}`,{kind:"h",pos:l,from:c.pos,to:c.pos+c.size,...n})}}function m(r,o,s,e,t,n){const l=s<o.columns.length?o.columns[s].pos:o.columns[o.columns.length-1].pos+o.columns[o.columns.length-1].size;for(let i=e;i<t;i++){const c=o.rows[i];g(r,`v:${s}:${i}`,{kind:"v",pos:l,from:c.pos,to:c.pos+c.size,...n})}}function p(r,o,s,e){const t=Math.min(o.columns.length,s.ci+(s.cell.colSpan??1)),n=Math.min(o.rows.length,s.ri+(s.cell.rowSpan??1)),l=h.mergeComponentStyles(e,s.cell.style),i=h.resolveBoxBorders(l),c=h.resolveStroke(l);i.top&&d(r,o,s.ri,s.ci,t,c),i.bottom&&d(r,o,n,s.ci,t,c),i.left&&m(r,o,s.ci,s.ri,n,c),i.right&&m(r,o,t,s.ri,n,c)}function v(r){const o=[...r.values()].sort((e,t)=>e.kind.localeCompare(t.kind)||e.pos-t.pos||e.from-t.from),s=[];for(const e of o){const t=s[s.length-1];t&&t.kind===e.kind&&t.pos===e.pos&&Math.abs(t.to-e.from)<1e-6&&t.color===e.color&&t.widthPt===e.widthPt?t.to=e.to:s.push({...e})}return s}function S(r,o){if(!r.cells.some(({cell:n})=>w.some(l=>n.style?.[l]!==void 0)))return k(r,o);const s=new Map,e=new Set,t=r.columns.length;for(const n of r.cells){p(s,r,n,o.style);const l=Math.min(r.rows.length,n.ri+(n.cell.rowSpan??1)),i=Math.min(t,n.ci+(n.cell.colSpan??1));for(let c=n.ri;c<l;c++)for(let f=n.ci;f<i;f++)e.add(c*t+f)}for(let n=0;n<r.rows.length;n++)for(let l=0;l<t;l++)e.has(n*t+l)||p(s,r,{ri:n,ci:l,cell:{}},o.style);return v(s)}exports.resolveGridStrokes=S;
@@ -1,53 +0,0 @@
1
- import { d as p, c as g, e as k } from "./style-CQ1PK8ZB.js";
2
- const S = ["borderTop", "borderRight", "borderBottom", "borderLeft", "borderColor", "lineColor", "lineWidthPt"];
3
- function v(r, o) {
4
- const s = p(o.style), t = s.inner ? [...r.edges] : [];
5
- s.top && t.push({ kind: "h", pos: 0, from: 0, to: o.widthMm }), s.bottom && t.push({ kind: "h", pos: o.heightMm, from: 0, to: o.widthMm }), s.left && t.push({ kind: "v", pos: 0, from: 0, to: o.heightMm }), s.right && t.push({ kind: "v", pos: o.widthMm, from: 0, to: o.heightMm });
6
- const e = g(o.style);
7
- return t.map((n) => ({ ...n, ...e }));
8
- }
9
- function w(r, o, s) {
10
- const t = r.get(o);
11
- (!t || s.widthPt > t.widthPt) && r.set(o, s);
12
- }
13
- function f(r, o, s, t, e, n) {
14
- const l = s < o.rows.length ? o.rows[s].pos : o.rows[o.rows.length - 1].pos + o.rows[o.rows.length - 1].size;
15
- for (let i = t; i < e; i++) {
16
- const c = o.columns[i];
17
- w(r, `h:${s}:${i}`, { kind: "h", pos: l, from: c.pos, to: c.pos + c.size, ...n });
18
- }
19
- }
20
- function m(r, o, s, t, e, n) {
21
- const l = s < o.columns.length ? o.columns[s].pos : o.columns[o.columns.length - 1].pos + o.columns[o.columns.length - 1].size;
22
- for (let i = t; i < e; i++) {
23
- const c = o.rows[i];
24
- w(r, `v:${s}:${i}`, { kind: "v", pos: l, from: c.pos, to: c.pos + c.size, ...n });
25
- }
26
- }
27
- function d(r, o, s, t) {
28
- const e = Math.min(o.columns.length, s.ci + (s.cell.colSpan ?? 1)), n = Math.min(o.rows.length, s.ri + (s.cell.rowSpan ?? 1)), l = k(t, s.cell.style), i = p(l), c = g(l);
29
- i.top && f(r, o, s.ri, s.ci, e, c), i.bottom && f(r, o, n, s.ci, e, c), i.left && m(r, o, s.ci, s.ri, n, c), i.right && m(r, o, e, s.ri, n, c);
30
- }
31
- function M(r) {
32
- const o = [...r.values()].sort((t, e) => t.kind.localeCompare(e.kind) || t.pos - e.pos || t.from - e.from), s = [];
33
- for (const t of o) {
34
- const e = s[s.length - 1];
35
- e && e.kind === t.kind && e.pos === t.pos && Math.abs(e.to - t.from) < 1e-6 && e.color === t.color && e.widthPt === t.widthPt ? e.to = t.to : s.push({ ...t });
36
- }
37
- return s;
38
- }
39
- function z(r, o) {
40
- if (!r.cells.some(({ cell: n }) => S.some((l) => n.style?.[l] !== void 0))) return v(r, o);
41
- const s = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Set(), e = r.columns.length;
42
- for (const n of r.cells) {
43
- d(s, r, n, o.style);
44
- const l = Math.min(r.rows.length, n.ri + (n.cell.rowSpan ?? 1)), i = Math.min(e, n.ci + (n.cell.colSpan ?? 1));
45
- for (let c = n.ri; c < l; c++) for (let h = n.ci; h < i; h++) t.add(c * e + h);
46
- }
47
- for (let n = 0; n < r.rows.length; n++) for (let l = 0; l < e; l++)
48
- t.has(n * e + l) || d(s, r, { ri: n, ci: l, cell: {} }, o.style);
49
- return M(s);
50
- }
51
- export {
52
- z as r
53
- };