@agile-team/mach-report 2.21.1 → 2.23.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 (169) hide show
  1. package/README.md +20 -5
  2. package/dist/{ExcelBindingWizard-mnAO2qOX.js → ExcelBindingWizard-D4FLind-.js} +3 -3
  3. package/dist/{ExcelBindingWizard-Bu0LUlzl.cjs → ExcelBindingWizard-D4RS5Bpg.cjs} +1 -1
  4. package/dist/{ParamEditor-38ZfNrPU.cjs → ParamEditor-C-6C9rd2.cjs} +1 -1
  5. package/dist/{ParamEditor-C8l0EC8m.js → ParamEditor-CASZt-Ma.js} +2 -2
  6. package/dist/{ReportBatchPanel-CfUVhvkO.js → ReportBatchPanel-Bq7t8a5r.js} +2 -2
  7. package/dist/{ReportBatchPanel-nCC06Nfp.cjs → ReportBatchPanel-YVj5IO5y.cjs} +1 -1
  8. package/dist/ReportLabelStudio-Cqhita1b.cjs +1 -0
  9. package/dist/ReportLabelStudio-Dj7GXhuv.js +783 -0
  10. package/dist/ReportParamPanel-DZbFVmDL.cjs +1 -0
  11. package/dist/{ReportParamPanel-peB-KEmm.js → ReportParamPanel-Dgmqro1Y.js} +265 -244
  12. package/dist/ReportPreview-DeWzG8jQ.js +6257 -0
  13. package/dist/ReportPreview-FFIryrIr.cjs +6 -0
  14. package/dist/{ReportTemplateLibrary-DVlsf72p.cjs → ReportTemplateLibrary-BaWodmpm.cjs} +1 -1
  15. package/dist/{ReportTemplateLibrary-B5t_EcIs.js → ReportTemplateLibrary-DdAAAD2I.js} +1 -1
  16. package/dist/{RuleEditor-kT1JsZ9f.js → RuleEditor-D2UwQGF6.js} +59 -59
  17. package/dist/{RuleEditor-xFkCVlii.cjs → RuleEditor-DcT9xI1v.cjs} +1 -1
  18. package/dist/TemplateOutlinePanel-CUHFFiNM.cjs +1 -0
  19. package/dist/{TemplateOutlinePanel-BesgGR1P.js → TemplateOutlinePanel-DrT7XN0m.js} +2 -2
  20. package/dist/{TemplateReusePanel-BNFU6V-W.js → TemplateReusePanel-4eejkNqi.js} +2 -2
  21. package/dist/{TemplateReusePanel-BG9Or5-P.cjs → TemplateReusePanel-DZMyiX5I.cjs} +1 -1
  22. package/dist/{TemplateReviewPanel-CwvwyCSs.js → TemplateReviewPanel-BIhNLeNw.js} +2 -2
  23. package/dist/TemplateReviewPanel-DnYImiXu.cjs +1 -0
  24. package/dist/analytics.cjs +1 -1
  25. package/dist/analytics.js +26 -26
  26. package/dist/artifact-integrity.json +108 -106
  27. package/dist/assets-D2gHc4Mz.cjs +1 -0
  28. package/dist/assets-T_gDeFaz.js +132 -0
  29. package/dist/auto-4pK9HePf.cjs +1 -0
  30. package/dist/auto-CTIJ6PnR.js +257 -0
  31. package/dist/capabilities-DiBj4Qgl.cjs +1 -0
  32. package/dist/capabilities-pg7j7VLT.js +106 -0
  33. package/dist/charts-Cjw5AYkg.cjs +1 -0
  34. package/dist/{charts-Dlv8j2AG.js → charts-CxJZ0XaY.js} +1 -1
  35. package/dist/computed-DK6BruFz.cjs +1 -0
  36. package/dist/{computed-C8NRZQss.js → computed-f3pOqWLX.js} +381 -301
  37. package/dist/data-bar-CeZuFmYl.cjs +1 -0
  38. package/dist/{data-bar-8baGYEZ9.js → data-bar-IkI6VvMQ.js} +1 -1
  39. package/dist/designer-DhrE7jzw.js +7169 -0
  40. package/dist/designer-IAZu6kBX.cjs +2 -0
  41. package/dist/designer.cjs +1 -1
  42. package/dist/designer.d.cts +246 -46
  43. package/dist/designer.d.ts +246 -46
  44. package/dist/designer.js +15 -14
  45. package/dist/dom-ChE5D-L-.cjs +1 -0
  46. package/dist/dom-JWrchIre.js +452 -0
  47. package/dist/dom-cell-address-DLD1mkTB.cjs +1 -0
  48. package/dist/dom-cell-address-Fn-8nk7D.js +11 -0
  49. package/dist/{encoding-B79hW4zq.cjs → encoding-BefcaHdp.cjs} +1 -1
  50. package/dist/{encoding-BSeUwrN7.js → encoding-CL6rXEkR.js} +2 -2
  51. package/dist/{font-loader-Di0lQKFf.js → font-loader-BT5baV-o.js} +1 -1
  52. package/dist/{font-loader-BB372_XN.cjs → font-loader-Ga51c2VC.cjs} +1 -1
  53. package/dist/grid-strokes-Be24LGuV.cjs +1 -0
  54. package/dist/grid-strokes-EoY66L2f.js +53 -0
  55. package/dist/index.cjs +8 -8
  56. package/dist/index.d.cts +44 -1
  57. package/dist/index.d.ts +44 -1
  58. package/dist/index.js +961 -1256
  59. package/dist/json-snapshot-1tvQNzQE.cjs +2 -0
  60. package/dist/{json-snapshot-Kgn459Oj.js → json-snapshot-OqkPyUk5.js} +763 -776
  61. package/dist/matrix-B8QWbsGM.cjs +1 -0
  62. package/dist/matrix-C6e_r_vp.js +302 -0
  63. package/dist/{pdf-CARdBcuw.cjs → pdf-HiEeXe9H.cjs} +42 -42
  64. package/dist/{pdf-DmlnL5eB.js → pdf-aobetCsy.js} +20 -20
  65. package/dist/pdf.cjs +1 -1
  66. package/dist/pdf.js +2 -2
  67. package/dist/{plugin-BaRUGORD.cjs → plugin-BFANt-i8.cjs} +1 -1
  68. package/dist/{plugin-D4kAxfLG.js → plugin-DeYYAL6F.js} +1 -1
  69. package/dist/{prefill-CJSazcVY.js → prefill-Dk4C6S5R.js} +21 -21
  70. package/dist/prefill-DsUD5OoK.cjs +1 -0
  71. package/dist/prepared-DCIxhKFo.js +94 -0
  72. package/dist/prepared-Dv-XM3i1.cjs +1 -0
  73. package/dist/progress-ByiOxUD3.js +250 -0
  74. package/dist/progress-WomPRP3B.cjs +1 -0
  75. package/dist/{protocol-C8VWF9An.cjs → protocol-B9YgfQ_d.cjs} +1 -1
  76. package/dist/{protocol-Bs9-ohHN.js → protocol-DxeUKGYG.js} +3 -3
  77. package/dist/record-bindings-DatJZv_e.js +200 -0
  78. package/dist/record-bindings-MBxbeBsi.cjs +1 -0
  79. package/dist/{region-binding-workflow-Cy4GIOUo.js → region-binding-workflow-DjrXuR1q.js} +2 -2
  80. package/dist/{region-binding-workflow-JNowHd0A.cjs → region-binding-workflow-l7NGfagJ.cjs} +2 -2
  81. package/dist/report-encoding-worker.cjs +1 -1
  82. package/dist/report-encoding-worker.js +1 -1
  83. package/dist/rich-text-layout-Ciwa6D2o.js +52 -0
  84. package/dist/rich-text-layout-DK7A_a5r.cjs +3 -0
  85. package/dist/{runtime-BDf5x1i1.js → runtime-75Y5Oq5B.js} +52 -51
  86. package/dist/runtime-DKlGd_D4.cjs +1 -0
  87. package/dist/sbom.cdx.json +1 -1
  88. package/dist/server/node.d.cts +9 -0
  89. package/dist/server/node.d.ts +9 -0
  90. package/dist/server-node.cjs +5 -4
  91. package/dist/server-node.js +2178 -2044
  92. package/dist/server.cjs +1 -1
  93. package/dist/server.d.cts +81 -0
  94. package/dist/server.d.ts +81 -0
  95. package/dist/server.js +24 -24
  96. package/dist/style.css +1 -1
  97. package/dist/{template-catalog-DFwIS9aN.js → template-catalog--cjxzgH7.js} +17 -17
  98. package/dist/template-catalog-CoT7jm_6.cjs +1 -0
  99. package/dist/{template-fragments-Dng-AlHk.js → template-fragments-CPpGpQoz.js} +24 -24
  100. package/dist/{template-fragments-DZVUBhuB.cjs → template-fragments-GVjpew_q.cjs} +1 -1
  101. package/dist/template-registry-DI59PXVK.cjs +1 -0
  102. package/dist/{template-registry-DhBqoD7W.js → template-registry-O0hNIOfB.js} +333 -261
  103. package/dist/template-serialization-CWmHq7lX.js +307 -0
  104. package/dist/template-serialization-CqQY4zDg.cjs +1 -0
  105. package/dist/{textwrap-CkGjRFT3.js → textwrap-BIjtEWmq.js} +1 -1
  106. package/dist/textwrap-Cy7o1hIR.cjs +4 -0
  107. package/dist/vue/async.d.cts +121 -2
  108. package/dist/vue/async.d.ts +121 -2
  109. package/dist/vue/index.d.cts +222 -5
  110. package/dist/vue/index.d.ts +222 -5
  111. package/dist/vue-async.cjs +1 -1
  112. package/dist/vue-async.js +3 -3
  113. package/dist/vue.cjs +1 -1
  114. package/dist/vue.js +101 -91
  115. package/dist/{workbook-session-NYv01LHe.cjs → workbook-session-C6-SrnCT.cjs} +4 -4
  116. package/dist/{workbook-session-oinxX3qo.js → workbook-session-C9ZmCBwY.js} +15 -16
  117. package/dist/workbook-sheets-CaPAulQ6.cjs +2 -0
  118. package/dist/workbook-sheets-D4M7XXBh.js +44 -0
  119. package/dist/worker.cjs +1 -1
  120. package/dist/worker.d.cts +9 -0
  121. package/dist/worker.d.ts +9 -0
  122. package/dist/worker.js +4 -4
  123. package/dist/xlsx.cjs +4 -4
  124. package/dist/xlsx.d.cts +39 -2
  125. package/dist/xlsx.d.ts +39 -2
  126. package/dist/xlsx.js +300 -275
  127. package/package.json +1 -1
  128. package/dist/ReportLabelStudio-CaEvYuSK.cjs +0 -1
  129. package/dist/ReportLabelStudio-DQPBmh4v.js +0 -765
  130. package/dist/ReportParamPanel-CVpK8mFc.cjs +0 -1
  131. package/dist/ReportPreview-BBJNlu2U.js +0 -5740
  132. package/dist/ReportPreview-nf4Dk1Jc.cjs +0 -6
  133. package/dist/TemplateOutlinePanel-CDI6mfWx.cjs +0 -1
  134. package/dist/TemplateReviewPanel-BmBrjt6P.cjs +0 -1
  135. package/dist/assets-CxHunY_9.js +0 -232
  136. package/dist/assets-vbjAGgk8.cjs +0 -1
  137. package/dist/auto-BkdGiNtr.js +0 -240
  138. package/dist/auto-Tq7ReIC1.cjs +0 -1
  139. package/dist/charts-aCtoswXq.cjs +0 -1
  140. package/dist/component-tree-1_QCiQJX.js +0 -67
  141. package/dist/component-tree-BjZIp6w9.cjs +0 -1
  142. package/dist/computed-4TnxzgIh.cjs +0 -1
  143. package/dist/data-bar-YltqGTaC.cjs +0 -1
  144. package/dist/designer-DU3yDWgs.cjs +0 -2
  145. package/dist/designer-HQi-03R6.js +0 -6869
  146. package/dist/grid-geometry-D3SJgWFv.js +0 -136
  147. package/dist/grid-geometry-D8ReblRV.cjs +0 -1
  148. package/dist/json-snapshot-I5VI84Vp.cjs +0 -2
  149. package/dist/matrix-0hywp0-F.cjs +0 -1
  150. package/dist/matrix-Dy-tyY7E.js +0 -381
  151. package/dist/prefill-Bpyn58AZ.cjs +0 -1
  152. package/dist/prepared-BiSz_9vN.cjs +0 -1
  153. package/dist/prepared-BwjwEzFz.js +0 -87
  154. package/dist/progress-B0ctFpKf.cjs +0 -1
  155. package/dist/progress-Hc2vxoCs.js +0 -52
  156. package/dist/record-bindings-Ct1HkPrc.cjs +0 -1
  157. package/dist/record-bindings-VZGS-Qd8.js +0 -155
  158. package/dist/rich-text-layout-K48VHUoW.cjs +0 -3
  159. package/dist/rich-text-layout-wxBhnAS7.js +0 -102
  160. package/dist/runtime-DsJt1PIf.cjs +0 -1
  161. package/dist/template-bindings-Cg5oBLFT.cjs +0 -1
  162. package/dist/template-bindings-TKnXM7ll.js +0 -62
  163. package/dist/template-catalog-D_2jdnkL.cjs +0 -1
  164. package/dist/template-outline-DWkzZXVC.cjs +0 -1
  165. package/dist/template-outline-DiADphlq.js +0 -88
  166. package/dist/template-registry-DpLUSLwF.cjs +0 -1
  167. package/dist/template-serialization-Cc3h-miv.js +0 -247
  168. package/dist/template-serialization-D1R5oAqh.cjs +0 -1
  169. package/dist/textwrap-OTOUMr4f.cjs +0 -4
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("vue"),mt=require("@agile-team/mach-report/vue"),z=require("@agile-team/mach-report"),J=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),yt=require("./dom-ChE5D-L-.cjs"),$e=require("./record-bindings-MBxbeBsi.cjs"),be=require("./template-serialization-CqQY4zDg.cjs"),Ge=require("./progress-WomPRP3B.cjs"),Ft={title:"操作指引",prompt:"这次想调整什么?",close:"关闭操作指引",fields:"改字段、对齐和颜色",fieldsHint:"选中一列,再修改属性;支持数据条与色阶",components:"加图表、二维码或条码",componentsHint:"进入画布,添加组件并绑定真实字段",layout:"改纸张、页数和份数",layoutHint:"设置毫米尺寸、标准纸型及逐记录输出",excel:"从 Excel 还原模板",excelHint:"导入工作簿,再明确字段和区域绑定",rules:"配计算和条件样式",rulesHint:"先配置,再应用到模板;不会修改接口实绩",review:"检查并定位问题",reviewHint:"校验字段依赖、样例结果与输出限制",result:"预览确认效果后保存模板;高级 JSON 保留给需要时使用。"},mn=["onKeydown"],pn=["aria-expanded","disabled"],fn=["aria-label"],vn=["aria-label"],gn=["onClick"],hn=e.defineComponent({__name:"DesignerTaskGuide",props:{fields:{type:Boolean},available:{},disabled:{type:Boolean},messages:{}},emits:["choose"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...Ft,...a.messages})),r=e.ref(!1),i=e.ref(),s=e.ref();function d(C){C.target instanceof Node&&!s.value?.contains(C.target)&&(r.value=!1)}function g(C){(!(C.relatedTarget instanceof Node)||!s.value?.contains(C.relatedTarget))&&(r.value=!1)}e.onMounted(()=>window.document.addEventListener("pointerdown",d)),e.onBeforeUnmount(()=>window.document.removeEventListener("pointerdown",d));const h=e.computed(()=>[...a.fields?["fields"]:[],"components","layout","excel","rules","review"].filter(C=>!a.available||a.available.includes(C)));function v(C){l("choose",C),r.value=!1,i.value?.focus()}function y(){r.value=!1,i.value?.focus()}return(C,S)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:s,class:"mr-designer-guide mr-designer-controls",onKeydown:e.withKeys(e.withModifiers(y,["stop","prevent"]),["esc"]),onFocusout:g},[e.createElementVNode("button",{ref_key:"trigger",ref:i,type:"button","aria-expanded":r.value,disabled:t.disabled,onClick:S[0]||(S[0]=M=>r.value=!r.value)},[e.createTextVNode(e.toDisplayString(n.value.title),1),S[1]||(S[1]=e.createElementVNode("span",{"aria-hidden":"true"},"⌄",-1))],8,pn),r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-designer-guide-panel",role:"region","aria-label":n.value.title},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.prompt),1),e.createElementVNode("button",{type:"button","aria-label":n.value.close,onClick:y},"×",8,vn)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,M=>(e.openBlock(),e.createElementBlock("button",{key:M,type:"button",onClick:E=>v(M)},[e.createElementVNode("strong",null,e.toDisplayString(n.value[M]),1),e.createElementVNode("span",null,e.toDisplayString(n.value[`${M}Hint`]),1),S[2]||(S[2]=e.createElementVNode("i",{"aria-hidden":"true"},"→",-1))],8,gn))),128)),e.createElementVNode("p",null,e.toDisplayString(n.value.result),1)],8,fn)):e.createCommentVNode("",!0)],40,mn))}}),yn=J._export_sfc(hn,[["__scopeId","data-v-6087c21a"]]),bn={add:"添加内容",title:"添加到当前版面",text:"说明文字",textHint:"添加标题、备注或说明",field:"业务字段",columnField:"添加表格字段",fieldHint:"选择字段后立即显示真实内容",image:"图片或 Logo",imageHint:"使用 PNG 或 JPEG 图片",qrcode:"二维码",barcode:"条形码",codeHint:"绑定记录编号或填写编码内容",list:"明细表",listHint:"从当前字段契约建立表格",chart:"图表",recordCount:"记录数",chartHint:"选择分类与数值字段",rect:"装饰色块",rectHint:"辅助分区与突出信息",search:"搜索业务字段",noFields:"没有匹配的字段",close:"关闭添加内容",back:"返回内容类型",duplicate:"复制组件",newPage:"当前版面空间不足或含动态明细,内容已放到新增版面,可撤销恢复。",newPageTitle:"需要新增一个版面",newPageDescription:"当前版面没有足够空间,将新增同规格的 {width} × {height} mm 版面放置内容。",reportPageImpact:"模板版面 {before} → {after}。最终输出页数由明细分页决定。",labelPageImpact:"每份标签 {before} → {after} 个版面。每条记录的输出都会增加一个版面。",labelCountImpact:"按当前设计样本,标签数 {before} → {after} 张。",newPageConfirm:"新增版面并添加",newPageCancel:"取消添加",newPagePending:"请先确认或取消新增版面,再预览或保存。",contentTooLarge:"内容尺寸大于当前纸张的可用区域,请先调整纸张或内容尺寸。内容没有被缩小或添加。",addColumn:"添加字段列",removeColumn:"删除当前列",removeLast:"至少保留一列",dependentColumn:"此字段仍被合计、规则或表头引用,请先调整相关配置。",assetPending:"请完成图片或编码内容配置,再预览或保存。",fieldsUnavailable:"当前模板尚无可绑定的数据字段。"},kn={selectField:"选择字段",addSelected:"添加选中项",selectedCount:"已选 {count} 项",batchHint:"可一次选择最多 100 个字段,确认版面影响后统一添加。",batchTitle:"确认添加字段",batchDescription:"将按选择顺序添加 {count} 个字段,本次操作可一次撤销。",batchWidth:"表格宽度 {before} → {after} mm。",batchFixedWidth:"保持表格宽度 {width} mm,所有列按比例分配宽度。",batchConfirm:"确认添加"},Ht={...bn,...kn},En=["onKeydown"],Sn=["disabled","aria-expanded"],wn=["aria-label"],Nn=["aria-label"],Vn=["aria-label","placeholder"],Cn={class:"mr-insert-fields"},Mn=["aria-label","checked","disabled","onChange"],xn=["disabled","onClick"],Bn={key:0},Dn={class:"mr-insert-batch"},$n=["disabled"],Tn={key:1,class:"mr-insert-grid"},_n=["onClick"],In=e.defineComponent({__name:"DesignerInsertMenu",props:{disabled:{type:Boolean},repeat:{type:Boolean},fields:{},columns:{type:Boolean},usedFields:{},messages:{}},emits:["insert","field","fields"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...Ht,...a.messages})),r=e.ref(!1),i=e.ref(!1),s=e.ref(""),d=e.ref(),g=e.ref(),h=e.ref([]);e.watch(()=>[a.fields,a.usedFields],()=>{h.value=h.value.filter(p=>a.fields?.some(w=>w.field===p)&&!(a.columns&&a.usedFields?.includes(p)))});function v(p,w){w&&h.value.length<100?h.value=[...h.value,p]:w||(h.value=h.value.filter(B=>B!==p))}function y(){l("fields",h.value.slice()),E()}const C=e.computed(()=>["text","qrcode","barcode","image","list","chart","rect"].filter(p=>!a.repeat||!["list","chart"].includes(p))),S=e.computed(()=>(a.fields??[]).filter(p=>`${p.label??""} ${p.field}`.toLowerCase().includes(s.value.toLowerCase())).slice(0,100)),M=e.computed(()=>({text:n.value.textHint,qrcode:n.value.codeHint,barcode:n.value.codeHint,image:n.value.imageHint,list:n.value.listHint,chart:n.value.chartHint,rect:n.value.rectHint}));function E(){r.value=!1,i.value=!1,s.value="",h.value=[],d.value?.focus()}function N(p){l("insert",p),E()}async function x(){i.value=!0,await e.nextTick(),g.value?.focus()}function k(p){l("field",p),E()}let $;function m(){r.value=!1,i.value=!1,s.value="",h.value=[]}function f(p){if(p.button!==0||!(p.target instanceof Element))return;const w=p.currentTarget;if(!w.contains(p.target))return;const B=p.target.closest("button,input,select,textarea,a[href],[tabindex]");(r.value?B&&w.contains(B)&&!B.matches(":disabled")?B:w.querySelector(".mr-insert-panel")??d.value:d.value)?.focus({preventScroll:!0})}function c(p){const w=p.currentTarget;if(!w.contains(p.relatedTarget)){if(p.relatedTarget){m();return}$!==void 0&&cancelAnimationFrame($),$=requestAnimationFrame(()=>{$=void 0,w.isConnected&&!w.contains(document.activeElement)&&m()})}}return e.onBeforeUnmount(()=>{$!==void 0&&cancelAnimationFrame($)}),(p,w)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-insert mr-designer-controls",onKeydown:e.withKeys(e.withModifiers(E,["prevent","stop"]),["esc"]),onFocusout:c,onPointerdown:f,onClick:f},[e.createElementVNode("button",{ref_key:"trigger",ref:d,class:"mr-insert-trigger",type:"button",disabled:t.disabled,"aria-expanded":r.value,"aria-haspopup":"dialog",onClick:w[0]||(w[0]=B=>r.value=!r.value)},[w[3]||(w[3]=e.createElementVNode("span",{"aria-hidden":"true"},"+",-1)),e.createTextVNode(e.toDisplayString(n.value.add),1)],8,Sn),r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-insert-panel",role:"dialog",tabindex:"-1","aria-label":n.value.title},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(i.value?t.columns?n.value.columnField:n.value.field:n.value.title),1),e.createElementVNode("button",{type:"button","aria-label":n.value.close,onClick:E},"×",8,Nn)]),i.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"mr-insert-back",onClick:w[1]||(w[1]=B=>i.value=!1)}," ‹ "+e.toDisplayString(n.value.back),1),e.withDirectives(e.createElementVNode("input",{ref_key:"search",ref:g,"onUpdate:modelValue":w[2]||(w[2]=B=>s.value=B),"aria-label":n.value.search,placeholder:n.value.search},null,8,Vn),[[e.vModelText,s.value]]),e.createElementVNode("div",Cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,B=>(e.openBlock(),e.createElementBlock("div",{key:B.field,class:"mr-insert-field-row"},[e.createElementVNode("input",{type:"checkbox","aria-label":`${n.value.selectField} ${B.label||B.field}`,checked:h.value.includes(B.field),disabled:t.columns&&t.usedFields?.includes(B.field)||!h.value.includes(B.field)&&h.value.length>=100,onChange:R=>v(B.field,R.target.checked)},null,40,Mn),e.createElementVNode("button",{type:"button",disabled:t.columns&&t.usedFields?.includes(B.field),onClick:R=>k(B.field)},[e.createElementVNode("strong",null,e.toDisplayString(B.label||B.field),1),e.createElementVNode("small",null,e.toDisplayString(B.field),1)],8,xn)]))),128)),S.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Bn,e.toDisplayString(n.value.noFields),1))]),e.createElementVNode("footer",Dn,[e.createElementVNode("small",null,e.toDisplayString(h.value.length?n.value.selectedCount.replace("{count}",String(h.value.length)):n.value.batchHint),1),e.createElementVNode("button",{type:"button",disabled:!h.value.length,onClick:y},e.toDisplayString(n.value.addSelected),9,$n)])],64)):(e.openBlock(),e.createElementBlock("div",Tn,[t.fields?.length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-insert-field",onClick:x},[e.createElementVNode("strong",null,e.toDisplayString(t.columns?n.value.columnField:n.value.field),1),e.createElementVNode("small",null,e.toDisplayString(n.value.fieldHint),1)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,B=>(e.openBlock(),e.createElementBlock("button",{key:B,type:"button",onClick:R=>N(B)},[e.createElementVNode("strong",null,e.toDisplayString(n.value[B]),1),e.createElementVNode("small",null,e.toDisplayString(M.value[B]),1)],8,_n))),128))]))],8,wn)):e.createCommentVNode("",!0)],40,En))}}),Pn=J._export_sfc(In,[["__scopeId","data-v-6c0be776"]]),Rn=["aria-labelledby","aria-describedby"],Ln={class:"mr-insert-confirm-icon","aria-hidden":"true"},An=["id"],Fn=["id"],Hn=["id"],On=e.defineComponent({__name:"DesignerInsertionConfirm",props:{title:{},description:{},impacts:{},confirm:{},cancel:{}},emits:["confirm","cancel"],setup(t,{emit:o}){const a=o,l=`mr-insertion-${e.getCurrentInstance()?.uid??0}`,n=e.ref(),r=e.ref();let i=null;function s(d){if(d.isComposing||d.keyCode===229||(d.key==="Escape"&&(d.preventDefault(),a("cancel")),d.key!=="Tab"))return;d.preventDefault(),(d.shiftKey?document.activeElement===n.value?r.value:n.value:document.activeElement===r.value?n.value:r.value)?.focus()}return e.onMounted(()=>{i=document.activeElement,n.value?.focus()}),e.onBeforeUnmount(()=>{i?.isConnected&&i.focus()}),(d,g)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-insert-confirm mr-designer-controls",onKeydown:e.withModifiers(s,["stop"])},[e.createElementVNode("section",{role:"alertdialog","aria-modal":"true","aria-labelledby":`${l}-title`,"aria-describedby":`${l}-description ${l}-impact`},[e.createElementVNode("span",Ln,[e.createVNode(J._sfc_main,{name:"file",size:20})]),e.createElementVNode("h3",{id:`${l}-title`},e.toDisplayString(t.title),9,An),e.createElementVNode("p",{id:`${l}-description`},e.toDisplayString(t.description),9,Fn),e.createElementVNode("ul",{id:`${l}-impact`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.impacts,h=>(e.openBlock(),e.createElementBlock("li",{key:h},e.toDisplayString(h),1))),128))],8,Hn),e.createElementVNode("footer",null,[e.createElementVNode("button",{ref_key:"cancelButton",ref:n,type:"button",onClick:g[0]||(g[0]=h=>a("cancel"))},e.toDisplayString(t.cancel),513),e.createElementVNode("button",{ref_key:"confirmButton",ref:r,class:"mr-insert-confirm-action",type:"button",onClick:g[1]||(g[1]=h=>a("confirm"))},e.toDisplayString(t.confirm),513)])],8,Rn)],32))}}),Gn=J._export_sfc(On,[["__scopeId","data-v-bc99b84c"]]),zn={title:"总计与小计",field:"汇总字段",operation:"计算方式",position:"显示位置",tableEnd:"表尾总计",groupEnd:"分组尾小计",add:"添加汇总",remove:"移除汇总",sum:"求和",avg:"平均值",count:"非空计数",noFields:"请先声明可汇总的数值字段。",scope:"范围为当前明细表全部符合显示条件的记录,跨页时继续累计。",groupScope:"范围为所选层级的每个分组,汇总各组内符合显示条件的记录。",saved:"汇总随模板保存,并进入预览、打印和导出。",empty:"选择数值字段与计算方式,即可在表格中加入汇总。",advanced:"此汇总包含高级配置,请在计算与规则中维护。",complex:"此表采用矩阵、树形、主从或单记录布局,请在对应结构规则中维护汇总。",unconfigured:"未设置",configured:"{count} 项汇总",update:"更新汇总"};function jn(t,o,a){if(a)return a.numeric??"number";if(o)return o.type==="number"||o.type==="decimal"?o.type:void 0;if(t.valueType==="number"||t.format?.kind==="number")return"number"}function ze(t){return t.groups??(t.groupBy?[t.groupBy]:[])}function Xe(t,o){if(o.group!==void 0){const l=ze(t)[o.group];return{fields:l?.subtotal??[],aggregates:l?.aggregates??[]}}if(!t.grandTotal)return{fields:[],aggregates:[]};const a=typeof t.grandTotal=="object"?t.grandTotal:void 0;return{fields:a?.fields??ze(t)[0]?.subtotal??[],aggregates:a?.aggregates??ze(t)[0]?.aggregates??[]}}function Un(t){return["sum","avg","count"].includes(t.op)&&(!t.valueField||t.valueField===t.field)&&!t.weightField}function xt(t,o,a,l){if(o.group!==void 0){const n=ze(t)[o.group];n.subtotal=a,n.aggregates=l}else a.length||l.length?t.grandTotal={...typeof t.grandTotal=="object"?t.grandTotal:{},fields:a,aggregates:l}:delete t.grandTotal}function qn(t,o){const a=e.computed(()=>({...zn,...t.messages})),l=e.ref("sum"),n=e.ref(""),r=e.ref("total"),i=e.computed(()=>!!(t.list.matrix||t.list.tree||t.list.detail||t.list.cardinality==="record")),s=e.computed(()=>new Map(t.schema?.fields.map(c=>[c.field,c]))),d=e.computed(()=>new Map(t.list.computed?.map(c=>[c.field,c]))),g=e.computed(()=>new Map(t.list.columns.map(c=>[c.field,jn(c,s.value.get(c.field),d.value.get(c.field))]))),h=e.computed(()=>new Map(t.list.columns.map(c=>[c.field,c.header]))),v=e.computed(()=>t.list.columns.filter(c=>{const p=s.value.get(c.field);return c.hidden||c.field===t.schema?.rowKey||c.field===t.list.rowKey||p?.aggregation==="none"||["identifier","dimension","date","text"].includes(p?.semanticRole??c.semanticRole??"")?!1:g.value.get(c.field)!==void 0})),y=e.computed(()=>[{key:"total",label:a.value.tableEnd},...ze(t.list).map((c,p)=>({key:`group-${p}`,group:p,label:`${a.value.groupEnd} · ${h.value.get(c.field)??c.field}`}))]),C=e.computed(()=>y.value.find(c=>c.key===r.value)??y.value[0]),S=e.computed(()=>{const c=Xe(t.list,C.value),p=new Map;for(const w of c.aggregates){const B=p.get(w.field)??[];B.push(w),p.set(w.field,B)}return[...new Set([...c.fields,...c.aggregates.map(w=>w.field)])].map(w=>{const B=p.get(w)??[],R=B[0];return{field:w,label:h.value.get(w)??w,op:R?.op??"sum",editable:B.length<=1&&(!R||Un(R))}})}),M=e.computed(()=>!!t.readonly||i.value),E=e.computed(()=>S.value.find(c=>c.field===n.value)),N=e.computed(()=>!M.value&&v.value.some(c=>c.field===n.value)&&(!E.value||E.value.editable&&E.value.op!==l.value)),x=e.computed(()=>C.value.group===void 0?a.value.scope:a.value.groupScope),k=e.computed(()=>y.value.reduce((c,p)=>{const w=Xe(t.list,p);return c+new Set([...w.fields,...w.aggregates.map(B=>B.field)]).size},0)),$=e.computed(()=>!!E.value);e.watch(v,c=>{c.some(p=>p.field===n.value)||(n.value=c[0]?.field??"")},{immediate:!0}),e.watch(y,c=>{c.some(p=>p.key===r.value)||(r.value="total")}),e.watch([n,r,()=>t.list,()=>E.value?.op],()=>{const c=E.value;l.value=c?.editable?c.op:"sum"},{immediate:!0});function m(){if(!N.value)return;const c=JSON.parse(JSON.stringify(t.list)),p=Xe(c,C.value),w=p.aggregates.find(R=>R.field===n.value),B={...w,field:n.value,op:l.value,numeric:w?.numeric??g.value.get(n.value)};xt(c,C.value,[...p.fields],[...p.aggregates.filter(R=>R.field!==n.value),B]),o(c)}function f(c){if(M.value||!S.value.find(B=>B.field===c)?.editable)return;const p=JSON.parse(JSON.stringify(t.list)),w=Xe(p,C.value);xt(p,C.value,w.fields.filter(B=>B!==c),w.aggregates.filter(B=>B.field!==c)),o(p)}return{m:a,operation:l,field:n,position:r,fields:v,targets:y,entries:S,complex:i,blocked:M,canAdd:N,scope:x,configuredCount:k,updating:$,add:m,remove:f}}const Wn=["aria-label"],Kn={class:"mr-totals-entry"},Jn={class:"mr-totals-content"},Yn={key:0,role:"status"},Qn=["aria-label","disabled"],Xn=["value"],Zn={class:"mr-totals-fields"},ea=["aria-label","disabled"],ta=["value"],na=["aria-label","disabled"],aa={value:"sum"},oa={value:"avg"},la={value:"count"},ra=["disabled"],ia={class:"mr-totals-scope"},sa={key:0},ca=["aria-label","disabled","onClick"],da={key:1},ua=e.defineComponent({__name:"TemplateTotalsEditor",props:{list:{},schema:{},readonly:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,l=o,{m:n,operation:r,field:i,position:s,fields:d,targets:g,entries:h,complex:v,blocked:y,canAdd:C,scope:S,configuredCount:M,updating:E,add:N,remove:x}=qn(a,k=>l("change",k));return(k,$)=>(e.openBlock(),e.createElementBlock("details",{class:"mr-totals-editor mr-designer-controls","aria-label":e.unref(n).title},[e.createElementVNode("summary",null,[$[5]||($[5]=e.createElementVNode("span",{class:"mr-totals-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).title),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(M)?e.unref(n).configured.replace("{count}",String(e.unref(M))):e.unref(n).unconfigured),1),e.createElementVNode("span",Kn,[e.createTextVNode(e.toDisplayString(e.unref(n).add)+" ",1),$[4]||($[4]=e.createElementVNode("i",{"aria-hidden":"true"},"+",-1))])]),e.createElementVNode("div",Jn,[e.createElementVNode("small",null,e.toDisplayString(e.unref(n).saved),1),e.unref(v)?(e.openBlock(),e.createElementBlock("p",Yn,e.toDisplayString(e.unref(n).complex),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).position),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[0]||($[0]=m=>e.isRef(s)?s.value=m:null),"aria-label":e.unref(n).position,disabled:e.unref(y)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g),m=>(e.openBlock(),e.createElementBlock("option",{key:m.key,value:m.key},e.toDisplayString(m.label),9,Xn))),128))],8,Qn),[[e.vModelSelect,e.unref(s)]])]),e.createElementVNode("div",Zn,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).field),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[1]||($[1]=m=>e.isRef(i)?i.value=m:null),"aria-label":e.unref(n).field,disabled:e.unref(y)||!e.unref(d).length},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),m=>(e.openBlock(),e.createElementBlock("option",{key:m.field,value:m.field},e.toDisplayString(m.header),9,ta))),128))],8,ea),[[e.vModelSelect,e.unref(i)]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).operation),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[2]||($[2]=m=>e.isRef(r)?r.value=m:null),"aria-label":e.unref(n).operation,disabled:e.unref(y)},[e.createElementVNode("option",aa,e.toDisplayString(e.unref(n).sum),1),e.createElementVNode("option",oa,e.toDisplayString(e.unref(n).avg),1),e.createElementVNode("option",la,e.toDisplayString(e.unref(n).count),1)],8,na),[[e.vModelSelect,e.unref(r)]])])]),e.createElementVNode("button",{class:"mr-totals-add",type:"button",disabled:!e.unref(C),onClick:$[3]||($[3]=(...m)=>e.unref(N)&&e.unref(N)(...m))},e.toDisplayString(e.unref(E)?e.unref(n).update:e.unref(n).add),9,ra),e.createElementVNode("p",ia,e.toDisplayString(e.unref(S)),1),e.unref(h).length?(e.openBlock(),e.createElementBlock("ul",sa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),m=>(e.openBlock(),e.createElementBlock("li",{key:m.field},[e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(m.label),1),e.createElementVNode("small",null,e.toDisplayString(m.editable?e.unref(n)[m.op]:e.unref(n).advanced),1)]),m.editable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${e.unref(n).remove} ${m.label}`,disabled:e.unref(y),onClick:f=>e.unref(x)(m.field)}," × ",8,ca)):e.createCommentVNode("",!0)]))),128))])):(e.openBlock(),e.createElementBlock("p",da,e.toDisplayString(e.unref(d).length?e.unref(n).empty:e.unref(n).noFields),1))],64))])],8,Wn))}}),ma=J._export_sfc(ua,[["__scopeId","data-v-cdbc3e97"]]);function pt(t,o){return{...z.columnsFromContract({fields:[t]})[0],widthMm:o,valueType:t.type==="number"?"number":t.type==="boolean"?"boolean":"text"}}function pa(t,o,a){const l=t.fields.filter(i=>i.field!==t.rowKey),n=l.find(i=>i.semanticRole==="dimension")??l.find(i=>i.type==="text"||i.type==="date")??l[0];if(!n)return;const r=l.find(i=>(i.type==="number"||i.type==="decimal")&&i.semanticRole!=="identifier"&&i.aggregation!=="none");return{dataset:o,categoryField:n.field,type:"bar",measures:[r?{op:"sum",field:r.field,numeric:r.type==="decimal"?"decimal":"number",label:r.label||r.field}:{op:"count",label:a}]}}const ct=96/25.4;function tt(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((o,a)=>o+a,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function le(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:tt(t)}}function fe(t,o){return o?t.template.pages[o.pageIndex]?.components[o.componentIndex]:void 0}function bt(t,o="detail"){const a={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="chart"?{...a,kind:t,widthMm:110,heightMm:60,chartBinding:{dataset:o,categoryField:"field",measures:[{op:"sum",field:"value"}],type:"bar"}}:t==="qrcode"?{...a,kind:t,widthMm:22,heightMm:22,code:{errorCorrection:"M",quietZoneModules:4}}:t==="barcode"?{...a,kind:t,widthMm:50,heightMm:16,code:{symbology:"code128",quietZoneModules:10,showText:!0}}:t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:o,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...a,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...a,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...a,kind:t,widthMm:48,heightMm:24,imageData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAAQ0lEQVR4nO3PsQkAIADAMP//1NVZ0CMcgtChezrm2ufnhgY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrw2gWyBkQAzw4dBAAAAABJRU5ErkJggg==",meta:{designerPlaceholder:!0}}}function et(t,o,a=!1){const l=Math.max(2,Math.min(o.widthMm,t.widthMm)),n=Math.max(2,Math.min(o.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(o.widthMm-l,t.leftMm)),topMm:Math.max(0,Math.min(o.heightMm-(a?2:n),t.topMm)),widthMm:l,heightMm:n}}function ke(t,o){const a=t.widthMm;if(Object.assign(t,{leftMm:o.leftMm,topMm:o.topMm,widthMm:o.widthMm}),t.kind!=="list")t.heightMm=o.heightMm;else if(a>0&&o.widthMm!==a){const l=o.widthMm/a;t.columns.forEach(n=>{n.widthMm=Math.round(n.widthMm*l*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 fa(t,o,a){if(o===a||!t.columns[o]||!t.columns[a])return!1;if(t.headerGrid){if(z.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:r})=>(r.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const n=Ie(t);n.forEach(r=>{r.splice(a,0,r.splice(o,1)[0])}),t.headerGrid=Pe(n,t.columns.map(r=>r.widthMm),t.headerGrid.rowHeightsMm??n.map(()=>8))}return t.columns.splice(a,0,t.columns.splice(o,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(l=>l.widthMm)),!0}function Ie(t){if(!t.headerGrid)return[t.columns.map(a=>({text:a.header}))];const o=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:a,ri:l,ci:n}of z.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)o[l][n]=a;return o}function Pe(t,o,a){const l=new Set;return{cells:t.map((r,i)=>r.flatMap((s,d)=>{if(l.has(`${i}:${d}`))return[];if(!s)return[null];for(let g=i;g<i+(s.rowSpan??1);g++)for(let h=d;h<d+(s.colSpan??1);h++)(g!==i||h!==d)&&l.add(`${g}:${h}`);return[s]})),colWidthsMm:o,rowHeightsMm:a}}function va(t){const o=Ie(t),a=t.headerGrid?.rowHeightsMm??o.map(()=>8);o.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=Pe(o,t.columns.map(l=>l.widthMm),[8,...a])}function ga(t,o,a,l){if(a>=l||a<0||l>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const n=Ie(t),r=n[o];if(!r)throw new Error("表头行不存在。");const i=r.slice(a,l+1);if(i.some(d=>!d||(d.colSpan??1)!==1||(d.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const s=i[0];r[a]={...s,colSpan:l-a+1};for(let d=a+1;d<=l;d++)r[d]=null;t.headerGrid=Pe(n,t.columns.map(d=>d.widthMm),t.headerGrid?.rowHeightsMm??[8])}function ha(t,o,a){if(!t.headerGrid)return;const n=z.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:g,ci:h,cell:v})=>o>=g&&o<g+(v.rowSpan??1)&&a>=h&&a<h+(v.colSpan??1));if(!n)return;const r=Ie(t),{ri:i,ci:s,cell:d}=n;for(let g=i;g<i+(d.rowSpan??1);g++)for(let h=s;h<s+(d.colSpan??1);h++){const v={...d,text:g===r.length-1?t.columns[h].header:d.text};delete v.colSpan,delete v.rowSpan,r[g][h]=v}t.headerGrid=Pe(r,t.columns.map(g=>g.widthMm),t.headerGrid.rowHeightsMm??r.map(()=>8))}function ya(t,o,a=!1){Ot(t,[o],a)}function Ot(t,o,a=!1){if(!o.length)return;const l=Ie(t),n=t.widthMm;t.columns.push(...o);for(let i=0;i<l.length;i++)l[i].push(...o.map(s=>({text:i===l.length-1?s.header:"",style:{...t.headerStyle,align:"center"}})));const r=t.columns.reduce((i,s)=>i+s.widthMm,0);if(a)t.widthMm=r;else for(const i of t.columns)i.widthMm*=n/r;t.headerGrid&&(t.headerGrid=Pe(l,t.columns.map(i=>i.widthMm),t.headerGrid.rowHeightsMm??l.map(()=>8)))}function ba(t,o,a=!1){if(t.columns.length<2||!t.columns[o])return;const l=Ie(t),n=t.widthMm;if(t.headerGrid)for(const i of z.resolveGridLayout(t.headerGrid,t.widthMm,100).cells){if(o<i.ci||o>=i.ci+(i.cell.colSpan??1)||(i.cell.colSpan??1)<2)continue;const s={...i.cell,colSpan:(i.cell.colSpan??1)-1};l[i.ri][i.ci===o?o+1:i.ci]=s}l.forEach(i=>i.splice(o,1)),t.columns.splice(o,1);const r=t.columns.reduce((i,s)=>i+s.widthMm,0);if(a)t.widthMm=r;else for(const i of t.columns)i.widthMm*=n/r;t.headerGrid&&(t.headerGrid=Pe(l,t.columns.map(i=>i.widthMm),t.headerGrid.rowHeightsMm??l.map(()=>8)))}const De=2;function ka(t,o){return t.leftMm<o.leftMm+o.widthMm+De&&t.leftMm+t.widthMm+De>o.leftMm&&t.topMm<o.topMm+o.heightMm+De&&t.topMm+t.heightMm+De>o.topMm}function Gt(t){return{left:t.marginLeftMm??2,top:t.marginTopMm??2,right:t.widthMm-(t.marginRightMm??2),bottom:t.heightMm-(t.marginBottomMm??2)}}function zt(t,o){const a=Gt(t),l=le(o);return l.widthMm<=a.right-a.left&&l.heightMm<=a.bottom-a.top}function jt(t,o){const a=Gt(t),l=le(o);l.widthMm=Math.min(l.widthMm,Math.max(2,a.right-a.left)),l.heightMm=Math.min(l.heightMm,Math.max(2,a.bottom-a.top)),o.kind==="qrcode"&&(l.widthMm=l.heightMm=Math.min(l.widthMm,l.heightMm));const n=t.components.some(d=>d.kind==="list"),r=t.components.map(d=>d.kind==="list"?{leftMm:a.left,topMm:d.topMm,widthMm:a.right-a.left,heightMm:Math.max(0,a.bottom-d.topMm)}:le(d)),i=[{leftMm:a.left,topMm:a.top}];for(const d of r.slice(0,250))i.push({leftMm:d.leftMm+d.widthMm+De,topMm:d.topMm}),i.push({leftMm:a.left,topMm:d.topMm+d.heightMm+De});i.sort((d,g)=>d.topMm-g.topMm||d.leftMm-g.leftMm);const s=i.find(d=>{const g={...l,...d};return g.leftMm>=a.left&&g.topMm>=a.top&&g.leftMm+g.widthMm<=a.right&&g.topMm+g.heightMm<=a.bottom&&!r.some(h=>ka(g,h))});if(s)return{geometry:{...l,...s},newPage:!1};if(t.layout==="wide"&&!n){const d=Math.max(a.top,...r.map(h=>h.topMm+h.heightMm+De)),g=Math.max(t.heightMm,d+l.heightMm+(t.marginBottomMm??2));return{geometry:{...l,leftMm:a.left,topMm:d},newPage:!1,pageHeightMm:g}}return{geometry:{...l,leftMm:a.left,topMm:a.top},newPage:!0}}function Ut(t,o,a){const l=t.template.pages[o],n=jt(l,a);if(!n.newPage)return n.pageHeightMm!==void 0&&(l.heightMm=n.pageHeightMm),ke(a,n.geometry),l.components.push(a),{pageIndex:o,newPage:!1};const r={...l,components:[]};return r.meta&&(r.meta={...r.meta},delete r.meta.title),ke(a,et(n.geometry,r,a.kind==="list")),r.components.push(a),t.template.pages.push(r),{pageIndex:t.template.pages.length-1,newPage:!0}}function qt(t){const o=bt("text");if(o.kind==="list")throw new TypeError("A bound field requires a text component");return o.widthMm=42,o.heightMm=5,o.text="",o.style={fontSize:8,lineHeight:1.1,verticalAlign:"middle"},o.binding={field:t.field,prefix:`${t.label||t.field} `,...t.format?{format:t.format}:{}},o}function Ea(t,o,a,l,n){const r=z.parseReportTemplate(t),i=[];let s=0,d=0,g=a.length;if(r.template.repeat)for(const h of a){const v=qt(h);if(!zt(r.template.pages[o],v))throw new Error(n);o=Ut(r,o,v).pageIndex,i.push({pageIndex:o,componentIndex:r.template.pages[o].components.length-1})}else{if(!l)return;const h=r.template.pages[l.pageIndex],v=h.components[l.componentIndex];if(v?.kind!=="list"||h.flow)return;const y=a.filter(C=>!v.columns.some(S=>S.field===C.field));if(!y.length)return;g=y.length,s=v.widthMm,Ot(v,y.map(C=>pt(C,28)),h.layout==="wide"),d=v.widthMm,h.layout==="wide"&&(h.widthMm=Math.max(h.widthMm,v.leftMm+v.widthMm+(h.marginRightMm??0))),o=l.pageIndex,i.push(l)}return{document:r,selections:i,pageIndex:o,widthBefore:s,widthAfter:d,count:g}}function Bt(t,o){const a=t.template.repeat,l=a&&o?.[a.dataset];if(!a||!l)return;const n=a.copies??1;if(typeof n=="number")return Number.isSafeInteger(n)&&n>0&&n<=1e3?l.length*n:void 0;let r=0;for(const i of l){const s=Object.getOwnPropertyDescriptor(i,n.field)?.value;if(!Number.isSafeInteger(s)||s<1||s>1e3)return;r+=s}return r}function Sa(t,o,a,l,n,r){const i=e.computed(()=>({...Ht,...r()})),s=e.ref(""),d=e.shallowRef(),g=e.computed(()=>{const m=d.value;if(!m)return;const c=[(m.repeat?i.value.labelPageImpact:i.value.reportPageImpact).replace("{before}",String(m.pageCount)).replace("{after}",String(m.nextPageCount))];m.copies!==void 0&&c.push(i.value.labelCountImpact.replace("{before}",String(m.copies*m.pageCount)).replace("{after}",String(m.copies*m.nextPageCount)));const p=m.batch;return p?.widthBefore&&c.unshift(p.widthBefore===p.widthAfter?i.value.batchFixedWidth.replace("{width}",String(Number(p.widthBefore.toFixed(2)))):i.value.batchWidth.replace("{before}",String(Number(p.widthBefore.toFixed(2)))).replace("{after}",String(Number(p.widthAfter.toFixed(2))))),{title:p?i.value.batchTitle:i.value.newPageTitle,description:p?i.value.batchDescription.replace("{count}",String(p.count)):i.value.newPageDescription.replace("{width}",String(m.widthMm)).replace("{height}",String(m.heightMm)),impacts:c,confirm:p?i.value.batchConfirm:i.value.newPageConfirm,cancel:i.value.newPageCancel}});e.watch([t.draft,o.canvasPage,n,l],()=>{d.value=void 0},{flush:"sync"});function h(m){o.canvas.insertPlaced(m)&&(s.value=o.canvas.insertedOnNewPage.value?i.value.newPage:"",o.setMode("design"),a.section.value="component")}function v(m){const f=t.draft.value,c=f.template.pages[o.canvasPage.value];if(!zt(c,m)){s.value=i.value.contentTooLarge;return}if(jt(c,m).newPage){s.value="",d.value={commit:()=>h(m),widthMm:c.widthMm,heightMm:c.heightMm,pageCount:f.template.pages.length,nextPageCount:f.template.pages.length+1,copies:Bt(f,n()),repeat:!!f.template.repeat};return}h(m)}function y(){d.value=void 0}function C(){const m=d.value;!m||o.editDisabled.value||(d.value=void 0,m.commit())}const S=e.computed(()=>t.draft.value.template.repeat?.dataset??t.activeList.value?.dataset??Object.keys(l()??{})[0]??Object.keys(n()??{})[0]??"detail"),M=e.computed(()=>{const m=l()?.[S.value];if(m)return m;const f=t.activeList.value;return f?.dataset===S.value?{fields:f.columns.map(c=>({field:c.field,label:c.header,type:c.valueType==="number"?"number":"text",semanticRole:c.semanticRole}))}:{fields:Object.keys(n()?.[S.value]?.[0]??{}).map(c=>({field:c,type:"text"}))}}),E=e.computed(()=>M.value.fields.filter(m=>m.field!==M.value.rowKey));function N(m){if(o.editDisabled.value||d.value)return;const f=bt(m,S.value);if(f.kind==="chart"){const p=pa(M.value,S.value,i.value.recordCount);if(!p){s.value=i.value.fieldsUnavailable;return}f.chartBinding=p}if(f.kind==="list"&&!E.value.length){s.value=i.value.fieldsUnavailable;return}if(f.kind==="text"&&t.draft.value.template.repeat){const p=t.draft.value.template.pages[o.canvasPage.value];f.widthMm=Math.min(60,p.widthMm/2),f.heightMm=6}f.kind==="list"&&E.value.length&&(f.columns=E.value.slice(0,4).map(p=>pt(p,22.5))),f.kind==="list"&&(f.widthMm=f.columns.reduce((p,w)=>p+w.widthMm,0));const c=M.value.fields.find(p=>p.semanticRole==="identifier"&&p.field!==M.value.rowKey)?.field??M.value.rowKey;t.draft.value.template.repeat&&c&&(f.kind==="qrcode"||f.kind==="barcode")&&(f.binding={field:c}),v(f)}function x(m){if(o.editDisabled.value||d.value)return;const f=E.value.find(p=>p.field===m);if(!f)return;if(t.draft.value.template.repeat){v(qt(f));return}const c=t.lists.value[t.selected.value];!c||t.activeList.value?.columns.some(p=>p.field===m)||t.transaction(p=>{const w=p.template.pages[c.pageIndex],B=w.components[c.componentIndex];B?.kind!=="list"||w.flow||(ya(B,pt(f,28),w.layout==="wide"),w.layout==="wide"&&(w.widthMm=Math.max(w.widthMm,B.leftMm+B.widthMm+(w.marginRightMm??0))))})&&(a.section.value="fields",a.activate(t.activeList.value.columns.length-1))}function k(m){if(o.editDisabled.value||d.value||!m.length||m.length>100)return;const f=[...new Set(m)].flatMap(c=>{const p=E.value.find(w=>w.field===c);return p?[p]:[]});try{const c=t.draft.value,p=c.template.pages[o.canvasPage.value],w=Ea(c,o.canvasPage.value,f,t.lists.value[t.selected.value],i.value.contentTooLarge);if(!w?.count)return;d.value={widthMm:p.widthMm,heightMm:p.heightMm,pageCount:c.template.pages.length,nextPageCount:w.document.template.pages.length,copies:Bt(c,n()),repeat:!!c.template.repeat,batch:w,commit:()=>{t.transaction(B=>{B.template=w.document.template})&&(o.canvasPage.value=w.pageIndex,o.canvas.selections.value=w.selections.filter(B=>B.pageIndex===w.pageIndex),o.canvas.selection.value=w.selections.at(-1),a.section.value=c.template.repeat?"component":"fields",c.template.repeat?o.setMode("design"):a.activate(t.activeList.value.columns.length-1))}}}catch(c){s.value=c instanceof Error?c.message:String(c)}}function $(){if(o.editDisabled.value)return;const m=t.lists.value[t.selected.value],f=t.activeList.value,c=a.activeIndex.value,p=f?.columns[c];if(!m||!f||!p||f.columns.length<2){s.value=i.value.removeLast;return}const w=`$.template.pages[${m.pageIndex}].components[${m.componentIndex}]`;if(yt.inspectTemplateFieldUsage(t.draft.value.template,f.dataset,p.field).filter(R=>R.path.startsWith(w)&&R.path!==`${w}.columns[${c}].field`).length){s.value=i.value.dependentColumn;return}t.transaction(R=>{const H=R.template.pages[m.pageIndex],Q=H.components[m.componentIndex];Q?.kind==="list"&&!H.flow&&ba(Q,c,H.layout==="wide")})&&(s.value="",a.activate(Math.min(c,t.activeList.value.columns.length-1)))}return{fields:E,schema:M,insert:N,addField:x,addFields:k,removeColumn:$,notice:s,confirmation:g,confirmInsertion:C,cancelInsertion:y,messages:i}}function wa(t){function o(a){if(a.defaultPrevented||a.isComposing||a.keyCode===229||a.altKey||!(a.metaKey||a.ctrlKey))return!1;const l=a.target;if(l instanceof Element&&l.closest('input,textarea,select,[contenteditable=""],[contenteditable="true"],[role="textbox"]'))return!1;const n=a.key.toLowerCase(),r=n==="z"&&a.shiftKey||n==="y";if(n!=="z"&&n!=="y")return!1;const i=t();if(i.blocked)return!1;const s=r?i.redo:i.undo;return!s||!(r?i.canRedo:i.canUndo)?!1:(a.preventDefault(),a.stopPropagation(),s(),!0)}return{keydown:o}}function Wt(t,o,a){const l=e.ref(!1),n=e.ref(!1),r=e.shallowRef();let i=t.value.id;return e.watch([o,()=>t.value.id,a],()=>{i!==t.value.id&&(i=t.value.id,l.value=!1,n.value=!1,r.value=void 0),o.value==="design"?l.value=!0:(n.value=!0,r.value=a.value)},{immediate:!0,flush:"sync"}),{canvasVisited:l,previewVisited:n,visibleFetcher:r}}function Na(t,o,a=3){if(!t.tree)return o.slice(0,a).map(l=>t.columns.map(n=>$e.resolveListSampleCell(t,n,l)));if(o.length>200)return[];try{return be.createTreeTable(o,{...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,a).map(n=>t.columns.map(r=>$e.resolveTreeListSampleCell(t,r,n)))}catch{return[]}}function Va(t){const o=e.ref(),a=e.ref(.8),l=e.ref(0),n=e.ref(0),r=e.computed(()=>a.value*ct),i=e.computed(()=>t.document.template.pages[t.pageIndex]),s=e.computed(()=>i.value.widthMm*r.value>n.value-40+.5);let d,g=0,h=!!t.document.template.repeat;function v(k){const $=o.value;if(!$||$.clientWidth<=40||$.clientHeight<=40)return;let m={leftMm:0,topMm:0,widthMm:i.value.widthMm,heightMm:i.value.heightMm};const f=t.selection?.pageIndex===t.pageIndex?i.value.components[t.selection.componentIndex]:void 0;k==="selection"&&f&&(m=le(f));const c=($.clientWidth-40)/(m.widthMm*ct),p=($.clientHeight-40)/(m.heightMm*ct);a.value=Math.max(.05,Math.min(2,k==="width"?c:Math.min(c,p))),e.nextTick(()=>{$.scrollLeft=m.leftMm*r.value,$.scrollTop=m.topMm*r.value})}function y(k){h=!1,v(k)}function C(k){Number.isFinite(k)&&(h=!1,a.value=Math.max(.05,Math.min(2,k)))}function S(){const k=o.value;k&&(n.value=k.clientWidth,l.value=k.scrollWidth>k.clientWidth?Math.round(k.scrollLeft/(k.scrollWidth-k.clientWidth)*100):0)}function M(k){const $=o.value;$&&($.scrollLeft=($.scrollWidth-$.clientWidth)*k/100),l.value=k}function E(){S(),h&&t.document.template.repeat&&v("page")}function N(){g||(g=requestAnimationFrame(()=>{g=0,E()}))}async function x(){await e.nextTick();const k=o.value,$=t.selection;if(!k||$?.pageIndex!==t.pageIndex)return;const m=i.value.components[$.componentIndex];if(!m)return;const f=le(m);if(m.kind==="list"&&t.columnIndex!==void 0&&t.columnIndex>=0){const R=m;f.leftMm+=R.columns.slice(0,t.columnIndex).reduce((H,Q)=>H+Q.widthMm,0),f.widthMm=R.columns[t.columnIndex]?.widthMm??f.widthMm}const c=f.leftMm*r.value,p=f.topMm*r.value,w=c+f.widthMm*r.value,B=p+f.heightMm*r.value;c<k.scrollLeft?k.scrollLeft=c:w>k.scrollLeft+k.clientWidth-40&&(k.scrollLeft=Math.max(0,Math.min(c,w-k.clientWidth+40))),p<k.scrollTop?k.scrollTop=p:B>k.scrollTop+k.clientHeight-40&&(k.scrollTop=Math.max(0,Math.min(p,B-k.clientHeight+40))),S()}return e.watch(()=>[t.selection,t.columnIndex,t.pageIndex],()=>{x()}),e.watch(()=>t.document.id,()=>{h=!!t.document.template.repeat,e.nextTick(E)}),e.watch(()=>[!!t.document.template.repeat,t.pageIndex,i.value.widthMm,i.value.heightMm],()=>{e.nextTick(E)}),e.onMounted(()=>{E(),typeof ResizeObserver<"u"&&o.value&&(d=new ResizeObserver(N),d.observe(o.value))}),e.onBeforeUnmount(()=>{d?.disconnect(),g&&cancelAnimationFrame(g)}),{viewport:o,zoom:a,scale:r,page:i,wide:s,fraction:l,fit:y,setZoom:C,sync:S,navigate:M}}function Ca(){const t=new WeakMap;function o(a){let l=t.get(a);return l||(l=e.computed(()=>{const n=a.kind==="list"?a.headerGrid:a.grid;if(!n)return{cells:[],limited:!1};const r=a.kind==="list"?n.rowHeightsMm?.reduce((s,d)=>s+d,0)??n.cells.length*8:a.heightMm,i=Ge.resolveGridLayout(n,a.widthMm,r).cells;return a.kind==="list"?{cells:i,limited:!1}:{cells:i.slice(0,2e3),limited:n.cells.reduce((s,d)=>s+d.length,0)>2e3}}),t.set(a,l)),l.value}return{read:o}}const Ma=["title"],xa={key:0,class:"mr-canvas-primitive-error",role:"status"},Ba={key:1,class:"mr-canvas-primitive-sample"},Da=100,$a=e.defineComponent({__name:"CanvasPrimitivePreview",props:{component:{},datasets:{},zoom:{},sampleLabel:{}},setup(t){const o=t,a=e.ref(),l=e.computed(()=>{const n={...o.component,leftMm:0,topMm:0};if(!n.chartBinding)return{components:[n],scope:""};const r=n.chartBinding.dataset,i=o.datasets?.[r]??[],s=i.slice(0,Da);try{return{components:$e.createChartResolver({[r]:s},void 0,5e3)(n),scope:`${o.sampleLabel} · ${s.length} / ${i.length}`}}catch(d){return{components:[],scope:"",error:d instanceof Error?d.message:String(d)}}});return e.watchEffect(()=>{const n=a.value;if(!n)return;const r=l.value.components.map(i=>yt.renderComponent(i,96*o.zoom,{},n.ownerDocument));n.replaceChildren(...r)}),(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-canvas-primitive",title:l.value.error||l.value.scope},[e.createElementVNode("div",{ref_key:"root",ref:a,class:"mr-canvas-primitive-content mr-canvas-content","aria-hidden":"true"},null,512),l.value.error?(e.openBlock(),e.createElementBlock("small",xa,e.toDisplayString(l.value.error),1)):l.value.scope?(e.openBlock(),e.createElementBlock("small",Ba,e.toDisplayString(l.value.scope),1)):e.createCommentVNode("",!0)],8,Ma))}}),Ta=J._export_sfc($a,[["__scopeId","data-v-133419ae"]]);function _a(t,o,a){if(t.kind==="list")return{text:t.dataset};const l=t.kind==="barcode"||t.kind==="qrcode"?t.code?.value??t.fallbackText??t.text??"":t.text??t.fallbackText??"";return t.binding?Ia(t,o,a):{text:l,...t.imageData?{image:t.imageData}:{}}}function Ia(t,o,a){const l=t.binding,n=o.template.repeat,r=n?a?.[n.dataset]?.[0]:void 0;if(!r)return{text:l.field,bound:!0};try{const i=$e.resolveComponentBinding(l,r,{dataset:n?.dataset,rowIndex:0});return t.kind==="image"&&i&&!$e.isLabelImageData(i)?{text:l.field,bound:!0,error:"image-binding"}:{text:i,bound:!0,...t.kind==="image"&&$e.isLabelImageData(i)?{image:i}:{}}}catch(i){return{text:l.field,bound:!0,error:i instanceof Error?i.message:String(i)}}}function Dt(t,o){const l=[1,2,5,10,20,50,100,200,500,1e3].find(r=>r*o>=36)??Math.max(1e3,Math.ceil(t/200));return Array.from({length:Math.min(201,Math.floor(t/l)+1)},(r,i)=>({mm:i*l,position:i*l*o}))}const dt=[{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 Ue(t,o,a){return typeof t.meta?.title=="string"&&t.meta.title.trim()?t.meta.title:`${a} ${o+1}`}function Kt(t){return t.components.flatMap((o,a)=>{const l=o.kind==="list"?o.rowHeightMm??tt(o):o.heightMm;return o.leftMm<0||o.topMm<0||o.leftMm+o.widthMm>t.widthMm+.001||o.topMm+l>t.heightMm+.001?[a]:[]})}function Pa(t,o){const a=JSON.parse(JSON.stringify(t)),l=new Set(o.flatMap(i=>i.components.map(s=>s.kind==="list"?s.id:s.nid)).filter(Boolean)),n=new Map;let r=0;for(const i of a.components){const s=i.kind==="list"?i.id:i.nid;if(!s)continue;let d;do d=`page-copy-${++r}`;while(l.has(d));l.add(d),n.set(s,d),i.kind==="list"?i.id=d:(i.nid=d,delete i.rkey)}return a.flow?.bands.forEach(i=>{i.componentIds=i.componentIds.map(s=>n.get(s)??s)}),a}function Ra(t,o,a){const l=t.template.pages,n=l[o];if(!n)return 0;if(a.type==="patch")return Object.assign(n,a.patch),o;if(a.type==="remove")return l.length<=1?o:(l.splice(o,1),Math.min(o,l.length-1));const r=a.type==="duplicate"?Pa(n,l):JSON.parse(JSON.stringify(n));return a.type==="add"&&(r.components=[],delete r.flow,delete r.meta),l.splice(o+1,0,r),o+1}function $t(t,o,a){const l=t.filter(n=>n!==o).flatMap(n=>{const r=n[a],i=a==="leftMm"?n.widthMm:tt(n);return[r,r+i/2,r+i]});return[...new Set(l)].sort((n,r)=>n-r)}function La(t,o){if(!t.length)return;let a=0,l=t.length;for(;a<l;){const i=a+l>>>1;t[i]<o?a=i+1:l=i}const n=t[Math.max(0,a-1)],r=t[Math.min(t.length-1,a)];return Math.abs(n-o)<Math.abs(r-o)?n:r}function Tt(t,o,a,l){let n=1/0,r={value:Math.round(t*2)/2};for(const i of[0,o/2,o]){const s=La(a,t+i);if(s===void 0)continue;const d=Math.abs(s-t-i);d<=l&&d<n&&(n=d,r={value:s-i,guide:s})}return r}function Aa(t,o,a,l){if(l){const n=Math.abs(o)>=Math.abs(a)?o:a,r=Math.round((t.widthMm+n)*2)/2;return{...t,widthMm:r,heightMm:r}}return{...t,widthMm:Math.round((t.widthMm+o)*2)/2,heightMm:Math.round((t.heightMm+a)*2)/2}}function Fa(t){let o;function a(l,n,r=!1){if(t.disabled()||l.button!==0)return;l.preventDefault(),l.stopPropagation(),o?.();const i=l.currentTarget.closest("[data-canvas-component]"),s=le(n),d=l.clientX,g=l.clientY;let h=s,v=0;const y=t.scale.value,C=i.parentElement,S=t.selection?.()??[],M=!r&&S.includes(n)?S:[n],E=new Set(M),N=new Map(t.page().components.map((P,D)=>[P,D])),x=M.filter(P=>P!==n).flatMap(P=>{const D=C.querySelector(`[data-canvas-component="${N.get(P)}"]`);return D?[{element:D,box:le(P)}]:[]}),k=M.reduce((P,D)=>{const T=le(D),I=t.page();return{left:Math.max(P.left,-T.leftMm),right:Math.min(P.right,I.widthMm-T.leftMm-T.widthMm),top:Math.max(P.top,-T.topMm),bottom:Math.min(P.bottom,I.heightMm-T.topMm-(D.kind==="list"?2:T.heightMm))}},{left:-1/0,right:1/0,top:-1/0,bottom:1/0}),$=(P,D)=>({x:Math.max(k.left,Math.min(k.right,P)),y:Math.max(k.top,Math.min(k.bottom,D))});let m,f;const c=()=>{for(const[P,D]of[["x",m],["y",f]])C.style.setProperty(`--mr-canvas-guide-${P}-display`,D===void 0?"none":"block"),D!==void 0&&C.style.setProperty(`--mr-canvas-guide-${P}`,`${D*y}px`)},p=()=>{v=0,c(),i.style.left=`${h.leftMm*y}px`,i.style.top=`${h.topMm*y}px`,i.style.width=`${h.widthMm*y}px`,i.style.height=`${h.heightMm*y}px`;for(const P of x)P.element.style.left=`${(P.box.leftMm+h.leftMm-s.leftMm)*y}px`,P.element.style.top=`${(P.box.topMm+h.topMm-s.topMm)*y}px`},w={leftMm:$t(t.page().components.filter(P=>!E.has(P)),n,"leftMm"),topMm:$t(t.page().components.filter(P=>!E.has(P)),n,"topMm")},B=P=>{const D=(P.clientX-d)/y,T=(P.clientY-g)/y,I=Tt(s.leftMm+D,s.widthMm,w.leftMm,5/y),L=Tt(s.topMm+T,s.heightMm,w.topMm,5/y);if(m=r?void 0:I.guide,f=r?void 0:L.guide,h=et(r?Aa(s,D,T,n.kind==="qrcode"):{...s,leftMm:I.value,topMm:L.value},t.page(),n.kind==="list"),!r&&x.length){const _=$(h.leftMm-s.leftMm,h.topMm-s.topMm);h.leftMm=s.leftMm+_.x,h.topMm=s.topMm+_.y,_.x!==I.value-s.leftMm&&(m=void 0),_.y!==L.value-s.topMm&&(f=void 0)}r&&n.kind==="qrcode"&&(h.widthMm=h.heightMm=Math.min(h.widthMm,h.heightMm)),v||(v=requestAnimationFrame(p))},R=P=>{window.removeEventListener("pointermove",B),window.removeEventListener("pointerup",H),window.removeEventListener("pointercancel",Q),window.removeEventListener("keydown",u),v&&cancelAnimationFrame(v),h=P?h:s,m=void 0,f=void 0,p(),o=void 0,P&&JSON.stringify(h)!==JSON.stringify(s)&&t.commit(h)},H=()=>R(!0),Q=()=>R(!1),u=P=>{P.key==="Escape"&&(P.preventDefault(),Q())};window.addEventListener("pointermove",B),window.addEventListener("pointerup",H),window.addEventListener("pointercancel",Q),window.addEventListener("keydown",u),o=Q}return e.watch(t.disabled,l=>{l&&o?.()}),e.watch(t.page,()=>o?.()),e.onBeforeUnmount(()=>o?.()),{start:a}}const Ha={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:"请先修正模板错误,再预览或保存。"},Oa={chartNumeric:"数值口径",chartNumber:"真实数字",chartDecimal:"精确小数文本",chartDigits:"小数位",chartWeight:"权重字段",chartWeightedAverage:"加权平均",chartNumberOptions:"数值与精度",chartStacked:"堆叠柱形",chartPercent:"占比柱形",chartDataset:"数据集",chartCategory:"分类字段",chartMeasure:"度量与聚合",chartAggregation:"聚合方式",chartSeries:"系列名称(可选)",chartAddSeries:"添加系列",chartRemoveSeries:"移除系列",chartRecordCount:"计数",chartSum:"求和",chartAverage:"平均",chartMinimum:"最小值",chartMaximum:"最大值",chartType:"图表",chartBar:"柱形",chartLine:"折线",chartSort:"分类顺序",chartNatural:"数据顺序",chartAscending:"升序",chartDescending:"降序",chartTitle:"图表标题",chartValues:"显示数值",chartBindingNote:"复用本次查询的数据,先聚合再绘图;不改变原始数值。Excel 图形输出限制会在导出检查中提示。",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 可供预览与文件输出共用",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:"工具中还有未应用的配置,请先应用或恢复后再保存模板。",...Ha,...Oa},Ga={class:"mr-canvas"},za={class:"mr-canvas-heading"},ja={class:"mr-canvas-sheet-info"},Ua=["title"],qa=["title"],Wa={class:"mr-canvas-gesture-hint"},Ka={class:"mr-canvas-toolbar"},Ja={class:"mr-canvas-view-tools"},Ya=["aria-pressed"],Qa=["disabled"],Xa=["value","aria-label"],Za=["value"],eo=["width","aria-label"],to=["transform"],no={x:"3",y:"9"},ao=["height"],oo=["transform"],lo={x:"3",y:"10"},ro=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],io={class:"mr-canvas-table"},so={key:1,class:"mr-canvas-table-row is-header"},co=["onPointerdown"],uo={key:2,class:"mr-canvas-placeholder"},mo=["aria-label","onPointerdown"],po={key:1,class:"mr-canvas-static-grid"},fo={key:0,class:"mr-canvas-grid-limit"},vo=["title"],go={key:0},ho=["src"],yo=["title"],bo=["aria-label","onPointerdown"],ko={key:0,class:"mr-canvas-navigator"},Eo=["value","aria-label"],So=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{default:void 0},selections:{default:void 0},locked:{type:Function,default:void 0},activeColumnIndex:{default:void 0},pageIndex:{},datasets:{default:void 0},disabled:{type:Boolean},active:{type:Boolean,default:!0},geometryDisabled:{type:Boolean},messages:{default:void 0}},emits:["select","geometry","column","width","move","delete","duplicate"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),{viewport:r,zoom:i,scale:s,page:d,wide:g,fraction:h,fit:v,setZoom:y,sync:C,navigate:S}=Va({get document(){return a.document},get pageIndex(){return a.pageIndex},get selection(){return a.selection},get columnIndex(){return a.activeColumnIndex}}),M=e.computed(()=>a.disabled===!0||a.geometryDisabled===!0||!!d.value.flow),E=e.computed(()=>d.value.components.map(D=>D.kind==="list"?Na(D,a.datasets?.[D.dataset]??[],d.value.flow||D.cardinality==="record"?1:3):[])),N=e.computed(()=>d.value.components.map(D=>_a(D,a.document,a.datasets))),x=Ca(),k=e.ref(!0),$=e.computed(()=>Dt(d.value.widthMm,s.value)),m=e.computed(()=>Dt(d.value.heightMm,s.value));function f(D,T,I){return{width:`${T*s.value}px`,opacity:I?.35:1,textAlign:D.style?.align,paddingLeft:D.indentMm?`${D.indentMm*s.value}px`:void 0,color:D.style?.color,backgroundColor:D.style?.backgroundColor,fontWeight:D.style?.bold?"700":"400",fontSize:`${Ge.resolveFontSize(D.style).fontSizePx*i.value}px`}}function c(D){return a.locked?.({pageIndex:a.pageIndex,componentIndex:D})===!0}function p(D,T){l("select",{pageIndex:a.pageIndex,componentIndex:T,additive:D.ctrlKey||D.metaKey||D.shiftKey,preserve:!D.ctrlKey&&!D.metaKey&&!D.shiftKey&&B(T)}),!D.ctrlKey&&!D.metaKey&&!D.shiftKey&&!c(T)&&w.start(D,d.value.components[T])}const w=Fa({scale:s,page:()=>d.value,disabled:()=>M.value,selection:()=>d.value.components.filter((D,T)=>B(T)&&!c(T)),commit:D=>l("geometry",D)});function B(D){return(a.selections??(a.selection?[a.selection]:[])).some(T=>T.pageIndex===a.pageIndex&&T.componentIndex===D)}function R(D){const T=d.value.components[D],I=T.kind==="list"?T.id:T.nid,L=d.value.flow?.bands.find(O=>O.componentIds.includes(I??"")),_=L&&T.kind==="list"?L.topMm+L.heightMm-T.topMm:tt(T);return{left:`${T.leftMm*s.value}px`,top:`${T.topMm*s.value}px`,width:`${T.widthMm*s.value}px`,height:`${_*s.value}px`}}function H(D,T){if(D.isComposing||M.value||c(T)||!B(T))return;if(D.key==="Delete"||D.key==="Backspace"){D.preventDefault(),D.stopPropagation(),l("delete");return}if((D.metaKey||D.ctrlKey)&&D.key.toLowerCase()==="d"){D.preventDefault(),D.stopPropagation(),l("duplicate");return}const I={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},L=I[D.key];if(!L)return;D.preventDefault(),D.stopPropagation();const _=D.shiftKey?5:.5;l("move",L[0]*_,L[1]*_)}function Q(D){let T=0;return D.columns.map(I=>(T+=I.widthMm,T))}let u;e.watch(()=>M.value,D=>{D&&u?.()}),e.watch(()=>a.document,()=>u?.()),e.onBeforeUnmount(()=>u?.());function P(D,T,I){if(M.value||D.button!==0)return;D.preventDefault(),D.stopPropagation(),u?.();const L=D.clientX,_=T.columns[I].widthMm;let O=_;const Y=D.currentTarget,U=X=>{O=Math.max(2,Math.round((_+(X.clientX-L)/s.value)*2)/2),Y.style.transform=`translateX(${(O-_)*s.value}px)`},j=()=>{window.removeEventListener("pointermove",U),window.removeEventListener("pointerup",oe),window.removeEventListener("pointercancel",ne),window.removeEventListener("keydown",ie),Y.style.transform="",u=void 0},oe=()=>{j(),O!==_&&l("width",I,O)},ne=()=>j(),ie=X=>{X.key==="Escape"&&(X.preventDefault(),ne())};window.addEventListener("pointermove",U),window.addEventListener("pointerup",oe),window.addEventListener("pointercancel",ne),window.addEventListener("keydown",ie),u=ne}return(D,T)=>(e.openBlock(),e.createElementBlock("div",Ga,[e.createElementVNode("div",za,[e.createElementVNode("div",ja,[e.createElementVNode("strong",{title:e.unref(Ue)(e.unref(d),t.pageIndex,n.value.page)},e.toDisplayString(e.unref(Ue)(e.unref(d),t.pageIndex,n.value.page)),9,Ua),e.createElementVNode("span",null,e.toDisplayString(e.unref(d).widthMm)+" × "+e.toDisplayString(e.unref(d).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,qa)):e.createCommentVNode("",!0)]),e.createElementVNode("span",Wa,e.toDisplayString(n.value.canvasHint),1),e.createElementVNode("div",Ka,[e.createElementVNode("nav",Ja,[e.createElementVNode("button",{type:"button","aria-pressed":k.value,onClick:T[0]||(T[0]=I=>k.value=!k.value)},e.toDisplayString(n.value.rulerToggle),9,Ya),e.createElementVNode("button",{type:"button",onClick:T[1]||(T[1]=I=>e.unref(v)("width"))},e.toDisplayString(n.value.fitWidth),1),e.createElementVNode("button",{type:"button",onClick:T[2]||(T[2]=I=>e.unref(v)("page"))},e.toDisplayString(n.value.fitPage),1),e.createElementVNode("button",{type:"button",disabled:!t.selection,onClick:T[3]||(T[3]=I=>e.unref(v)("selection"))},e.toDisplayString(n.value.fitSelection),9,Qa)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.zoom),1),e.createElementVNode("select",{value:e.unref(i),"aria-label":n.value.zoom,onChange:T[4]||(T[4]=I=>e.unref(y)(Number(I.target.value)))},[[.5,.8,1,1.25].includes(e.unref(i))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("option",{key:0,value:e.unref(i)},e.toDisplayString(Math.round(e.unref(i)*100))+"%",9,Za)),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,Xa)])])]),e.createElementVNode("div",{ref_key:"viewport",ref:r,class:"mr-canvas-scroll",onScrollPassive:T[5]||(T[5]=(...I)=>e.unref(C)&&e.unref(C)(...I))},[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${e.unref(d).widthMm*e.unref(s)}px`,height:`${e.unref(d).heightMm*e.unref(s)}px`})},[k.value?(e.openBlock(),e.createElementBlock("svg",{key:0,class:"mr-canvas-ruler is-horizontal",width:e.unref(d).widthMm*e.unref(s),height:"17","aria-label":n.value.rulerLabel,role:"img"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,I=>(e.openBlock(),e.createElementBlock("g",{key:I.mm,transform:`translate(${I.position}, 0)`},[T[11]||(T[11]=e.createElementVNode("line",{y1:"12",y2:"17"},null,-1)),e.createElementVNode("text",no,e.toDisplayString(I.mm),1)],8,to))),128))],8,eo)):e.createCommentVNode("",!0),k.value?(e.openBlock(),e.createElementBlock("svg",{key:1,class:"mr-canvas-ruler is-vertical",width:"17",height:e.unref(d).heightMm*e.unref(s),"aria-hidden":"true"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,I=>(e.openBlock(),e.createElementBlock("g",{key:I.mm,transform:`translate(0, ${I.position})`},[T[12]||(T[12]=e.createElementVNode("line",{x1:"12",x2:"17"},null,-1)),e.createElementVNode("text",lo,e.toDisplayString(I.mm),1)],8,oo))),128))],8,ao)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.active===!1?[]:e.unref(d).components,(I,L)=>(e.openBlock(),e.createElementBlock("div",{key:L,class:e.normalizeClass(["mr-canvas-component",{"is-selected":B(L),"is-locked":c(L)}]),"data-canvas-component":L,style:e.normalizeStyle(R(L)),role:"button","aria-label":`${n.value.component} ${L+1} ${I.kind}`,"aria-pressed":B(L),tabindex:B(L)?0:-1,onFocus:_=>l("select",{pageIndex:t.pageIndex,componentIndex:L,preserve:B(L)}),onPointerdown:_=>p(_,L),onClick:_=>_.detail===0&&!B(L)&&l("select",{pageIndex:t.pageIndex,componentIndex:L}),onKeydown:_=>H(_,L)},[I.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",io,[I.header!==!1&&I.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(I.headerGrid.rowHeightsMm?.reduce((_,O)=>_+O,0)??I.headerGrid.cells.length*8)*e.unref(s)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(x).read(I).cells,(_,O)=>(e.openBlock(),e.createElementBlock("div",{key:O,style:e.normalizeStyle({left:`${_.xMm*e.unref(s)}px`,top:`${_.yMm*e.unref(s)}px`,width:`${_.widthMm*e.unref(s)}px`,height:`${_.heightMm*e.unref(s)}px`,textAlign:_.cell.style?.align??"center"})},e.toDisplayString(_.cell.text),5))),128))],4)):I.header!==!1?(e.openBlock(),e.createElementBlock("div",so,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.columns,(_,O)=>(e.openBlock(),e.createElementBlock("div",{key:O,style:e.normalizeStyle(f({text:_.header,style:e.unref($e.resolveListHeaderStyle)(I,_)},_.widthMm,_.hidden)),onPointerdown:e.withModifiers(Y=>{l("select",{pageIndex:t.pageIndex,componentIndex:L}),l("column",O)},["stop"])},e.toDisplayString(_.header),45,co))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value[L],(_,O)=>(e.openBlock(),e.createElementBlock("div",{key:O,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.columns,(Y,U)=>(e.openBlock(),e.createElementBlock("div",{key:U,style:e.normalizeStyle(f(_[U],Y.widthMm,Y.hidden))},e.toDisplayString(_[U].text),5))),128))]))),128)),E.value[L]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",uo,e.toDisplayString(I.dataset)+" · "+e.toDisplayString(I.tree&&t.datasets?.[I.dataset]?.length?n.value.treeSampleHint:n.value.sampleRows),1))]),B(L)&&!M.value&&!c(L)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(Q(I),(_,O)=>(e.openBlock(),e.createElementBlock("span",{key:O,class:"mr-canvas-column-handle","aria-label":`${n.value.resizeColumn} ${I.columns[O]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${_*e.unref(s)}px`}),onPointerdown:Y=>P(Y,I,O)},null,44,mo))),128)):e.createCommentVNode("",!0)],64)):I.grid?(e.openBlock(),e.createElementBlock("div",po,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(x).read(I).cells,(_,O)=>(e.openBlock(),e.createElementBlock("div",{key:O,style:e.normalizeStyle({left:`${_.xMm*e.unref(s)}px`,top:`${_.yMm*e.unref(s)}px`,width:`${_.widthMm*e.unref(s)}px`,height:`${_.heightMm*e.unref(s)}px`,backgroundColor:_.cell.style?.backgroundColor,color:_.cell.style?.color,fontWeight:_.cell.style?.bold?"700":"400",fontSize:`${e.unref(Ge.resolveFontSize)(_.cell.style).fontSizePx*e.unref(i)}px`,textAlign:_.cell.style?.align??"left"})},e.toDisplayString(_.cell.text),5))),128)),e.unref(x).read(I).limited?(e.openBlock(),e.createElementBlock("span",fo,e.toDisplayString(n.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):["chart","line","rect","ellipse"].includes(I.kind)||I.kind==="text"&&!I.binding?(e.openBlock(),e.createBlock(Ta,{key:2,component:I,datasets:t.datasets,zoom:e.unref(i),"sample-label":n.value.designSample},null,8,["component","datasets","zoom","sample-label"])):(I.kind==="barcode"||I.kind==="qrcode")&&!N.value[L]?.image?(e.openBlock(),e.createElementBlock("div",{key:3,class:e.normalizeClass(["mr-canvas-code",{"is-error":N.value[L]?.error}]),title:N.value[L]?.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(I.kind==="qrcode"?n.value.insertQrcode:(I.code?.symbology??"code128").toUpperCase()),1),e.createElementVNode("span",null,e.toDisplayString(N.value[L]?.text||n.value.codePlaceholder),1),N.value[L]?.bound?(e.openBlock(),e.createElementBlock("small",go,e.toDisplayString(I.binding?.field),1)):e.createCommentVNode("",!0)],10,vo)):N.value[L]?.image?(e.openBlock(),e.createElementBlock("img",{key:4,src:N.value[L]?.image,alt:"",draggable:"false"},null,8,ho)):(e.openBlock(),e.createElementBlock("div",{key:5,class:e.normalizeClass(["mr-canvas-content",{"is-binding-error":N.value[L]?.error,"is-bound-image":I.kind==="image"&&I.binding}]),title:N.value[L]?.error==="image-binding"?n.value.bindingImageHint:N.value[L]?.error,style:e.normalizeStyle({color:I.style?.color,backgroundColor:I.style?.backgroundColor,fontWeight:I.style?.bold?"700":"400",fontSize:`${e.unref(Ge.resolveFontSize)(I.style).fontSizePx*e.unref(i)}px`,textAlign:I.style?.align,justifyContent:I.style?.verticalAlign==="bottom"?"flex-end":I.style?.verticalAlign==="middle"?"center":"flex-start"})},e.toDisplayString(N.value[L]?.text||(I.kind==="rect"?"":I.kind==="image"&&I.binding?n.value.boundImagePlaceholder:"")),15,yo)),B(L)&&!M.value&&!c(L)?(e.openBlock(),e.createElementBlock("span",{key:6,class:"mr-canvas-resize","aria-label":n.value.resizeComponent,role:"separator",onPointerdown:_=>e.unref(w).start(_,I,!0)},null,40,bo)):e.createCommentVNode("",!0)],46,ro))),128))],4)],544),e.unref(g)?(e.openBlock(),e.createElementBlock("footer",ko,[e.createElementVNode("span",null,e.toDisplayString(n.value.wideNavigation),1),e.createElementVNode("input",{type:"range",min:"0",max:"100",value:e.unref(h),"aria-label":n.value.wideNavigation,onInput:T[6]||(T[6]=I=>e.unref(S)(Number(I.target.value)))},null,40,Eo),e.createElementVNode("span",null,e.toDisplayString(e.unref(h))+"%",1)])):e.createCommentVNode("",!0)]))}}),wo=J._export_sfc(So,[["__scopeId","data-v-8f289644"]]),No=["disabled"],Vo=["aria-label","value"],Co=["value"],Mo=["aria-label","value"],xo=["value"],Bo={class:"mr-chart-series-heading"},Do=["disabled"],$o={class:"mr-chart-series-row"},To=["value","aria-label","onChange"],_o={key:0,value:""},Io=["value"],Po=["aria-label","disabled","onClick"],Ro={class:"mr-chart-series-row"},Lo=["value","aria-label","onChange"],Ao={value:"sum"},Fo={value:"avg"},Ho={value:"weightedAvg"},Oo={value:"count"},Go={value:"min"},zo={value:"max"},jo=["value","aria-label","placeholder","onChange"],Uo={key:0},qo=["aria-label","value","onChange"],Wo=["value"],Ko={class:"mr-chart-series-row"},Jo=["value","aria-label","onChange"],Yo={value:"number"},Qo={value:"decimal"},Xo=["value","aria-label","placeholder","onChange"],Zo={class:"mr-chart-series-row"},el=["aria-label","value"],tl={value:"bar"},nl={value:"line"},al={value:"stackedBar"},ol={value:"percentBar"},ll=["aria-label","value"],rl={value:""},il={value:"asc"},sl={value:"desc"},cl=["aria-label","value"],dl={class:"mr-chart-check"},ul=["checked"],ml=e.defineComponent({__name:"ChartBindingInspector",props:{component:{},schemas:{},datasets:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.computed(()=>a.component.chartBinding??{dataset:"detail",categoryField:"field",type:"bar",measures:[{op:"sum",field:"value"}]}),i=e.computed(()=>[...new Set([r.value.dataset,...Object.keys(a.schemas??{}),...Object.keys(a.datasets??{})])]),s=e.computed(()=>{const M=a.schemas?.[r.value.dataset]?.fields;if(M)return M.map(N=>({field:N.field,label:N.label??N.field,type:N.type}));const E=a.datasets?.[r.value.dataset]?.[0];return[...new Set([r.value.categoryField,...r.value.measures.flatMap(N=>N.field?[N.field]:[]),...Object.keys(E??{}).slice(0,200)])].map(N=>({field:N,label:N,type:void 0}))});function d(M){a.disabled||l("change",{...r.value,...M})}function g(M,E){d({measures:r.value.measures.map((N,x)=>{if(x!==M)return N;const k={...N,...E};return k.op==="weightedAvg"&&!k.weightField&&(k.weightField=s.value.find($=>$.field!==k.field&&["number","decimal"].includes($.type??""))?.field??k.field??"value"),k.op!=="count"&&!k.field&&(k.field=s.value[0]?.field??"value"),k})})}function h(M,E){g(M,{field:E||void 0,numeric:s.value.find(N=>N.field===E)?.type==="decimal"?"decimal":"number"})}function v(M,E){(E===""||/^\d+$/.test(E)&&Number(E)<=100)&&g(M,{digits:E===""?void 0:Number(E)})}function y(){r.value.measures.length<12&&d({measures:[...r.value.measures,{op:"sum",field:s.value[0]?.field??"value"}]})}function C(M){r.value.measures.length>1&&d({measures:r.value.measures.filter((E,N)=>N!==M)})}const S=M=>M.target.value;return(M,E)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-chart-binding",disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartDataset),1),e.createElementVNode("select",{"aria-label":n.value.chartDataset,value:r.value.dataset,onChange:E[0]||(E[0]=N=>d({dataset:S(N)}))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,N=>(e.openBlock(),e.createElementBlock("option",{key:N,value:N},e.toDisplayString(N),9,Co))),128))],40,Vo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartCategory),1),e.createElementVNode("select",{"aria-label":n.value.chartCategory,value:r.value.categoryField,onChange:E[1]||(E[1]=N=>d({categoryField:S(N)}))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,N=>(e.openBlock(),e.createElementBlock("option",{key:N.field,value:N.field},e.toDisplayString(N.label),9,xo))),128))],40,Mo)]),e.createElementVNode("div",Bo,[e.createElementVNode("strong",null,e.toDisplayString(n.value.chartMeasure),1),e.createElementVNode("button",{type:"button",disabled:t.disabled||r.value.measures.length>=12,onClick:y},"+ "+e.toDisplayString(n.value.chartAddSeries),9,Do)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value.measures,(N,x)=>(e.openBlock(),e.createElementBlock("div",{key:x,class:"mr-chart-series"},[e.createElementVNode("div",$o,[e.createElementVNode("select",{value:N.field??"","aria-label":n.value.chartMeasure,onChange:k=>h(x,S(k))},[N.op==="count"?(e.openBlock(),e.createElementBlock("option",_o,e.toDisplayString(n.value.chartRecordCount),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>(e.openBlock(),e.createElementBlock("option",{key:k.field,value:k.field},e.toDisplayString(k.label),9,Io))),128))],40,To),e.createElementVNode("button",{type:"button","aria-label":n.value.chartRemoveSeries,disabled:t.disabled||r.value.measures.length===1,onClick:k=>C(x)},"×",8,Po)]),e.createElementVNode("div",Ro,[e.createElementVNode("select",{value:N.op,"aria-label":n.value.chartAggregation,onChange:k=>g(x,{op:S(k)})},[e.createElementVNode("option",Ao,e.toDisplayString(n.value.chartSum),1),e.createElementVNode("option",Fo,e.toDisplayString(n.value.chartAverage),1),e.createElementVNode("option",Ho,e.toDisplayString(n.value.chartWeightedAverage),1),e.createElementVNode("option",Oo,e.toDisplayString(n.value.chartRecordCount),1),e.createElementVNode("option",Go,e.toDisplayString(n.value.chartMinimum),1),e.createElementVNode("option",zo,e.toDisplayString(n.value.chartMaximum),1)],40,Lo),e.createElementVNode("input",{value:N.label,"aria-label":n.value.chartSeries,placeholder:n.value.chartSeries,maxlength:"256",onChange:k=>g(x,{label:S(k)||void 0})},null,40,jo)]),N.op==="weightedAvg"?(e.openBlock(),e.createElementBlock("label",Uo,[e.createTextVNode(e.toDisplayString(n.value.chartWeight),1),e.createElementVNode("select",{"aria-label":n.value.chartWeight,value:N.weightField??"",onChange:k=>g(x,{weightField:S(k)||void 0})},[E[6]||(E[6]=e.createElementVNode("option",{value:"",disabled:""},"—",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>(e.openBlock(),e.createElementBlock("option",{key:k.field,value:k.field},e.toDisplayString(k.label),9,Wo))),128))],40,qo)])):e.createCommentVNode("",!0),e.createElementVNode("details",null,[e.createElementVNode("summary",null,e.toDisplayString(n.value.chartNumberOptions),1),e.createElementVNode("div",Ko,[e.createElementVNode("select",{value:N.numeric??"number","aria-label":n.value.chartNumeric,onChange:k=>g(x,{numeric:S(k)})},[e.createElementVNode("option",Yo,e.toDisplayString(n.value.chartNumber),1),e.createElementVNode("option",Qo,e.toDisplayString(n.value.chartDecimal),1)],40,Jo),e.createElementVNode("input",{type:"number",min:"0",max:"100",value:N.digits,"aria-label":n.value.chartDigits,placeholder:n.value.chartDigits,onChange:k=>v(x,S(k))},null,40,Xo)])])]))),128)),e.createElementVNode("div",Zo,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartType),1),e.createElementVNode("select",{"aria-label":n.value.chartType,value:r.value.type,onChange:E[2]||(E[2]=N=>d({type:S(N)}))},[e.createElementVNode("option",tl,e.toDisplayString(n.value.chartBar),1),e.createElementVNode("option",nl,e.toDisplayString(n.value.chartLine),1),e.createElementVNode("option",al,e.toDisplayString(n.value.chartStacked),1),e.createElementVNode("option",ol,e.toDisplayString(n.value.chartPercent),1)],40,el)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartSort),1),e.createElementVNode("select",{"aria-label":n.value.chartSort,value:r.value.sort??"",onChange:E[3]||(E[3]=N=>d({sort:S(N)||void 0}))},[e.createElementVNode("option",rl,e.toDisplayString(n.value.chartNatural),1),e.createElementVNode("option",il,e.toDisplayString(n.value.chartAscending),1),e.createElementVNode("option",sl,e.toDisplayString(n.value.chartDescending),1)],40,ll)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartTitle),1),e.createElementVNode("input",{"aria-label":n.value.chartTitle,value:r.value.title,maxlength:"512",onChange:E[4]||(E[4]=N=>d({title:S(N)||void 0}))},null,40,cl)]),e.createElementVNode("label",dl,[e.createElementVNode("input",{type:"checkbox",checked:r.value.showValues,onChange:E[5]||(E[5]=N=>d({showValues:N.target.checked}))},null,40,ul),e.createTextVNode(e.toDisplayString(n.value.chartValues),1)]),e.createElementVNode("p",null,e.toDisplayString(n.value.chartBindingNote),1)],8,No))}}),Jt=J._export_sfc(ml,[["__scopeId","data-v-4060b1b9"]]),pl={class:"mr-component-binding"},fl=["value","disabled"],vl={value:"static"},gl=["disabled"],hl={key:0,class:"mr-binding-hint"},yl=["value","disabled"],bl=["value"],kl={key:0,class:"mr-binding-grid"},El=["value","disabled"],Sl={value:"natural"},wl={value:"number"},Nl={value:"percent"},Vl={value:"date"},Cl={key:0},Ml=["value","disabled"],xl={key:1},Bl=["value","disabled"],Dl={key:1},$l={class:"mr-binding-grid"},Tl=["value","disabled"],_l=["value","disabled"],Il=["value","disabled"],Pl={class:"mr-binding-hint"},Rl=e.defineComponent({__name:"ComponentDataBinding",props:{component:{},repeat:{},schema:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.computed(()=>a.component.binding),i=`mr-component-fields-${e.getCurrentInstance()?.uid??0}`;function s(y){return y.target.value}function d(y){!a.disabled&&r.value&&l("change",{...r.value,...y})}function g(y){a.disabled||(s(y)==="static"?l("change",void 0):a.repeat&&l("change",{field:a.schema?.fields[0]?.field??"value"}))}function h(y){if(!r.value||a.disabled)return;const C={...r.value},S=s(y);S==="natural"?delete C.format:C.format=S==="date"?{kind:"date",pattern:"YYYY-MM-DD"}:{kind:S,digits:2},l("change",C)}function v(y){const C=s(y),S=r.value?.format;C.trim()&&S&&S.kind!=="date"&&d({format:{...S,digits:Number(C)}})}return(y,C)=>(e.openBlock(),e.createElementBlock("div",pl,[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:g},[e.createElementVNode("option",vl,e.toDisplayString(n.value.staticContent),1),e.createElementVNode("option",{value:"field",disabled:!t.repeat},e.toDisplayString(n.value.recordField),9,gl)],40,fl)]),t.repeat?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",hl,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:i,disabled:t.disabled,onChange:C[0]||(C[0]=S=>s(S).trim()&&d({field:s(S).trim()}))},null,40,yl)]),e.createElementVNode("datalist",{id:i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.schema?.fields??[],S=>(e.openBlock(),e.createElementBlock("option",{key:S.field,value:S.field},e.toDisplayString(S.label),9,bl))),128))]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",kl,[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:h},[e.createElementVNode("option",Sl,e.toDisplayString(n.value.naturalFormat),1),e.createElementVNode("option",wl,e.toDisplayString(n.value.numberFormat),1),e.createElementVNode("option",Nl,e.toDisplayString(n.value.percentFormat),1),e.createElementVNode("option",Vl,e.toDisplayString(n.value.dateFormat),1)],40,El)]),r.value.format&&r.value.format.kind!=="date"?(e.openBlock(),e.createElementBlock("label",Cl,[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:v},null,40,Ml)])):r.value.format?.kind==="date"?(e.openBlock(),e.createElementBlock("label",xl,[e.createTextVNode(e.toDisplayString(n.value.datePattern),1),e.createElementVNode("input",{value:r.value.format.pattern??"YYYY-MM-DD",disabled:t.disabled,onChange:C[1]||(C[1]=S=>d({format:{kind:"date",pattern:s(S)}}))},null,40,Bl)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),t.component.kind!=="image"?(e.openBlock(),e.createElementBlock("details",Dl,[e.createElementVNode("summary",null,e.toDisplayString(n.value.bindingDecoration),1),e.createElementVNode("div",$l,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valuePrefix),1),e.createElementVNode("input",{value:r.value.prefix??"",disabled:t.disabled,onChange:C[2]||(C[2]=S=>d({prefix:s(S)}))},null,40,Tl)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valueSuffix),1),e.createElementVNode("input",{value:r.value.suffix??"",disabled:t.disabled,onChange:C[3]||(C[3]=S=>d({suffix:s(S)}))},null,40,_l)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.emptyValueText),1),e.createElementVNode("input",{value:r.value.emptyText??"",disabled:t.disabled,onChange:C[4]||(C[4]=S=>d({emptyText:s(S)}))},null,40,Il)])])):e.createCommentVNode("",!0),e.createElementVNode("p",Pl,e.toDisplayString(t.repeat?.dataset)+" · "+e.toDisplayString(t.component.kind==="image"?n.value.bindingImageHint:n.value.bindingRecordHint),1)],64)):e.createCommentVNode("",!0)]))}}),Ll=J._export_sfc(Rl,[["__scopeId","data-v-4558f265"]]),Al={class:"mr-code-properties"},Fl={key:0},Hl=["value","disabled"],Ol={key:1},Gl=["value","disabled"],zl={key:2,class:"mr-code-checkbox"},jl=["checked","disabled"],Ul={class:"mr-code-advanced"},ql={class:"mr-code-grid"},Wl={key:0},Kl=["value","disabled"],Jl=["min","value","disabled"],Yl={key:0},Ql=e.defineComponent({__name:"CodeComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.computed(()=>a.component.kind==="qrcode"?4:a.component.code?.symbology?.startsWith("ean")?11:10);function i(g){return g.target.value}function s(g){a.disabled||l("change",{...a.component.code,...g})}function d(g){const h=i(g);s({symbology:h,quietZoneModules:h.startsWith("ean")?11:10})}return(g,h)=>(e.openBlock(),e.createElementBlock("div",Al,[e.createElementVNode("h3",null,e.toDisplayString(n.value.codeSettings),1),t.component.binding?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("label",Fl,[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:h[0]||(h[0]=v=>s({value:i(v)}))},null,40,Hl)])),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",Ol,[e.createTextVNode(e.toDisplayString(n.value.codeSymbology),1),e.createElementVNode("select",{value:t.component.code?.symbology??"code128",disabled:t.disabled,onChange:d},[...h[4]||(h[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,Gl)])):e.createCommentVNode("",!0),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",zl,[e.createElementVNode("input",{type:"checkbox",checked:t.component.code?.showText===!0,disabled:t.disabled,onChange:h[1]||(h[1]=v=>s({showText:v.target.checked}))},null,40,jl),e.createTextVNode(e.toDisplayString(n.value.codeShowText),1)])):e.createCommentVNode("",!0),e.createElementVNode("details",Ul,[e.createElementVNode("summary",null,e.toDisplayString(n.value.codeAdvancedSettings),1),e.createElementVNode("div",ql,[t.component.kind==="qrcode"?(e.openBlock(),e.createElementBlock("label",Wl,[e.createTextVNode(e.toDisplayString(n.value.codeCorrection),1),e.createElementVNode("select",{value:t.component.code?.errorCorrection??"M",disabled:t.disabled,onChange:h[2]||(h[2]=v=>s({errorCorrection:i(v)}))},[...h[5]||(h[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,Kl)])):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:h[3]||(h[3]=v=>i(v).trim()&&s({quietZoneModules:Number(i(v))}))},null,40,Jl)])]),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("p",Yl,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)])]))}}),Xl=J._export_sfc(Ql,[["__scopeId","data-v-907fe45a"]]),Zl=["aria-label"],er=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],tr={key:0},nr={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},ar={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},or={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},lr={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},rr={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},ir=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,l=o,n=()=>a.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function r(i,s){if(!["ArrowLeft","ArrowRight","Home","End"].includes(i.key))return;i.preventDefault();const g=n(),h=g.indexOf(s),v=i.key==="Home"?0:i.key==="End"?g.length-1:(h+(i.key==="ArrowRight"?1:-1)+g.length)%g.length;l("update:modelValue",g[v]);const y=i.currentTarget.parentElement;await e.nextTick(),y?.querySelector(`[data-align="${g[v]}"]`)?.focus()}return(i,s)=>(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(),d=>(e.openBlock(),e.createElementBlock("button",{key:d,type:"button",role:"radio","data-align":d,"aria-label":t.labels[d],title:t.labels[d],"aria-checked":t.modelValue===d,tabindex:t.modelValue===d?0:-1,onClick:g=>l("update:modelValue",d),onKeydown:g=>r(g,d)},[d==="auto"?(e.openBlock(),e.createElementBlock("span",tr,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",nr,[d==="left"?(e.openBlock(),e.createElementBlock("path",ar)):d==="center"?(e.openBlock(),e.createElementBlock("path",or)):d==="right"?(e.openBlock(),e.createElementBlock("path",lr)):(e.openBlock(),e.createElementBlock("path",rr))]))],40,er))),128))],8,Zl))}}),ft=J._export_sfc(ir,[["__scopeId","data-v-c85770c4"]]),sr=["disabled"],cr={class:"mr-component-content"},dr={key:2},ur=["value"],mr=["value"],pr={class:"mr-component-upload"},fr=["aria-label"],vr={key:0,role:"alert"},gr={key:5},hr=["value"],yr={key:0,class:"mr-component-type"},br={class:"mr-component-dimensions"},kr=["value"],Er=["checked"],Sr={class:"mr-component-dimensions"},wr=["value"],Nr=["value"],Vr=["open"],Cr={class:"mr-component-dimensions"},Mr=["min","value","disabled","onChange"],xr={key:0},Br=["value","disabled"],Dr={value:""},$r={value:"header"},Tr={value:"footer"},_r=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},repeat:{},schema:{},schemas:{},datasets:{},messages:{}},emits:["geometry","patch"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.ref(""),i=["leftMm","topMm","widthMm","heightMm"],s=e.computed(()=>[n.value.leftPosition,n.value.topPosition,n.value.componentWidth,n.value.componentHeight]);function d(S,M){if(a.disabled||a.geometryDisabled)return;const E=Number(M.target.value);if(!Number.isFinite(E))return;const N={...le(a.component),[S]:E};a.component.kind==="qrcode"&&(S==="widthMm"||S==="heightMm")&&(N.widthMm=N.heightMm=E),l("geometry",N)}function g(S,M){if(a.component.kind==="list")return;const E={...a.component.style,[S]:M};S==="fontSize"&&delete E.fontSizePx,l("patch",{style:E})}const h=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));function v(S){return S.target.value}function y(S){const M={...a.component.meta};delete M.designerPlaceholder,l("patch",{imageData:S,meta:M})}async function C(S){const M=S.target,E=M.files?.[0];if(!E)return;r.value="";const N=a.component;try{if(E.size>4*1024*1024||!["image/png","image/jpeg"].includes(E.type))throw new Error(n.value.imageBudget);const x=new FileReader,k=await new Promise(($,m)=>{x.onload=()=>$(String(x.result)),x.onerror=()=>m(x.error),x.readAsDataURL(E)});!a.disabled&&a.component===N&&y(k)}catch(x){r.value=x instanceof Error?x.message:String(x)}finally{M.value=""}}return(S,M)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("div",cr,[t.component.kind==="chart"&&!t.component.imageData?(e.openBlock(),e.createBlock(Jt,{key:0,component:t.component,schemas:t.schemas,datasets:t.datasets,disabled:t.disabled,messages:n.value,onChange:M[0]||(M[0]=E=>l("patch",{chartBinding:E}))},null,8,["component","schemas","datasets","disabled","messages"])):e.createCommentVNode("",!0),["text","image","barcode","qrcode"].includes(t.component.kind)&&t.component.kind!=="list"&&!t.component.grid?(e.openBlock(),e.createBlock(Ll,{key:1,component:t.component,repeat:t.repeat,schema:t.schema,disabled:t.disabled,messages:n.value,onChange:M[1]||(M[1]=E=>l("patch",{binding:E,...["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",dr,[e.createTextVNode(e.toDisplayString(n.value.componentText),1),e.createElementVNode("textarea",{rows:"3",value:t.component.text,onChange:M[2]||(M[2]=E=>l("patch",{text:v(E)}))},null,40,ur)])):e.createCommentVNode("",!0),t.component.kind==="image"&&!t.component.binding?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:M[3]||(M[3]=E=>y(v(E)))},null,40,mr)]),e.createElementVNode("label",pr,[e.createTextVNode(e.toDisplayString(n.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg","aria-label":n.value.imageUpload,onChange:C},null,40,fr)]),r.value?(e.openBlock(),e.createElementBlock("p",vr,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="barcode"||t.component.kind==="qrcode"?(e.openBlock(),e.createBlock(Xl,{key:4,component:t.component,disabled:t.disabled,messages:n.value,onChange:M[4]||(M[4]=E=>l("patch",{code:E,imageData:void 0}))},null,8,["component","disabled","messages"])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",gr,[e.createTextVNode(e.toDisplayString(n.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:M[5]||(M[5]=E=>l("patch",{dataset:v(E)}))},null,40,hr)])):e.createCommentVNode("",!0)]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",yr,[e.createElementVNode("h3",null,e.toDisplayString(n.value.textFormat),1),e.createElementVNode("div",br,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(Ge.resolveFontSize)(t.component.style).fontSizePt,onChange:M[6]||(M[6]=E=>g("fontSize",Number(v(E))))},null,40,kr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:M[7]||(M[7]=E=>g("bold",E.target.checked))},null,40,Er)])]),e.createVNode(ft,{"model-value":t.component.style?.align??"left",label:n.value.bodyAlign,labels:h.value,"auto-label":n.value.autoShort,"onUpdate:modelValue":M[8]||(M[8]=E=>g("align",E))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",Sr,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:M[9]||(M[9]=E=>g("color",v(E)))},null,40,wr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:M[10]||(M[10]=E=>g("backgroundColor",v(E)))},null,40,Nr)])])])):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(le)(t.component).widthMm)+" × "+e.toDisplayString(e.unref(le)(t.component).heightMm),1)]),e.createElementVNode("div",Cr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.filter(E=>t.component.kind!=="list"||E!=="heightMm"),(E,N)=>(e.openBlock(),e.createElementBlock("label",{key:E},[e.createTextVNode(e.toDisplayString(s.value[N]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:E==="widthMm"||E==="heightMm"?2:0,value:e.unref(le)(t.component)[E],disabled:t.geometryDisabled,onChange:x=>d(E,x)},null,40,Mr)]))),128))]),t.component.kind!=="list"&&!t.repeat?(e.openBlock(),e.createElementBlock("label",xr,[e.createTextVNode(e.toDisplayString(n.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",disabled:t.geometryDisabled,onChange:M[11]||(M[11]=E=>l("patch",{pageAnchor:v(E)||void 0}))},[e.createElementVNode("option",Dr,e.toDisplayString(n.value.repeatNone),1),e.createElementVNode("option",$r,e.toDisplayString(n.value.repeatHeader),1),e.createElementVNode("option",Tr,e.toDisplayString(n.value.repeatFooter),1)],40,Br)])):e.createCommentVNode("",!0)],8,Vr)],8,sr))}}),Ir=J._export_sfc(_r,[["__scopeId","data-v-311305ea"]]),Pr=["disabled"],Rr={class:"mr-page-section-heading"},Lr=["aria-label"],Ar=["aria-pressed","onClick"],Fr={class:"mr-page-actions"},Hr=["disabled"],Or={key:0,class:"mr-page-confirm",role:"alert"},Gr=["value","placeholder"],zr=["value"],jr=["value"],Ur={value:"custom"},qr={class:"mr-page-grid"},Wr=["value"],Kr=["value"],Jr=["value"],Yr={value:"page"},Qr=["disabled"],Xr={class:"mr-page-grid"},Zr=["value","onChange"],ei={key:1,class:"mr-page-overflow",role:"status"},ti=e.defineComponent({__name:"TemplatePageInspector",props:{document:{},pageIndex:{},disabled:{type:Boolean},messages:{}},emits:["select","command","locate"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.computed(()=>a.document.template.pages[a.pageIndex]),i=e.computed(()=>dt.find(E=>E.widthMm===r.value.widthMm&&E.heightMm===r.value.heightMm)?.id??"custom"),s=e.computed(()=>Kt(r.value)),d=e.ref(!1);e.watch(()=>[a.pageIndex,a.document],()=>{d.value=!1});const g=["marginTopMm","marginRightMm","marginBottomMm","marginLeftMm"],h=e.computed(()=>[n.value.marginTop,n.value.marginRight,n.value.marginBottom,n.value.marginLeft]);function v(E){return E.target.value}function y(E){a.disabled||l("command",{type:"patch",patch:E})}function C(E){const N=dt.find(x=>x.id===v(E));N&&y({widthMm:N.widthMm,heightMm:N.heightMm,layout:"page"})}function S(E,N){const x=v(N);x.trim()&&Number.isFinite(Number(x))&&y({[E]:Number(x)})}function M(){if(!(a.disabled||a.document.template.pages.length<=1)){if(r.value.components.length&&!d.value){d.value=!0;return}l("command",{type:"remove"}),d.value=!1}}return(E,N)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-page-properties",disabled:t.disabled},[e.createElementVNode("div",Rr,[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,(x,k)=>(e.openBlock(),e.createElementBlock("button",{key:k,type:"button","aria-pressed":t.pageIndex===k,onClick:$=>l("select",k)},[e.createElementVNode("span",null,e.toDisplayString(k+1),1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(Ue)(x,k,n.value.page)),1),e.createElementVNode("small",null,e.toDisplayString(x.widthMm)+" × "+e.toDisplayString(x.heightMm),1)],8,Ar))),128))],8,Lr),e.createElementVNode("div",Fr,[e.createElementVNode("button",{type:"button",onClick:N[0]||(N[0]=x=>l("command",{type:"add"}))},"+ "+e.toDisplayString(n.value.addPage),1),e.createElementVNode("button",{type:"button",onClick:N[1]||(N[1]=x=>l("command",{type:"duplicate"}))},e.toDisplayString(n.value.duplicatePage),1),e.createElementVNode("button",{type:"button",disabled:t.disabled||t.document.template.pages.length<=1,onClick:M},e.toDisplayString(n.value.removePage),9,Hr)]),d.value?(e.openBlock(),e.createElementBlock("div",Or,[e.createElementVNode("span",null,e.toDisplayString(n.value.removePageConfirm),1),e.createElementVNode("button",{type:"button",onClick:N[2]||(N[2]=x=>d.value=!1)},e.toDisplayString(n.value.keepEditing),1),e.createElementVNode("button",{type:"button",onClick:M},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:N[3]||(N[3]=x=>y({meta:{...r.value.meta,title:v(x)}}))},null,40,Gr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperPreset),1),e.createElementVNode("select",{value:i.value,onChange:C},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(dt),x=>(e.openBlock(),e.createElementBlock("option",{key:x.id,value:x.id},e.toDisplayString(x.id.startsWith("label")?n.value.labelPaper:x.id.toUpperCase())+" · "+e.toDisplayString(x.widthMm)+" × "+e.toDisplayString(x.heightMm)+" mm",9,jr))),128)),e.createElementVNode("option",Ur,e.toDisplayString(n.value.customPaper),1)],40,zr)]),e.createElementVNode("div",qr,[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:N[4]||(N[4]=x=>S("widthMm",x))},null,40,Wr)]),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:N[5]||(N[5]=x=>S("heightMm",x))},null,40,Kr)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.pageLayout),1),e.createElementVNode("select",{value:r.value.layout??"page",onChange:N[6]||(N[6]=x=>y({layout:v(x)}))},[e.createElementVNode("option",Yr,e.toDisplayString(n.value.fixedPaper),1),e.createElementVNode("option",{value:"wide",disabled:!!t.document.template.repeat},e.toDisplayString(n.value.completeWide),9,Qr)],40,Jr)]),e.createElementVNode("details",null,[e.createElementVNode("summary",null,e.toDisplayString(n.value.pageMargins),1),e.createElementVNode("div",Xr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(g,(x,k)=>e.createElementVNode("label",{key:x},[e.createTextVNode(e.toDisplayString(h.value[k]),1),e.createElementVNode("input",{type:"number",min:"0",step:"0.5",value:r.value[x]??0,onChange:$=>S(x,$)},null,40,Zr)])),64))])]),s.value.length?(e.openBlock(),e.createElementBlock("div",ei,[e.createElementVNode("strong",null,e.toDisplayString(n.value.pageOverflow.replace("{count}",String(s.value.length))),1),e.createElementVNode("p",null,e.toDisplayString(n.value.pageOverflowHint),1),e.createElementVNode("button",{type:"button",onClick:N[7]||(N[7]=x=>l("locate",s.value[0]))},e.toDisplayString(n.value.locateOverflow),1)])):e.createCommentVNode("",!0)],8,Pr))}}),ni=J._export_sfc(ti,[["__scopeId","data-v-da0b7ab6"]]),ai=["disabled"],oi={class:"mr-repeat-toggle"},li=["checked","disabled"],ri=["value","list"],ii=["id"],si=["value"],ci=["value"],di=["value"],ui={class:"mr-repeat-grid"},mi=["value"],pi={value:"fixed"},fi={value:"field"},vi={key:0},gi=["value"],hi={key:1},yi=["value"],bi={class:"mr-repeat-note"},ki=e.defineComponent({__name:"TemplateRepeatInspector",props:{document:{},datasets:{},schemas:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.computed(()=>a.document.template.repeat),i=e.computed(()=>a.schemas?.[r.value?.dataset??""]?.fields??[]),s=e.computed(()=>[...new Set([...a.datasets??[],...Object.keys(a.schemas??{}),...r.value?[r.value.dataset]:[]])]),d=e.computed(()=>a.document.template.pages.some(N=>N.components.some(x=>x.kind!=="list"&&x.binding))),g=e.computed(()=>a.document.template.pages.some(N=>N.layout==="wide"||!!N.flow||N.components.some(x=>x.kind==="list")||Kt(N).length>0)),h=e.computed(()=>typeof r.value?.copies=="object"?"field":"fixed"),v=`mr-repeat-fields-${e.getCurrentInstance()?.uid??0}`;function y(N){return N.target.value}function C(N){!a.disabled&&r.value&&l("change",{...r.value,...N})}function S(N){a.disabled||(N.target.checked?g.value||l("change",{dataset:s.value[0]??"detail",copies:1}):d.value||l("change",void 0))}function M(N){if(!r.value||a.disabled)return;const x={...r.value},k=y(N).trim();k?x.rowKey=k:delete x.rowKey,l("change",x)}function E(N){C({copies:y(N)==="field"?{field:i.value.find(x=>x.type==="number")?.field??"copies"}:1})}return(N,x)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-repeat-properties",disabled:t.disabled},[e.createElementVNode("label",oi,[e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.repeatRecords),1),e.createElementVNode("small",null,e.toDisplayString(g.value?n.value.repeatNeedsFixed:n.value.repeatRecordsHint),1)]),e.createElementVNode("input",{type:"checkbox",checked:!!r.value,disabled:t.disabled||!!r.value&&d.value||!r.value&&g.value,onChange:S},null,40,li)]),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:`${v}-datasets`,onChange:x[0]||(x[0]=k=>y(k).trim()&&C({dataset:y(k).trim()}))},null,40,ri)]),e.createElementVNode("datalist",{id:`${v}-datasets`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,k=>(e.openBlock(),e.createElementBlock("option",{key:k,value:k},null,8,si))),128))],8,ii),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.recordRowKey),1),e.createElementVNode("input",{value:r.value.rowKey??"",list:v,onChange:M},null,40,ci)]),e.createElementVNode("datalist",{id:v},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,k=>(e.openBlock(),e.createElementBlock("option",{key:k.field,value:k.field},e.toDisplayString(k.label),9,di))),128))]),e.createElementVNode("div",ui,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.labelCopies),1),e.createElementVNode("select",{value:h.value,onChange:E},[e.createElementVNode("option",pi,e.toDisplayString(n.value.fixedCopies),1),e.createElementVNode("option",fi,e.toDisplayString(n.value.fieldCopies),1)],40,mi)]),h.value==="fixed"?(e.openBlock(),e.createElementBlock("label",vi,[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:x[1]||(x[1]=k=>y(k).trim()&&C({copies:Number(y(k))}))},null,40,gi)])):(e.openBlock(),e.createElementBlock("label",hi,[e.createTextVNode(e.toDisplayString(n.value.copiesField),1),e.createElementVNode("input",{value:typeof r.value.copies=="object"?r.value.copies.field:"",list:v,onChange:x[2]||(x[2]=k=>y(k).trim()&&C({copies:{field:y(k).trim()}}))},null,40,yi)]))]),e.createElementVNode("p",bi,e.toDisplayString(d.value?n.value.repeatBoundHint:n.value.repeatOrderHint),1)],64)):e.createCommentVNode("",!0)],8,ai))}}),Ei=J._export_sfc(ki,[["__scopeId","data-v-de1ee031"]]),Yt={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:"定位"},Si=["aria-label"],wi=["onClick"],Ni=["disabled"],Vi=["disabled"],Ci=e.defineComponent({__name:"TemplateFieldImpactPanel",props:{change:{},messages:{},disabled:{type:Boolean}},emits:["confirm","cancel","locate"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...Yt,...a.messages}));return(r,i)=>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),s=>(e.openBlock(),e.createElementBlock("li",{key:s.path},[e.createElementVNode("button",{type:"button",onClick:d=>l("locate",s)},e.toDisplayString(n.value.locate)+" · "+e.toDisplayString(s.path),9,wi)]))),128))]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:i[0]||(i[0]=s=>l("cancel"))},e.toDisplayString(n.value.cancel),9,Ni),e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:i[1]||(i[1]=s=>l("confirm"))},e.toDisplayString(n.value.continue),9,Vi)])],8,Si)):e.createCommentVNode("",!0)}}),Mi=J._export_sfc(Ci,[["__scopeId","data-v-0813913f"]]),Qt={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 映射配置已恢复,请重新选择原文件后核对。"},xi={key:0,class:"mr-recovery-banner",role:"status"},Bi={key:0},Di={class:"mr-recovery-actions"},$i=["disabled"],Ti={key:1,class:"mr-recovery-banner is-error",role:"alert"},_i={class:"mr-recovery-actions"},Ii={key:2,class:"mr-recovery-status",role:"status"},Pi={key:3,class:"mr-recovery-conflict",open:""},Ri={class:"mr-recovery-columns"},Li={key:0},Ai={key:1},Fi={key:0,role:"alert"},Hi={key:1,role:"status"},Oi={class:"mr-recovery-actions"},Gi=["disabled"],zi=["disabled"],ji=["disabled"],Ui=["disabled"],qi={key:2,class:"mr-recovery-confirm"},Wi=["disabled"],Ki=e.defineComponent({__name:"TemplateRecoveryPanel",props:{recovery:{},conflict:{},readonly:{type:Boolean},messages:{},canLoad:{type:Boolean},canCopy:{type:Boolean}},setup(t){const o=t,a=e.computed(()=>({...Qt,...o.messages}));return(l,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.recovery.available.value?(e.openBlock(),e.createElementBlock("div",xi,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(a.value.available),1),e.createElementVNode("small",null,e.toDisplayString(t.recovery.available.value.savedAt)+" · "+e.toDisplayString(a.value.revision)+" "+e.toDisplayString(t.recovery.available.value.baseline.revision||a.value.unknown),1),t.recovery.stale.value?(e.openBlock(),e.createElementBlock("p",Bi,e.toDisplayString(a.value.stale),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Di,[e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:n[0]||(n[0]=(...r)=>t.recovery.restore&&t.recovery.restore(...r))},e.toDisplayString(a.value.restore),9,$i),e.createElementVNode("button",{type:"button",onClick:n[1]||(n[1]=(...r)=>t.recovery.discard&&t.recovery.discard(...r))},e.toDisplayString(a.value.discard),1)])])):e.createCommentVNode("",!0),t.recovery.error.value?(e.openBlock(),e.createElementBlock("div",Ti,[e.createElementVNode("span",null,e.toDisplayString(a.value.storageError)+":"+e.toDisplayString(t.recovery.error.value),1),e.createElementVNode("div",_i,[e.createElementVNode("button",{type:"button",onClick:n[2]||(n[2]=(...r)=>t.recovery.discard&&t.recovery.discard(...r))},e.toDisplayString(a.value.discard),1)])])):t.recovery.status.value!=="idle"?(e.openBlock(),e.createElementBlock("small",Ii,e.toDisplayString(t.recovery.status.value==="saving"?a.value.saving:a.value.autosaved),1)):e.createCommentVNode("",!0),t.conflict.active.value?(e.openBlock(),e.createElementBlock("details",Pi,[e.createElementVNode("summary",null,e.toDisplayString(a.value.conflict),1),e.createElementVNode("p",null,e.toDisplayString(a.value.conflictHint),1),e.createElementVNode("div",Ri,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList([t.conflict.localChanges.value,t.conflict.remoteChanges.value],(r,i)=>(e.openBlock(),e.createElementBlock("section",{key:i},[e.createElementVNode("h4",null,[e.createTextVNode(e.toDisplayString(i?a.value.remote:a.value.local)+" ",1),e.createElementVNode("small",null,e.toDisplayString(r?.totalChanges??"—")+" "+e.toDisplayString(a.value.changes),1)]),r?.changes.length?(e.openBlock(),e.createElementBlock("table",Li,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,e.toDisplayString(a.value.path),1),e.createElementVNode("th",null,e.toDisplayString(a.value.before),1),e.createElementVNode("th",null,e.toDisplayString(a.value.after),1)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.changes,s=>(e.openBlock(),e.createElementBlock("tr",{key:`${s.kind}:${s.path}`},[e.createElementVNode("th",null,e.toDisplayString(s.path),1),e.createElementVNode("td",null,e.toDisplayString(s.before??"—"),1),e.createElementVNode("td",null,e.toDisplayString(s.after??"—"),1)]))),128))])])):(e.openBlock(),e.createElementBlock("p",Ai,e.toDisplayString(a.value.empty),1))]))),128))]),t.conflict.error.value?(e.openBlock(),e.createElementBlock("p",Fi,e.toDisplayString(t.conflict.error.value),1)):e.createCommentVNode("",!0),t.conflict.copied.value?(e.openBlock(),e.createElementBlock("p",Hi,e.toDisplayString(a.value.copied),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Oi,[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(a.value.loadLatest),9,Gi)):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(a.value.keepCopy),9,zi)):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(a.value.adopt),9,ji)):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(a.value.rebase),9,Ui)):e.createCommentVNode("",!0)]),t.conflict.confirmRebase.value?(e.openBlock(),e.createElementBlock("div",qi,[e.createElementVNode("p",null,e.toDisplayString(a.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(a.value.confirm),9,Wi)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],64))}}),Ji=J._export_sfc(Ki,[["__scopeId","data-v-f02f2a53"]]),Yi={class:"mr-header-editor"},Qi=["disabled"],Xi=["value"],Zi=["value"],es=["value"],ts=["disabled"],ns=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...me,...a.messages})),r=e.ref(0),i=e.ref(0),s=e.ref(Math.min(1,a.list.columns.length-1));return e.watch(()=>a.list.columns.length,d=>{i.value=Math.min(i.value,d-1),s.value=Math.min(s.value,d-1)}),(d,g)=>(e.openBlock(),e.createElementBlock("details",Yi,[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":g[0]||(g[0]=h=>r.value=h)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,h=>(e.openBlock(),e.createElementBlock("option",{key:h,value:h-1},e.toDisplayString(h),9,Xi))),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":g[1]||(g[1]=h=>i.value=h)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(h,v)=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},e.toDisplayString(v+1)+" · "+e.toDisplayString(h.header),9,Zi))),128))],512),[[e.vModelSelect,i.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[2]||(g[2]=h=>s.value=h)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(h,v)=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},e.toDisplayString(v+1)+" · "+e.toDisplayString(h.header),9,es))),128))],512),[[e.vModelSelect,s.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:g[3]||(g[3]=h=>l("command",{action:"add",row:r.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:i.value>=s.value,onClick:g[4]||(g[4]=h=>l("command",{action:"merge",row:r.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.mergeHeader),9,ts),e.createElementVNode("button",{type:"button",onClick:g[5]||(g[5]=h=>l("command",{action:"split",row:r.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.splitHeader),1)])],8,Qi)]))}}),as=J._export_sfc(ns,[["__scopeId","data-v-acd607ef"]]);function os(t,o,a,l){const{lists:n,selected:r,jsonPending:i,saving:s,blocked:d,validation:g,pendingLocalChanges:h,messages:v}=t,{section:y}=a,{mode:C,tool:S,canvasPage:M,setMode:E,chooseCanvas:N,locateReview:x}=o,{id:k}=l,$=e.computed(()=>[...n.value.length?["fields"]:[],"component","template","tools",...l.capabilities?.()?.advanced===!1?[]:["advanced"]]),m=e.ref(new Set(["outline","reuse"])),f=e.computed(()=>y.value==="tools"&&m.value.has(S.value));function c(_){f.value?C.value=_:E(_)}e.watch([y,S],()=>{f.value&&(C.value="design")});function p(){const _=new Set(m.value);_.has(S.value)?_.delete(S.value):_.add(S.value),m.value=_,_.has(S.value)&&(C.value="design")}function w(_){const O=Number(_.target.value);Number.isInteger(O)&&O>=0&&D({pageIndex:M.value,componentIndex:O})}function B(){y.value="tools",S.value="excel"}const R=e.computed(()=>{const _=["excel","rules","params"].filter(O=>t.pendingTools.value.includes(O)).map(O=>({target:O,label:v.value[`${O}Tool`]}));return i.value&&_.push({target:"json",label:v.value.json}),_}),H=e.computed(()=>s.value?v.value.saving:l.readonly()?v.value.saveReadonly:d.value?v.value.saveConfirmation:R.value.length?R.value.map(_=>`${_.label} · ${v.value.unapplied}`).join(";"):g.value.ok?h.value?"":v.value.saveUnchanged:v.value.saveInvalid);async function Q(_){_==="json"?y.value="advanced":(y.value="tools",S.value=_),await e.nextTick();const O=_==="json"?`#${k}-panel-advanced textarea`:`#${k}-tool-${_}`;document.querySelector(O)?.focus({preventScroll:!0})}const u=e.computed(()=>s.value?v.value.saving:l.readonly()?v.value.readonly:h.value?v.value.dirty:v.value.ready);let P=0;async function D(_){const O=++P,Y=y.value==="tools",U=n.value.findIndex(j=>j.pageIndex===_.pageIndex&&j.componentIndex===_.componentIndex);U>=0&&U!==r.value&&t.isToolPending("rules")&&!await t.guardChanges()||O===P&&(N(_),Y&&(y.value="tools"))}async function T(_){const O=++P,Y=y.value==="tools"&&S.value==="outline",U=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(_.path??""),j=_.pageIndex??(U?Number(U[1]):void 0),oe=_.componentIndex??(U?Number(U[2]):void 0),ne=n.value.findIndex(ie=>ie.pageIndex===j&&ie.componentIndex===oe);ne>=0&&ne!==r.value&&t.isToolPending("rules")&&!await t.guardChanges()||O===P&&(x(_),Y&&(y.value="tools"))}async function I(_){const O=++P,Y=_.target,U=Number(Y.value);if(t.isToolPending("rules")&&!await t.guardChanges()){Y.value=String(r.value);return}O===P&&(r.value=U)}async function L(_){if(_.isComposing||_.keyCode===229)return;const Y={ArrowRight:1,ArrowLeft:-1,Home:-$.value.length,End:$.value.length}[_.key];if(Y===void 0)return;_.preventDefault();const U=$.value.indexOf(y.value),j=_.key==="Home"?0:_.key==="End"?$.value.length-1:(U+Y+$.value.length)%$.value.length;y.value=$.value[j];const oe=_.currentTarget.parentElement;await e.nextTick(),oe?.querySelector(`#${k}-tab-${y.value}`)?.focus()}return{sections:$,toolPreview:f,setMode:c,toggleToolPreview:p,chooseToolComponent:w,openBinding:B,pendingConfigurations:R,saveReason:H,openPending:Q,headingStatus:u,chooseCanvas:D,locateReview:T,chooseRuleList:I,navigateSection:L}}const ue=t=>`${t.pageIndex}:${t.componentIndex}`;function ls(t,o,a){const l=e.ref([]),n=e.ref(new Set);e.watch(()=>t.value.id,()=>{l.value=[],n.value=new Set});const r=y=>!!y&&n.value.has(ue(y));function i(y){const C={pageIndex:y.pageIndex,componentIndex:y.componentIndex};if(y.preserve&&l.value.some(S=>ue(S)===ue(y))){o.value=C;return}if(y.additive&&l.value.every(S=>S.pageIndex===y.pageIndex)){const S=l.value.some(M=>ue(M)===ue(y));l.value=S?l.value.filter(M=>ue(M)!==ue(y)):[...l.value,C],o.value=S?l.value.at(-1):C}else l.value=[C],o.value=C}const s=e.computed(()=>l.value.filter(y=>!r(y)));function d(){const y=new Set(n.value),C=l.value.every(r);for(const S of l.value)C?y.delete(ue(S)):y.add(ue(S));n.value=y}function g(y){s.value.length<2||a(C=>{const S=s.value.map($=>fe(C,$)).filter(Boolean),M=S.map(le),E=Math.min(...M.map($=>$.leftMm)),N=Math.min(...M.map($=>$.topMm)),x=Math.max(...M.map($=>$.leftMm+$.widthMm)),k=Math.max(...M.map($=>$.topMm+$.heightMm));S.forEach(($,m)=>{const f=M[m],c={left:E,center:(E+x-f.widthMm)/2,right:x-f.widthMm},p={top:N,middle:(N+k-f.heightMm)/2,bottom:k-f.heightMm};y in c?f.leftMm=c[y]:f.topMm=p[y],ke($,f)})})}function h(y){s.value.length<3||a(C=>{const S=y==="horizontal"?"leftMm":"topMm",M=y==="horizontal"?"widthMm":"heightMm",E=s.value.map(m=>({component:fe(C,m),box:le(fe(C,m))})).sort((m,f)=>m.box[S]-f.box[S]),N=E[0].box[S],k=(Math.max(...E.map(m=>m.box[S]+m.box[M]))-N-E.reduce((m,f)=>m+f.box[M],0))/(E.length-1);let $=N;for(const m of E)m.box[S]=$,ke(m.component,m.box),$+=m.box[M]+k})}function v(y,C,S){function M(E){if(E.pageIndex!==y)return E;const N=E.componentIndex;return S===void 0?N===C?void 0:{...E,componentIndex:N>C?N-1:N}:{...E,componentIndex:N===C?S:N===S?C:N}}n.value=new Set([...n.value].flatMap(E=>{const[N,x]=E.split(":").map(Number),k=M({pageIndex:N,componentIndex:x});return k?[ue(k)]:[]})),l.value=l.value.flatMap(E=>{const N=M(E);return N?[N]:[]})}return{clearLocks:()=>{n.value=new Set},selections:l,movable:s,locked:r,allLocked:e.computed(()=>!!l.value.length&&l.value.every(r)),toggleLock:d,align:g,distribute:h,select:i,remap:v}}function vt(t,o,a,l){let n=-1/0,r=1/0,i=-1/0,s=1/0;for(const d of o){const g=fe(t,d);if(!g)continue;const h=t.template.pages[d.pageIndex],v=le(g);n=Math.max(n,-v.leftMm),r=Math.min(r,h.widthMm-v.leftMm-v.widthMm),i=Math.max(i,-v.topMm),s=Math.min(s,h.heightMm-v.topMm-(g.kind==="list"?2:v.heightMm))}return{x:Math.max(n,Math.min(r,a)),y:Math.max(i,Math.min(s,l))}}function rs(t,o,a,l){const n=vt(t,o,a,l);for(const r of o){const i=fe(t,r);if(!i)continue;const s=le(i);ke(i,{...s,leftMm:s.leftMm+n.x,topMm:s.topMm+n.y})}}function is(t){const o=JSON.parse(JSON.stringify(t));return o.kind==="list"?delete o.id:(delete o.nid,delete o.rkey),o}function ss(t,o,a={}){const l=e.ref("preview"),n=e.computed({get:()=>a.mode?.()??l.value,set:m=>{a.mode?.()===void 0&&(l.value=m),a.onModeChange?.(m)}}),r=e.ref(),i=e.ref(0),s=e.computed(()=>!!t.value.template.pages[r.value?.pageIndex??i.value]?.flow),d=ls(t,r,m=>s.value?!1:o(m)),g=e.computed(()=>fe(t.value,r.value));e.watch(i,m=>{r.value?.pageIndex!==m&&(r.value=void 0,d.selections.value=[])}),e.watch(()=>t.value.id,()=>{r.value=void 0,d.selections.value=[],i.value=0}),e.watch(t,()=>{g.value||(r.value=void 0),d.selections.value=d.selections.value.filter(m=>!!fe(t.value,m)),t.value.template.pages[i.value]||(i.value=0)});function h(m){d.select(m),i.value=m.pageIndex}function v(m){const f=r.value;return!f||d.locked(f)?!1:o(c=>{const p=fe(c,f);p&&m(p,c)})}function y(m){if(s.value)return;const f=g.value;if(!d.locked(r.value)){if(f&&d.movable.value.length>1&&m.widthMm===f.widthMm&&m.heightMm===le(f).heightMm){C(m.leftMm-f.leftMm,m.topMm-f.topMm);return}v((c,p)=>{const w=p.template.pages[r.value.pageIndex];ke(c,et(m,w,c.kind==="list"))})}}function C(m,f){if(s.value||!d.movable.value.length)return;const c=d.movable.value.slice(),p=vt(t.value,c,m,f);!p.x&&!p.y||o(w=>rs(w,c,p.x,p.y))}const S=e.ref(!1);function M(m){E(bt(m))}function E(m){if(t.value.template.pages[i.value]?.flow||m.kind==="list"&&t.value.template.repeat)return!1;let f=i.value,c=-1,p=!1;const w=o(B=>{const R=JSON.parse(JSON.stringify(m)),H=Ut(B,f,R);f=H.pageIndex,p=H.newPage,c=B.template.pages[f].components.length-1});return w&&(S.value=p,h({pageIndex:f,componentIndex:c})),w}function N(m){if(t.value.template.pages[i.value]?.flow||m.kind==="list"&&t.value.template.repeat)return!1;let f=-1;const c=i.value,p=o(w=>{const B=w.template.pages[c].components;B.push(m),f=B.length-1;const R=z.parseReportTemplate(w).template.pages[c].components[f];ke(R,et(le(R),w.template.pages[c],R.kind==="list")),R.kind==="qrcode"&&(R.widthMm=R.heightMm=Math.min(R.widthMm,R.heightMm)),B[f]=R});return p&&h({pageIndex:c,componentIndex:f}),p}function x(){if(s.value)return;const m=d.movable.value.slice().sort((f,c)=>c.componentIndex-f.componentIndex);if(m.length&&o(f=>{for(const c of m)f.template.pages[c.pageIndex].components.splice(c.componentIndex,1)})){for(const f of m)d.remap(f.pageIndex,f.componentIndex);r.value=d.selections.value.at(-1)}}function k(){if(s.value)return;const m=d.movable.value.slice().sort((p,w)=>p.componentIndex-w.componentIndex);if(!m.length)return;const f=vt(t.value,m,4,4),c=[];o(p=>{for(const w of m){const B=p.template.pages[w.pageIndex],R=is(fe(p,w)),H=le(R);ke(R,{...H,leftMm:H.leftMm+f.x,topMm:H.topMm+f.y}),B.components.push(R),c.push({pageIndex:w.pageIndex,componentIndex:B.components.length-1})}})&&(d.selections.value=c,r.value=c.at(-1))}function $(m){if(s.value)return;const f=r.value;if(!f||d.locked(f))return;const c=f.componentIndex+m;t.value.template.pages[f.pageIndex]?.components[c]&&o(p=>{const w=p.template.pages[f.pageIndex].components;w.splice(c,0,w.splice(f.componentIndex,1)[0])})&&(d.remap(f.pageIndex,f.componentIndex,c),h({pageIndex:f.pageIndex,componentIndex:c}))}return{...d,mode:n,selection:r,pageIndex:i,active:g,geometryDisabled:s,select:h,mutate:v,geometry:y,move:C,insert:M,insertPlaced:E,insertedOnNewPage:S,insertComponent:N,remove:x,duplicate:k,reorder:$}}function cs(t,o,a,l={}){const{draft:n,lists:r,selected:i,activeList:s,blocked:d,jsonPending:g,error:h}=t,{section:v,activeIndex:y}=o,C=ss(n,t.transaction,l),{mode:S,selection:M,pageIndex:E,active:N}=C;t.connectHistoryView({read:()=>({pageIndex:E.value,componentIndex:M.value?.pageIndex===E.value?M.value.componentIndex:void 0,...C.selections.value.length>1?{componentIndices:C.selections.value.map(u=>u.componentIndex)}:{},listIndex:i.value,fieldIndex:y.value,section:v.value}),restore:u=>{E.value=Math.max(0,Math.min(n.value.template.pages.length-1,u.pageIndex)),C.selection.value=void 0,C.selections.value=[],C.clearLocks();for(const P of u.componentIndices??[])n.value.template.pages[E.value]?.components[P]&&C.select({pageIndex:E.value,componentIndex:P,additive:!0});u.componentIndex!==void 0&&n.value.template.pages[E.value]?.components[u.componentIndex]&&C.select({pageIndex:E.value,componentIndex:u.componentIndex,preserve:!0}),u.listIndex!==void 0&&r.value[u.listIndex]&&(i.value=u.listIndex),u.fieldIndex!==void 0&&o.activate(u.fieldIndex),u.section&&(v.value=u.section)}}),e.watch(t.historyViewRevision,()=>t.captureHistoryView(),{flush:"post"});const x=e.ref("excel"),k=e.ref(new Set);e.watch([v,x],()=>{v.value==="tools"&&(k.value=new Set([...k.value,x.value]))}),e.watch(M,u=>{if(!u)return;const P=r.value.findIndex(D=>D.pageIndex===u.pageIndex&&D.componentIndex===u.componentIndex);P>=0&&(i.value=P)}),e.watch([y,i,S,v],()=>{if(S.value!=="design"||v.value!=="fields")return;const u=r.value[i.value];u&&(M.value?.pageIndex!==u.pageIndex||M.value.componentIndex!==u.componentIndex)&&C.select({pageIndex:u.pageIndex,componentIndex:u.componentIndex})});const $=e.computed(()=>t.editingReadonly.value||d.value||g.value),m=e.computed(()=>a()?.[s.value?.dataset??""]);function f(u){S.value=u,v.value==="tools"&&(v.value=u==="design"||!r.value.length?"component":"fields")}function c(u){if(!n.value.template.pages[u.pageIndex]?.components[u.componentIndex])return;if(C.select(u),n.value.template.pages[u.pageIndex]?.components[u.componentIndex]?.kind==="list"){const D=r.value.findIndex(T=>T.pageIndex===u.pageIndex&&T.componentIndex===u.componentIndex);D>=0&&(i.value=D),v.value="fields"}else v.value="component"}function p(u){const P=u.target;P.value&&(C.insert(P.value),S.value="design",v.value="component",P.value="")}function w(u){n.value.template.pages[E.value]?.flow&&["leftMm","topMm","widthMm","heightMm","pageAnchor","grid"].some(P=>P in u)||C.mutate((P,D)=>{if(P.kind!=="list"&&u.pageAnchor!==P.pageAnchor){const I=D.template.pages[M.value.pageIndex];u.pageAnchor==="header"&&(P.topMm=I.marginTopMm??0),u.pageAnchor==="footer"&&(P.topMm=Math.max(0,I.heightMm-(I.marginBottomMm??0)-P.heightMm))}const T=P;for(const[I,L]of Object.entries(u))L===void 0?delete T[I]:T[I]=L})}function B(u){const P=r.value[i.value];P&&t.transaction(D=>{D.template.pages[P.pageIndex].components[P.componentIndex]=u})}function R(u){const P=s.value;if(!P||n.value.template.pages[r.value[i.value]?.pageIndex??-1]?.flow)return;const D=JSON.parse(JSON.stringify(P));try{fa(D,y.value,y.value+u)&&(B(D),o.activate(y.value+u))}catch(T){h.value=T instanceof Error?T.message:String(T)}}function H(u){const P=r.value[i.value];!P||n.value.template.pages[P.pageIndex]?.flow||t.transaction(D=>{const T=D.template.pages[P.pageIndex].components[P.componentIndex];T?.kind==="list"&&(u.action==="add"?va(T):u.action==="merge"?ga(T,u.row,u.first,u.last):ha(T,u.row,u.first))})}function Q(u){const P=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(u.path??""),D=u.pageIndex??(P?Number(P[1]):void 0),T=u.componentIndex??(P?Number(P[2]):void 0);if(D!==void 0){if(T===void 0){E.value=D,v.value="template",S.value="design";return}if(S.value="design",c({pageIndex:D,componentIndex:T}),u.field){const I=s.value?.columns.findIndex(L=>L.field===u.field);I!==void 0&&I>=0&&o.activate(I)}}}return{mode:S,setMode:f,canvasSelection:M,canvasPage:E,canvasActive:N,tool:x,visitedTools:k,editDisabled:$,dataSchema:m,chooseCanvas:c,insertComponent:p,patchCanvas:w,changeList:B,moveColumn:R,headerCommand:H,locateReview:Q,canvas:C}}const Xt={title:"数据可视化",enabled:"启用列可视化",kind:"呈现方式",colorScale:"色阶",dataBar:"数据条",measure:"度量字段",ownField:"当前列",numeric:"度量类型",number:"真实数字",decimal:"小数文本(显式转换)",autoDomain:"自动统计范围",minimum:"最小值",maximum:"最大值",lowColor:"低值颜色",highColor:"高值颜色",color:"正值颜色",negativeColor:"负值颜色",invalid:"请检查范围与颜色;最小值不能大于最大值。",hint:"保留原始数据与编辑能力。空值不绘制,零值按真实零处理;统计范围来自当前明细。",snapshot:"Excel 数据条为静态视觉快照,修改 Excel 后不会重算。"},ds={class:"mr-column-visual-disclosure"},us={key:0,class:"mr-column-visual-badge"},ms={class:"mr-column-visual"},ps={class:"mr-column-visual__toggle"},fs=["disabled"],vs={key:0,class:"mr-column-visual__grid"},gs=["disabled"],hs={value:"colorScale"},ys={value:"dataBar"},bs=["disabled"],ks={value:""},Es=["value"],Ss=["disabled"],ws={value:"number"},Ns={value:"decimal"},Vs=["placeholder","disabled","aria-invalid"],Cs=["placeholder","disabled","aria-invalid"],Ms=["disabled"],xs=["disabled"],Bs=["disabled"],Ds=["disabled"],$s={key:1,role:"status",class:"is-error"},Ts={key:2},_s={key:0},Is=e.defineComponent({__name:"ColumnVisualEditor",props:{modelValue:{},fields:{},readonly:{type:Boolean},messages:{}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,l=o,n=e.computed(()=>({...Xt,...a.messages})),r=e.ref(!!a.modelValue),i=e.ref("colorScale"),s=e.ref(""),d=e.ref("number"),g=e.ref(""),h=e.ref(""),v=e.ref("#bad8fa"),y=e.ref("#f3bcc3"),C=e.ref("#f0f7ff"),S=e.ref("#8bbcf1");let M="";function E(){const k=a.modelValue;r.value=!!k,i.value=k?.kind??"colorScale",s.value=k?.field??"",d.value=k?.numeric??"number",g.value=k?.min===void 0?"":String(k.min),h.value=k?.max===void 0?"":String(k.max),k?.kind==="colorScale"&&(C.value=k.lowColor??"#f0f7ff",S.value=k.highColor??"#8bbcf1"),k?.kind==="dataBar"&&(v.value=k.color??"#bad8fa",y.value=k.negativeColor??"#f3bcc3")}E();const N=e.computed(()=>({...s.value?{field:s.value}:{},numeric:d.value,...g.value===""?{}:{min:Number(g.value)},...h.value===""?{}:{max:Number(h.value)},...i.value==="colorScale"?{kind:"colorScale",lowColor:C.value,highColor:S.value}:{kind:"dataBar",color:v.value,negativeColor:y.value}})),x=e.computed(()=>r.value&&!be.validColumnVisual(N.value));return e.watch(()=>JSON.stringify(a.modelValue),k=>{k!==M&&E()}),e.watch([r,N],()=>{if(a.readonly)return;const k=r.value?N.value:void 0;M=JSON.stringify(k),l("update:modelValue",k)},{flush:"post"}),(k,$)=>(e.openBlock(),e.createElementBlock("details",ds,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.title),1),r.value?(e.openBlock(),e.createElementBlock("span",us,e.toDisplayString(i.value==="colorScale"?n.value.colorScale:n.value.dataBar),1)):e.createCommentVNode("",!0)]),e.createElementVNode("fieldset",ms,[e.createElementVNode("legend",null,e.toDisplayString(n.value.title),1),e.createElementVNode("label",ps,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[0]||($[0]=m=>r.value=m),type:"checkbox",disabled:t.readonly},null,8,fs),[[e.vModelCheckbox,r.value]]),e.createTextVNode(e.toDisplayString(n.value.enabled),1)]),r.value?(e.openBlock(),e.createElementBlock("div",vs,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.kind),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[1]||($[1]=m=>i.value=m),disabled:t.readonly},[e.createElementVNode("option",hs,e.toDisplayString(n.value.colorScale),1),e.createElementVNode("option",ys,e.toDisplayString(n.value.dataBar),1)],8,gs),[[e.vModelSelect,i.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.measure),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[2]||($[2]=m=>s.value=m),disabled:t.readonly},[e.createElementVNode("option",ks,e.toDisplayString(n.value.ownField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields??[],m=>(e.openBlock(),e.createElementBlock("option",{key:m.field,value:m.field},e.toDisplayString(m.label??m.field),9,Es))),128))],8,bs),[[e.vModelSelect,s.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.numeric),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":$[3]||($[3]=m=>d.value=m),disabled:t.readonly},[e.createElementVNode("option",ws,e.toDisplayString(n.value.number),1),e.createElementVNode("option",Ns,e.toDisplayString(n.value.decimal),1)],8,Ss),[[e.vModelSelect,d.value]])]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["min","max"],m=>e.createElementVNode("label",{key:m},[e.createTextVNode(e.toDisplayString(m==="min"?n.value.minimum:n.value.maximum),1),m==="min"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":$[4]||($[4]=f=>g.value=f),type:"number",step:"any",placeholder:n.value.autoDomain,disabled:t.readonly,"aria-invalid":x.value||void 0},null,8,Vs)),[[e.vModelText,g.value]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":$[5]||($[5]=f=>h.value=f),type:"number",step:"any",placeholder:n.value.autoDomain,disabled:t.readonly,"aria-invalid":x.value||void 0},null,8,Cs)),[[e.vModelText,h.value]])])),64)),i.value==="colorScale"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.lowColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[6]||($[6]=m=>C.value=m),type:"color",disabled:t.readonly},null,8,Ms),[[e.vModelText,C.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.highColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[7]||($[7]=m=>S.value=m),type:"color",disabled:t.readonly},null,8,xs),[[e.vModelText,S.value]])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.color),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[8]||($[8]=m=>v.value=m),type:"color",disabled:t.readonly},null,8,Bs),[[e.vModelText,v.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.negativeColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[9]||($[9]=m=>y.value=m),type:"color",disabled:t.readonly},null,8,Ds),[[e.vModelText,y.value]])])],64))])):e.createCommentVNode("",!0),x.value?(e.openBlock(),e.createElementBlock("small",$s,e.toDisplayString(n.value.invalid),1)):r.value?(e.openBlock(),e.createElementBlock("p",Ts,[e.createTextVNode(e.toDisplayString(n.value.hint),1),i.value==="dataBar"?(e.openBlock(),e.createElementBlock("span",_s,e.toDisplayString(n.value.snapshot),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),Zt=J._export_sfc(Is,[["__scopeId","data-v-23b874d6"]]);function Ps(t,o,a){if(!t.length)return;const l=Math.max(0,t.indexOf(o)),r={ArrowDown:Math.min(l+1,t.length-1),ArrowUp:Math.max(l-1,0),Home:0,End:t.length-1}[a];return r===void 0?void 0:t[r]}function Rs(t,o,a){const l=e.ref(!1),n=e.ref(t.activeIndex.value),r=e.ref(null),i=e.ref(null),s=e.ref(null),d=e.ref(null),g=e.ref(0),h=100,v=e.computed(()=>a.value.slice(g.value,g.value+h));function y(){const c=Math.max(0,a.value.findIndex(p=>p.index===n.value));g.value=Math.floor(c/h)*h}async function C(c){const p=Math.max(0,Math.min(Math.max(0,a.value.length-1),g.value+c*h));n.value=a.value[p]?.index??-1,y(),await e.nextTick(),S(!0)}function S(c=!1){const p=d.value,w=p?.querySelector(`button[data-column-index="${n.value}"]`);if(!p||!w)return;c&&w.focus({preventScroll:!0});const B=p.getBoundingClientRect(),R=w.getBoundingClientRect(),H=B.top+p.clientTop,Q=H+p.clientHeight;R.top<H?p.scrollTop+=R.top-H:R.bottom>Q&&(p.scrollTop+=R.bottom-Q)}async function M(c=!1){l.value&&(l.value=!1,c&&(await e.nextTick(),r.value?.focus({preventScroll:!0})))}async function E(){if(l.value)return M(!0);const c=a.value.map(p=>p.index);n.value=c.includes(t.activeIndex.value)?t.activeIndex.value:c[0]??-1,l.value=!0,y(),await e.nextTick(),s.value?.focus({preventScroll:!0}),S()}function N(c){t.activate(c),M(!0)}function x(c){!l.value||c.isComposing||c.keyCode===229||(c.preventDefault(),c.stopPropagation(),M(!0))}async function k(c){if(c.isComposing||c.keyCode===229)return;const p=Ps(a.value.map(w=>w.index),n.value,c.key);p!==void 0&&(n.value=p,y(),c.preventDefault(),await e.nextTick(),S(!0))}async function $(c){if(c.isComposing||c.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(c.key))return;c.preventDefault(),c.stopPropagation();const p=a.value.map(w=>w.index);if(p.length){if(c.key==="Enter"){p.includes(n.value)&&N(n.value);return}c.key==="ArrowUp"&&(n.value=p.at(-1)),y(),await e.nextTick(),S(!0)}}function m(c){const p=c.target;!l.value||i.value?.contains(p)||r.value?.contains(p)||M()}function f(c){const p=c.relatedTarget;!p||i.value?.contains(p)||r.value?.contains(p)||M()}return e.watch(a,c=>{c.some(p=>p.index===n.value)||(n.value=c[0]?.index??-1),y()}),e.watch(o,()=>{M()}),e.onMounted(()=>document.addEventListener("pointerdown",m)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",m)),{open:l,cursor:n,trigger:r,panel:i,search:s,list:d,windowColumns:v,windowStart:g,windowSize:h,stepWindow:C,toggle:E,close:M,choose:N,escape:x,navigate:k,searchKeydown:$,leave:f}}const en=Symbol("mach-report:tool-drafts");function Ls(t,o){const a=e.ref({}),l=e.ref(0),n={epoch:l,read:i=>a.value[i],write(i,s){const d=a.value[i];if(d?.baseline===s?.baseline&&d?.value===s?.value)return;const g={...a.value};s?g[i]=s:delete g[i],a.value=g;const h=i.split(":")[0];t(h,Object.keys(g).some(v=>v.split(":")[0]===h)),o?.()}};e.provide(en,n);function r(i){a.value=JSON.parse(JSON.stringify(i));for(const s of["params","rules","excel"])t(s,Object.keys(i).some(d=>d.split(":")[0]===s));l.value++}return{records:a,restore:r,clear:()=>r({})}}function As(t){const o=e.inject(en,void 0);if(!o)return;let a=!1,l={key:t.key(),baseline:t.baseline(),value:t.snapshot()};const n=(i,s)=>{const d=o.read(t.key());if(!d&&(!s||i[1]===s[1]))return;const g=d??(l.key===i[0]?l:void 0);if(!(!g&&!t.reset)){a=!0;try{!d&&t.reset?t.reset():g&&t.restore(g.value,g.baseline,{pending:!!d})}finally{a=!1}}};e.watch(()=>[t.key(),o.epoch.value],n,{immediate:!0,flush:"post"});const r=e.watch([t.pending,t.snapshot],()=>{a||(t.pending()||(l={key:t.key(),baseline:t.baseline(),value:t.snapshot()}),o.write(t.key(),t.pending()?{baseline:t.baseline(),value:t.snapshot()}:void 0))},{flush:"post"});e.onBeforeUnmount(r)}const gt=new WeakMap;function Fs(t,o,a){let l=gt.get(t);l||(l=new Map,gt.set(t,l));const n=l.get(o);let r,i;const s=new Promise((C,S)=>{r=C,i=S}),d={run:a,resolve:r,reject:i};if(n)return n.latest?.resolve(),n.latest=d,s;let g;const h={done:new Promise(C=>{g=C}),finish:()=>g()};l.set(o,h);const v=()=>{const C=h.latest;h.latest=void 0,C?y(C):(l.delete(o),h.finish())},y=C=>{let S;try{S=C.run()}catch(M){C.reject(M),v();return}Promise.resolve(S).then(C.resolve,C.reject).then(v)};return y(d),s}async function Hs(t,o){await gt.get(t)?.get(o)?.done}function ae(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Ee(t,o){return o.every(a=>typeof t[a]=="string")}function ce(t){return Array.isArray(t)&&t.length<=1e4}function tn(t,o=0){return!ae(t)||o>16?!1:"op"in t?typeof t.op=="string"&&ce(t.args)&&t.args.every(a=>tn(a,o+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 _t(t){return ae(t)&&typeof t.field=="string"&&tn(t.expression)}function qe(t){return ce(t)&&t.every(o=>typeof o=="string")}function Os(t){return ae(t)&&qe(t.rowFields)&&qe(t.columnFields)&&ce(t.measures)&&t.measures.every(o=>ae(o)&&typeof o.op=="string")}function It(t){return ae(t)&&Ee(t,["sheet","dataset","rowKey"])&&qe(t.fields)&&ae(t.regions)}function Pt(t){return ae(t)&&typeof t.sheet=="string"&&ce(t.regions)&&t.regions.every(o=>ae(o)&&Ee(o,["id","range","dataset","mode","rowKey"])&&qe(o.fields))}function Rt(t,o){return ce(t)&&t.every(a=>Array.isArray(a)&&a.length===2&&typeof a[0]=="string"&&o(a[1]))}function Gs(t){return typeof t.initial=="string"&&Number.isSafeInteger(t.selected)&&ce(t.rows)&&t.rows.every(zs)}function zs(t){return ae(t)&&Ee(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||qe(t.dependsOn))&&ce(t.options)&&t.options.every(o=>ae(o)&&Ee(o,["label","value"]))}function js(t){return _t(t.formula)&&ce(t.groups)&&t.groups.every(o=>ae(o)&&typeof o.field=="string")&&ae(t.when)&&ae(t.style)&&Ee(t,["selectedComputed","column","conditionKey","effect","tab","formulaBaseline","groupBaseline","conditionBaseline"])&&Number.isSafeInteger(t.conditionIndex)&&Rt(t.computedDrafts,_t)&&Rt(t.conditionDrafts,o=>ae(o)&&ae(o.when)&&ae(o.style))}function Us(t){return typeof t.enabled=="boolean"&&typeof t.baseline=="string"&&ae(t.detail)&&Ee(t.detail,["dataset","parentKey","foreignKey"])&&ce(t.detail.columns)&&t.detail.columns.every(o=>ae(o)&&Ee(o,["field","header"]))&&Os(t.matrix)&&ae(t.tree)&&typeof t.tree.input=="string"}function qs(t){return It(t.recipe)&&Pt(t.regions)&&ae(t.identity)&&Ee(t.identity,["id","name"])&&ae(t.cached)&&ce(t.cached.table)&&t.cached.table.every(It)&&ce(t.cached.regions)&&t.cached.regions.every(Pt)&&(t.mode==="table"||t.mode==="regions")}function Ws(t,o,a){const l=JSON.parse(o);if(!ae(l))throw new Error("Invalid stored tool draft");const n=t==="params"?Gs(l):t==="excel"?qs(l):t.split(":").length>3?Us(l):js(l);if(t==="params"){const r=JSON.parse(a);if(!ce(r)||!r.every(i=>ae(i)&&typeof i.field=="string"))throw new Error("Invalid stored parameter baseline")}if(!n)throw new Error(`Invalid stored ${t.split(":")[0]} draft`)}function Ks(t){return{read:o=>t.getItem(o),write:(o,a)=>t.setItem(o,a),remove:o=>t.removeItem(o)}}function Js(t,o){if(!t.trim()||t.length>1024||o.length>1024)throw new Error("Draft scope and template identity must be bounded and non-empty");return`mach-report:draft:1:${JSON.stringify([t,o])}`}function Ys(t){const o=t.maxBytes??2097152,a=t.debounceMs??400;if(!Number.isSafeInteger(o)||o<1024||o>16*1024*1024)throw new RangeError("Draft maxBytes must be between 1024 and 16777216");if(!Number.isSafeInteger(a)||a<0||a>1e4)throw new RangeError("Draft debounceMs must be between 0 and 10000");return{maxBytes:o,debounceMs:a}}function Lt(t,o,a){if(t.length*2>a)throw new Error("Draft exceeds storage budget");const l=JSON.parse(t);if(l.version!==1||l.templateId!==o||typeof l.savedAt!="string"||!Number.isFinite(Date.parse(l.savedAt)))throw new Error("Invalid draft identity or version");for(const n of["json","appliedJson"])if(typeof l[n]!="string")throw new Error("Invalid draft JSON input");if(l.baseline=z.parseReportTemplate(l.baseline),l.document=z.parseReportTemplate(l.document),l.baseline.id!==o||l.document.id!==o||l.baseline.revision!==l.document.revision)throw new Error("Invalid draft baseline");if(!l.tools||typeof l.tools!="object"||Array.isArray(l.tools)||Object.keys(l.tools).length>100)throw new Error("Invalid tool drafts");for(const[n,r]of Object.entries(l.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");Ws(n,r.value,r.baseline)}return l}function Qs(t){const o=e.ref(!1),a=e.shallowRef(),l=e.ref(""),n=e.ref("idle"),r=e.computed(()=>!!a.value&&z.serializeReportTemplate(a.value.baseline)!==t.baseline());let i,s=0,d=!1,g=!1,h=new AbortController,v=new AbortController,y=Promise.resolve(),C;function S(){clearTimeout(i),i=void 0,s++,h.abort(),v.abort(),h=new AbortController,v=new AbortController}function M(f,c){!d&&c===s&&(l.value=f instanceof Error?f.message:String(f))}async function E(){S();const f=s;o.value=!0,g=!1,a.value=void 0,l.value="",n.value="idle",C=void 0;try{const c=t.storage();if(!c)return;const p=t.id();if(C={storage:c,key:Js(c.scope,p),...Ys(c)},await Hs(c.adapter,C.key),f!==s||d)return;const w=await c.adapter.read(C.key,{signal:v.signal});if(f!==s||d||w===null)return;a.value=Lt(w,p,C.maxBytes)}catch(c){f===s&&(g=!0),M(c,f)}finally{f===s&&!d&&(o.value=!1)}}function N(f){const c=C;if(!c)return;const p=s,w=h.signal;n.value="saving";const B=async()=>{w.aborted||(f===null?await c.storage.adapter.remove(c.key,{signal:w}):await c.storage.adapter.write(c.key,f,{signal:w}),!d&&p===s&&(n.value=f===null?"idle":"saved",l.value=""))};y=Fs(c.storage.adapter,c.key,B).catch(R=>M(R,p))}function x(){if(clearTimeout(i),i=void 0,!(!C||a.value))try{if(!t.pending()){g||N(null);return}const f=JSON.stringify(t.snapshot());Lt(f,t.id(),C.maxBytes),N(f)}catch(f){M(f,s)}}function k(){clearTimeout(i),!(!C||a.value)&&(i=setTimeout(x,C.debounceMs))}async function $(){a.value=void 0,g=!1,N(null),await y,k()}function m(){if(a.value)try{t.restore(a.value),a.value=void 0,k()}catch(f){M(f,s)}}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],k,{deep:!0}),e.onMounted(()=>{globalThis.addEventListener?.("pagehide",x)}),e.onBeforeUnmount(()=>{globalThis.removeEventListener?.("pagehide",x),x(),d=!0,v.abort(),clearTimeout(i)}),{available:a,stale:r,error:l,status:n,checking:o,restore:m,discard:$,flush:x}}function Xs(t){const o=e.ref(!1),a=e.shallowRef(),l=e.ref(!1),n=e.ref(""),r=e.ref(!1),i=e.ref(!1);let s=0,d;const g=e.computed(()=>z.diffReportTemplates(t.baseline(),t.local(),{maxChanges:100})),h=e.computed(()=>a.value?z.diffReportTemplates(t.baseline(),a.value,{maxChanges:100}):void 0);function v(){s++,d?.abort(),d=void 0,l.value=!1}function y(){v(),o.value=!1,a.value=void 0,n.value="",r.value=!1,i.value=!1}async function C(){const x=t.configuration().loadLatest;if(!x||l.value)return;v();const k=s,$=t.local().id;d=new AbortController,l.value=!0,n.value="";try{const m=z.parseReportTemplate(await x({id:$,signal:d.signal}));if(k!==s)return;if(m.id!==$)throw new Error("Latest template identity does not match");a.value=m}catch(m){k===s&&(n.value=m instanceof Error?m.message:String(m))}finally{k===s&&(l.value=!1)}}function S(x){y(),o.value=!0,x?a.value=z.parseReportTemplate(x):C()}async function M(){!a.value||l.value||await t.applyLatest(z.parseReportTemplate(a.value))&&y()}function E(){if(!(!a.value||l.value||!r.value))try{t.rebase(z.parseReportTemplate(a.value)),y()}catch(x){n.value=x instanceof Error?x.message:String(x)}}async function N(){const x=t.configuration().keepCopy;if(!x||l.value)return;v();const k=s,$=z.parseReportTemplate(t.local());d=new AbortController,l.value=!0,n.value="";try{await x($,{id:$.id,sourceRevision:$.revision,signal:d.signal}),k===s&&(i.value=!0)}catch(m){k===s&&(n.value=m instanceof Error?m.message:String(m))}finally{k===s&&(l.value=!1)}}return e.onBeforeUnmount(v),{active:o,latest:a,busy:l,error:n,confirmRebase:r,copied:i,localChanges:g,remoteChanges:h,begin:S,clear:y,load:C,adoptLatest:M,rebase:E,keepCopy:N,toggleRebase:()=>{r.value=!r.value}}}function Zs(t,o,a){o==="visual"&&a===void 0?delete t.visual:Object.assign(t,{[o]:o==="widthMm"?Number(a):a})}function ec(t,o,a,l){const n=e.ref(0),r=e.ref(""),i=e.ref([]),s=e.ref();e.watch(t,()=>{s.value=void 0},{flush:"sync"});const d=e.computed(()=>t.value.template.pages.flatMap((f,c)=>f.components.flatMap((p,w)=>p.kind==="list"?[{component:p,pageIndex:c,componentIndex:w}]:[]))),g=e.computed(()=>d.value[n.value]?.component),h=e.computed(()=>{const f=g.value;if(!f)return[];const c=f.columns.map(p=>p.headerStyle?.align??p.headerAlign??f.headerStyle?.align??f.headerAlign??p.style?.align??"center");if(f.headerGrid&&o())for(const p of z.resolveGridLayout(f.headerGrid,f.widthMm,100).cells)for(let w=p.ci;w<p.ci+(p.cell.colSpan??1);w++)c[w]=p.cell.style?.align??"left";return c}),v=e.computed(()=>{const f=r.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(g.value?.columns??[]).flatMap((c,p)=>{const w=`${c.header} ${c.field}`.toLocaleLowerCase();return f.every(B=>w.includes(B))?[{column:c,index:p}]:[]})});function y(f,c){i.value=c?[...new Set([...i.value,f])]:i.value.filter(p=>p!==f)}function C(f){const c=new Set(i.value);for(const{index:p}of v.value)f?c.add(p):c.delete(p);i.value=[...c]}function S(){i.value=[]}function M(f,c,p){if(!a())return;const w=d.value[n.value];if((c==="widthMm"||c==="hidden")&&w&&t.value.template.pages[w.pageIndex]?.flow)return;const B=g.value?.columns[f];B&&(E(f,c,p)||c==="hidden"&&p===!0&&!g.value?.columns.some((R,H)=>H!==f&&!R.hidden)||(Zs(B,c,p),c==="header"&&k(f,String(p)),c==="headerAlign"&&$(f,p),c==="widthMm"&&x(),l(c==="header"?`column:${w?.pageIndex}:${w?.componentIndex}:${f}:header`:void 0)))}function E(f,c,p){if(c!=="field")return!1;const w=g.value,B=d.value[n.value],R=w?.columns[f];if(!w||!B||!R||p===R.field)return!1;const H=`$.template.pages[${B.pageIndex}].components[${B.componentIndex}].columns[${f}].field`,Q=yt.inspectTemplateFieldUsage(t.value.template,w.dataset,R.field).filter(u=>u.path!==H);return Q.length?(s.value={index:f,listIndex:n.value,before:R.field,after:String(p),references:Q},!0):!1}function N(){const f=s.value;if(!f||!a())return;const c=d.value[f.listIndex]?.component.columns[f.index];s.value=void 0,!(!c||c.field!==f.before)&&(c.field=f.after,l())}function x(){const f=d.value[n.value];if(!f)return;const c=f.component,p=t.value.template.pages[f.pageIndex],w=c.columns.map(B=>B.widthMm);c.headerGrid&&(c.headerGrid.colWidthsMm=w),p.layout==="wide"&&w.every(B=>Number.isFinite(B)&&B>0)&&(c.widthMm=w.reduce((B,R)=>B+R,0),p.widthMm=Math.max(...p.components.map(B=>B.leftMm+B.widthMm))+(p.marginRightMm??0))}function k(f,c){const p=g.value;if(!p?.headerGrid)return;const B=z.resolveGridLayout(p.headerGrid,p.widthMm,100).cells.filter(({ci:R,cell:H})=>R<=f&&R+(H.colSpan??1)>f).slice(-1)[0];B&&(Object.assign(B.cell,{text:c,rawText:c,value:c}),p.columns.slice(B.ci,B.ci+(B.cell.colSpan??1)).forEach(R=>{R.header=c}))}function $(f,c){const p=g.value,w=p?.columns[f];if(w?.headerStyle?.align!==void 0&&(w.headerStyle={...w.headerStyle,align:c}),!p?.headerGrid)return;const R=z.resolveGridLayout(p.headerGrid,p.widthMm,100).cells.filter(({ci:H,cell:Q})=>H<=f&&H+(Q.colSpan??1)>f).slice(-1)[0];R&&(R.cell.style={...R.cell.style,align:c},p.columns.slice(R.ci,R.ci+(R.cell.colSpan??1)).forEach(H=>{H.headerAlign=c,H.headerStyle?.align!==void 0&&(H.headerStyle={...H.headerStyle,align:c})}))}function m(f,c){if(!(!a()||f==="headerAlign"&&c==="auto")){for(const p of i.value){const w=g.value?.columns[p];w&&(Object.assign(w,{[f]:c}),f==="headerAlign"&&$(p,c))}l()}}return{selected:n,query:r,selectedColumns:i,lists:d,activeList:g,headerAlignments:h,visibleColumns:v,toggleColumn:y,selectVisible:C,clearSelection:S,fieldChange:s,confirmFieldChange:N,cancelFieldChange:()=>{s.value=void 0},setColumn:M,alignColumns:m}}function tc(t){return e.computed(()=>{const o=z.validateReportTemplateDocument(t.value);if(!o.ok)return{validation:o};try{return{validation:o,json:be.stringifyValidatedTemplate(t.value)}}catch(a){return{validation:{ok:!1,warnings:o.warnings,errors:[{path:"$",message:a instanceof Error?a.message:String(a)}]}}}})}function At(t){if(t.json===void 0)throw new z.ReportTemplateError(t.validation.errors);return JSON.parse(t.json)}function ht(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function ut(t,o,a=!1){const l={kind:"snapshot",value:o};if(a)return l;let n=0;const r=Math.min(t.length,o.length);for(;n<r&&t.charCodeAt(n)===o.charCodeAt(n);)n++;let i=t.length,s=o.length;for(;i>n&&s>n&&t.charCodeAt(i-1)===o.charCodeAt(s-1);)i--,s--;const d={kind:"patch",start:n,removed:t.slice(n,i),inserted:o.slice(n,s)};return ht(d)<ht(l)?d:l}function Ze(t,o,a=!1){if(o.kind==="snapshot")return o.value;const l=a?o.inserted:o.removed,n=a?o.removed:o.inserted;return t.slice(0,o.start)+n+t.slice(o.start+l.length)}const je=t=>({...t,...t.componentIndices?{componentIndices:t.componentIndices.slice()}:{}}),Oe=t=>ht(t)+(t.view?128+((t.view.before.componentIndices?.length??0)+(t.view.after.componentIndices?.length??0))*8:0),_e=(t,o)=>o?{...t,view:{before:je(o),after:je(o)}}:t;function nc(t,o={entries:100,bytes:16*1024*1024}){if(![o.entries,o.bytes].every(m=>Number.isSafeInteger(m)&&m>0))throw new RangeError("History budgets must be positive safe integers");const a=e.shallowRef([{kind:"snapshot",value:t}]),l=e.ref(0),n=e.ref(t),r=e.computed(()=>l.value>0),i=e.computed(()=>l.value+1<a.value.length),s=e.computed(()=>n.value),d=e.computed(()=>a.value.reduce((m,f)=>m+Oe(f),0)),g=e.shallowRef();let h,v=0,y;function C(){h=void 0,y=void 0}function S(m,f){C(),a.value=[_e({kind:"snapshot",value:m},f)],l.value=0,n.value=m,g.value=f}function M(m){let f=m;for(;f>0&&a.value[f].kind!=="snapshot";)f--;let c="";for(;f<=m;f++)c=Ze(c,a.value[f]);return c}function E(m){let f=m.reduce((c,p)=>c+Oe(p),0);for(;m.length>1&&(m.length>o.entries||f>o.bytes);){const c=m[0],p=m[1],w=_e({kind:"snapshot",value:Ze(c.value,p)},p.view?.after);f+=Oe(w)-Oe(c)-Oe(p),m.splice(0,2,w)}return m}function N(m){if(!m)return;const f=a.value.slice(),c=f[l.value];f[l.value]=c.view?{...c,view:{before:c.view.before,after:je(m)}}:_e(c,m),a.value=f}function x(m,f,c){if(n.value===m)return!1;const p=a.value.slice(0,l.value+1),w=Date.now();if(!!c&&c===h&&w-v<=600&&l.value>0&&!i.value){const R=p.pop(),H=y??M(l.value-1),Q=_e(ut(H,m,p.length%20===0),R.view?.before??f);Q.view&&f&&(Q.view.after=je(f)),p.push(Q)}else y=c?n.value:void 0,p.push(_e(ut(n.value,m,p.length%20===0),f));return h=c,v=w,a.value=E(p),l.value=a.value.length-1,n.value=m,!0}function k(m){if(C(),m<0?!r.value:!i.value)return;const f=a.value[l.value];return g.value=m<0?f.view?.before:a.value[l.value+1]?.view?.after,m<0&&f.kind==="patch"?n.value=Ze(n.value,f,!0):m>0?n.value=Ze(n.value,a.value[l.value+1]):n.value=M(l.value-1),l.value+=m,n.value}function $(m,f){if(!l.value||i.value||n.value===m)return!1;const c=a.value.slice(),p=c.pop(),w=_e(ut(M(l.value-1),m,c.length%20===0),p.view?.before??f);return w.view&&f&&(w.view.after=je(f)),c.push(w),a.value=E(c),l.value=a.value.length-1,n.value=m,C(),!0}return{canUndo:r,canRedo:i,current:s,context:g,retainedBytes:d,reset:S,record:x,amend:$,move:k,annotate:N,endGroup:C}}function ac(t,o,a){const l={...t,revision:void 0};return JSON.stringify({document:l,tools:o,json:a})}function oc(t,o){const a={...o,...t.document,id:o.id};return t.document.description===void 0&&delete a.description,o.revision===void 0?delete a.revision:a.revision=o.revision,a}function nn(t){const o=e.shallowRef(null),a=e.ref(!1);let l,n=0;function r(d){l?.(d),l=void 0,o.value=null}function i(){n++,r(!1),a.value=!1}async function s(d){i();const g=n,h=t();a.value=!0;try{const v=await new Promise((y,C)=>{if(l=y,!h){o.value=d;return}Promise.resolve().then(()=>n===g?h(d):!1).then(S=>{n===g&&r(S===!0)},S=>{n===g&&(l=void 0,o.value=null,C(S))})});return n===g&&v===!0}finally{n===g&&(a.value=!1)}}return e.onBeforeUnmount(i),{confirmation:o,pending:a,decide:r,request:s,cancel:i}}function lc(t,o){const a=e.ref(z.parseReportTemplate(t.modelValue)),l=tc(a),n=()=>At(l.value),r=l.value.json;if(r===void 0)throw new z.ReportTemplateError(l.value.validation.errors);const i=e.ref(r),s=e.ref(i.value),d=e.ref(""),g=e.ref(!1),h=e.computed(()=>({...me,...t.messages})),v=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}}));mt.provideMachReportConfig({get defaults(){return v.value}});let y,C=0;const S=e.computed(()=>l.value.validation),M=e.computed(()=>l.value.json!==i.value),E=e.ref(s.value),N=e.computed(()=>s.value!==E.value),x=e.ref({}),k=e.ref(0),$=e.ref(0),m=e.computed(()=>Object.values(x.value).some(Boolean)),f=e.computed(()=>Object.keys(x.value).filter(A=>x.value[A]));function c(A,F){x.value={...x.value,[A]:F},k.value++}let p=!1,w=!1,B;const R=Ls(c,()=>{p||(w?D.amend(P(),I?.read()):D.record(P(),I?.read()))}),H=e.computed(()=>M.value||s.value!==E.value||m.value||!!j.fieldChange.value),Q=e.computed(()=>l.value.json===void 0?a.value:n()),u=e.computed(()=>ac(Q.value,R.records.value,N.value?{text:s.value,revision:B?B.revision:a.value.revision}:void 0)),P=()=>u.value,D=nc(P()),T=e.ref(0);let I;function L(A){I=A,D.annotate(A.read())}function _(){D.annotate(I?.read())}const O=nn(()=>t.beforeDiscard),Y=e.computed(()=>g.value||O.pending.value||de.active.value||Me.checking.value||!!Me.available.value),U=()=>!t.readonly&&!Y.value&&!N.value,j=ec(a,()=>S.value.ok,U,ge),{selected:oe,lists:ne,activeList:ie,headerAlignments:X,setColumn:Se}=j;e.watch(oe,()=>j.clearSelection());const We=e.shallowRef();let ve,we,Re;function q(){clearTimeout(ve),ve=void 0,We.value=mt.createLocalFetcher({draft:{get template(){return a.value.template},get datasets(){return t.datasets??{}},params:[]}})}e.watch(()=>a.value.template,()=>{clearTimeout(ve),we&&Re===we?ve=setTimeout(q,150):q(),Re=we},{deep:!0,immediate:!0}),e.watch(()=>t.datasets,()=>{Re=void 0,q()},{deep:!0});const nt=e.computed(()=>S.value.ok?We.value:void 0);function Le(){C++,y?.abort(),y=void 0,g.value=!1}let Ne=0;async function Ve(A="replace",F){if(!H.value)return!0;const K=P(),te=k.value;try{return await O.request({reason:A,document:JSON.parse(JSON.stringify(a.value)),replacement:F?z.parseReportTemplate(F):void 0,pendingLocalChanges:!0})&&K===P()&&te===k.value}catch(re){return d.value=re instanceof Error?re.message:String(re),!1}}function pe(A){const F=z.serializeReportTemplate(A);Le(),de.clear(),R.clear(),a.value=A,i.value=F,s.value=i.value,E.value=s.value,B=void 0,d.value="",oe.value=0,j.clearSelection(),j.cancelFieldChange(),x.value={},k.value++,$.value++,D.reset(P(),I?.read())}e.watch(()=>t.modelValue,async A=>{let F,K;try{F=z.parseReportTemplate(A),K=be.stringifyValidatedTemplate(F)}catch(re){d.value=re instanceof Error?re.message:String(re);return}if(K===l.value.json)return;const te=++Ne;if(Le(),!await Ve("replace",F)){te===Ne&&S.value.ok&&o("update:modelValue",n());return}te===Ne&&pe(F)}),e.onBeforeUnmount(()=>{Ne++,Le(),clearTimeout(ve)});function ge(A){we=A,w=!0,queueMicrotask(()=>{w=!1}),O.cancel(),d.value="";const F=l.value;F.json!==void 0&&(s.value=F.json,E.value=s.value,B=void 0,o("update:modelValue",At(F))),D.record(P(),I?.read(),A)&&T.value++}function Ae(A){if(!U())return!1;try{const F=n();A(F);const K=z.validateReportTemplateDocument(F);if(!K.ok)throw new Error(K.errors.map(te=>`${te.path}: ${te.message}`).join(`
2
+ `));return be.stringifyValidatedTemplate(F),a.value=F,ge(),!0}catch(F){return d.value=F instanceof Error?F.message:String(F),!1}}function Ke(A){return m.value||j.fieldChange.value?(d.value=h.value.toolsPending,!1):Ae(F=>{F.template=z.parseReportTemplate({...F,template:A}).template})}async function Je(A){if(!U())return!1;try{const F=z.parseReportTemplate(A);return be.stringifyValidatedTemplate(F),!await Ve("replace",F)||!U()?!1:(a.value=F,oe.value=0,j.clearSelection(),ge(),!0)}catch(F){return d.value=F instanceof Error?F.message:String(F),!1}}function Te(A){U()&&(a.value.name=A,ge("document:name"))}function at(A){U()&&(a.value.description=A,ge("document:description"))}function ot(){if(!(t.readonly||Y.value))try{const A=z.parseReportTemplate(s.value);if(A.id!==a.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(A.revision!==a.value.revision&&(!B||A.revision!==B.revision))throw new Error("修订号由保存服务管理,不能在 JSON 中修改");a.value.revision===void 0?delete A.revision:A.revision=a.value.revision,be.stringifyValidatedTemplate(A),a.value=A,oe.value=0,j.clearSelection(),ge()}catch(A){d.value=A instanceof Error?A.message:String(A)}}async function lt(){Y.value||t.readonly||!await Ve("reset")||(pe(z.parseReportTemplate(i.value)),o("update:modelValue",n()))}function Ce(A){if(Y.value||t.readonly)return;D.record(P(),I?.read());const F=D.move(A);if(!F)return;O.cancel();const K=JSON.parse(F);p=!0,a.value=oc(K,z.parseReportTemplate(i.value)),E.value=l.value.json??JSON.stringify(a.value,null,2),s.value=K.json?.text??E.value,B=K.json?{revision:K.json.revision}:void 0,R.restore(K.tools),queueMicrotask(()=>{p=!1}),d.value="";const te=D.context.value?.listIndex;oe.value=te!==void 0&&ne.value[te]?te:0,j.clearSelection(),D.context.value&&I?.restore(D.context.value),S.value.ok&&o("update:modelValue",n())}async function Fe(){if(!t.save||!U()||!S.value.ok)return;if(m.value||j.fieldChange.value){d.value=h.value.toolsPending;return}const A=++C;y=new AbortController,g.value=!0,d.value="";const F=n();try{const K=z.parseReportTemplate(await t.save(F,{expectedRevision:F.revision,signal:y.signal}));if(A!==C)return;if(K.id!==F.id)throw new Error("保存服务返回了其他模板的文档");const te=be.stringifyValidatedTemplate(K);a.value=K,i.value=te,s.value=i.value,E.value=s.value,D.endGroup(),B=void 0,R.clear(),Me.flush(),o("saved",z.parseReportTemplate(K)),o("update:modelValue",z.parseReportTemplate(K))}catch(K){A===C&&(d.value=K instanceof Error?K.message:String(K),K&&typeof K=="object"&&"code"in K&&K.code==="conflict"&&de.begin())}finally{A===C&&(g.value=!1,y=void 0)}}const de=Xs({configuration:()=>t,baseline:()=>z.parseReportTemplate(i.value),local:n,async applyLatest(A){return await Ve("replace",A)?(pe(A),o("update:modelValue",z.parseReportTemplate(A)),!0):!1},rebase(A){const F=n();A.revision===void 0?delete F.revision:F.revision=A.revision;const K=z.serializeReportTemplate(F),te=z.serializeReportTemplate(A),re=N.value;F.revision===void 0?delete a.value.revision:a.value.revision=F.revision,i.value=te,re||(s.value=K),E.value=K,D.reset(P(),I?.read()),o("update:modelValue",n())}}),Me=Qs({storage:()=>t.draftStorage,id:()=>a.value.id,baseline:()=>i.value,pending:()=>H.value,changedSource:()=>[P(),i.value,s.value,E.value],snapshot:()=>({version:1,templateId:a.value.id,savedAt:new Date().toISOString(),baseline:z.parseReportTemplate(i.value),document:JSON.parse(JSON.stringify(a.value)),json:s.value,appliedJson:E.value,tools:R.records.value}),restore(A){if(t.readonly||g.value)return;const F=z.parseReportTemplate(t.modelValue);a.value=z.parseReportTemplate(A.document),i.value=z.serializeReportTemplate(A.baseline),s.value=A.json,E.value=A.appliedJson,$.value++,R.restore(A.tools);const K=Object.keys(A.tools).find(te=>te.startsWith("rules:"));if(K){const[,te,re]=K.split(":"),He=ne.value.findIndex(xe=>xe.pageIndex===Number(te)&&xe.componentIndex===Number(re));He>=0&&(oe.value=He)}D.reset(P(),I?.read()),z.serializeReportTemplate(F)!==i.value&&de.begin(F),o("update:modelValue",n())}}),Z=e.computed(()=>D.canUndo.value||P()!==D.current.value),Ye=e.computed(()=>D.canRedo.value&&P()===D.current.value);return{...j,recovery:Me,conflict:de,editingReadonly:e.computed(()=>t.readonly===!0),connectHistoryView:L,captureHistoryView:_,historyViewRevision:T,transaction:Ae,applyTemplate:Ke,replaceDocument:Je,originalDocument:e.computed(()=>z.parseReportTemplate(i.value)),canUndo:Z,canRedo:Ye,undo:()=>Ce(-1),redo:()=>Ce(1),pendingLocalChanges:H,setToolPending:c,isToolPending:A=>x.value[A]===!0,toolEpoch:$,toolPending:m,pendingTools:f,jsonPending:N,blocked:Y,confirmation:O.confirmation,decideDiscard:O.decide,guardChanges:Ve,draft:a,json:s,selected:oe,error:d,saving:g,dirty:M,validation:S,lists:ne,activeList:ie,headerAlignments:X,previewOptions:v,fetcher:nt,flushPreview:q,messages:h,setName:Te,setDescription:at,setColumn:Se,applyJson:ot,reset:lt,save:Fe}}function rc(t,o){const a=e.ref(o.value?"fields":"component"),l=()=>o.value?.columns.length?0:-1,n=e.ref(l()),r=e.computed(()=>{const d=o.value?.columns[n.value];return d?{column:d,index:n.value}:void 0});e.watch(t,()=>{n.value=l()},{flush:"sync"}),e.watch(o,d=>{d?.columns[n.value]||(n.value=l()),!d&&a.value==="fields"&&(a.value="component")});function i(d){o.value?.columns[d]&&(n.value=d)}function s(d){const g=o.value?.columns.length??0;g&&(n.value=Math.max(0,Math.min(g-1,n.value+d)))}return{section:a,activeIndex:n,activeColumn:r,activate:i,stepColumn:s}}const ic=["aria-label","aria-busy"],sc={class:"mr-designer-bar"},cc={class:"mr-designer-heading"},dc=["aria-label"],uc=["id","aria-selected","aria-controls","tabindex","onClick"],mc={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},pc=["aria-label"],fc=["aria-pressed"],vc=["aria-pressed"],gc={class:"mr-designer-actions"},hc={class:"mr-designer-history"},yc=["aria-label","title","disabled"],bc=["aria-label","title","disabled"],kc=["disabled"],Ec=["title","aria-describedby","disabled"],Sc=["id"],wc={key:0,class:"mr-designer-insert-notice",role:"status"},Nc=["id"],Vc=["aria-label","onClick"],Cc=["aria-label"],Mc=["id","aria-labelledby"],xc=["aria-label"],Bc=["id","aria-pressed","aria-describedby","onClick"],Dc={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},$c={class:"mr-designer-tool-target"},Tc=["value","aria-label"],_c=["value"],Ic=["value","aria-label"],Pc={value:-1,disabled:""},Rc=["value"],Lc=["aria-pressed"],Ac={class:"mr-designer-tool-content"},Fc={key:5,class:"mr-designer-rule-workspace"},Hc={key:0},Oc=["value"],Gc=["value"],zc={key:2,class:"mr-designer-note"},jc={key:1,class:"mr-designer-inspector"},Uc=["id","aria-labelledby"],qc={key:0,class:"mr-designer-flow-note"},Wc={key:0,class:"mr-designer-area"},Kc=["value"],Jc=["value"],Yc={class:"mr-designer-field-actions"},Qc=["disabled"],Xc={class:"mr-designer-current"},Zc=["aria-expanded","aria-controls"],ed={class:"mr-designer-current-name"},td={class:"mr-designer-directory-entry"},nd={class:"mr-designer-field-position"},ad=["aria-label"],od=["aria-label","title","disabled"],ld=["aria-label","title","disabled"],rd=["disabled","aria-label"],id={class:"mr-designer-property-group"},sd=["value"],cd=["value","list"],dd=["id"],ud=["value"],md={class:"mr-designer-property-group"},pd={class:"mr-designer-format-pair"},fd={class:"mr-designer-stacked"},vd=["value","disabled"],gd={class:"mr-designer-stacked"},hd=["value"],yd={value:"identifier"},bd={value:"dimension"},kd={value:"measure"},Ed={value:"date"},Sd={value:"text"},wd={class:"mr-designer-control-row"},Nd={class:"mr-designer-control-row"},Vd={class:"mr-designer-toggle"},Cd=["checked"],Md={class:"mr-designer-column-structure"},xd=["aria-label","title","disabled"],Bd=["aria-label","title","disabled"],Dd=["checked","disabled"],$d=["id","aria-label"],Td={class:"mr-designer-directory-heading"},_d=["aria-label"],Id={class:"mr-designer-search"},Pd=["aria-label","placeholder"],Rd=["aria-label","title"],Ld={class:"mr-designer-column-tools"},Ad=["disabled"],Fd={key:1,role:"status"},Hd={key:2},Od=["aria-label"],Gd=["aria-label","checked","disabled","onChange"],zd=["data-column-index","aria-pressed","tabindex","onClick"],jd={class:"mr-designer-column-number"},Ud={class:"mr-designer-column-name"},qd={key:0,role:"status",class:"mr-designer-empty"},Wd=["aria-label"],Kd=["disabled","aria-label"],Jd=["disabled","aria-label"],Yd={key:1,class:"mr-designer-batch"},Qd=["aria-label","disabled"],Xd={value:""},Zd={value:"auto"},eu={value:"left"},tu={value:"center"},nu={value:"right"},au={value:"justify"},ou=["aria-label","disabled"],lu={value:""},ru={value:"left"},iu={value:"center"},su={value:"right"},cu={value:"justify"},du={key:2,role:"status",class:"mr-designer-empty"},uu={class:"mr-designer-object-tools"},mu=["title","aria-label","disabled"],pu=["title","aria-label","disabled"],fu={key:0},vu=["value"],gu={class:"mr-designer-stacked"},hu=["value"],yu={value:-1,disabled:""},bu=["value"],ku={key:1,class:"mr-designer-arrange"},Eu=["disabled"],Su=["aria-label","disabled"],wu={value:""},Nu={value:"left"},Vu={value:"center"},Cu={value:"right"},Mu={value:"top"},xu={value:"middle"},Bu={value:"bottom"},Du=["disabled"],$u=["disabled"],Tu={key:0},_u={class:"mr-designer-layer-tools"},Iu=["disabled"],Pu=["disabled"],Ru={key:3,class:"mr-designer-empty"},Lu={class:"mr-designer-stacked"},Au=["value","disabled"],Fu={class:"mr-designer-stacked"},Hu=["value","disabled"],Ou={class:"mr-designer-technical"},Gu={class:"mr-designer-identity"},zu={class:"mr-designer-stacked mr-designer-json-label"},ju=["aria-label","disabled"],Uu=["disabled"],qu={key:5,role:"status",class:"mr-designer-note mr-designer-pending"},Wu=["aria-label"],Ku={key:0,role:"alert",class:"mr-designer-error"},Ju={key:1,role:"alert",class:"mr-designer-error"},Yu={key:4,class:"mr-designer-note mr-designer-invalid"},Qu=e.defineComponent({__name:"ReportTemplateEditor",props:{showSave:{type:Boolean,default:!0},mode:{},showModeSwitch:{type:Boolean,default:!0},capabilities:{},insertionMessages:{},guideMessages:{},draftStorage:{},recoveryMessages:{},productMessages:{},reviewMessages:{},fragments:{},documentStyles:{},reviewFixtures:{},modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingDataContract:{},bindingSession:{},readonly:{type:Boolean},messages:{},visualMessages:{},preview:{},beforeDiscard:{},save:{},loadLatest:{},keepCopy:{}},emits:["update:modelValue","saved","excel-bound","update:mode"],setup(t,{expose:o,emit:a}){const l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-D4RS5Bpg.cjs"))),n=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-C-6C9rd2.cjs"))),r=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-DcT9xI1v.cjs"))),i=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-CUHFFiNM.cjs"))),s=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-DZMyiX5I.cjs"))),d=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-DnYImiXu.cjs"))),g=t,h=a,v=lc(g,(G,V)=>{h(G==="saved"?"saved":"update:modelValue",V)}),{draft:y,json:C,selected:S,error:M,saving:E,pendingLocalChanges:N,jsonPending:x,blocked:k,confirmation:$,canUndo:m,canRedo:f,validation:c,lists:p,activeList:w,visibleColumns:B,query:R,selectedColumns:H,fetcher:Q,messages:u}=v;function P(G){return v.transaction(V=>{V.template.params=G})}const D=rc(S,w),{section:T,activeIndex:I,activeColumn:L}=D,_=`mr-designer-${e.getCurrentInstance()?.uid??0}`,O=cs(v,D,()=>g.dataSchemas,{mode:()=>g.mode,onModeChange:G=>h("update:mode",G)}),{mode:Y,canvasSelection:U,canvasPage:j,canvasActive:oe,tool:ne,visitedTools:ie,editDisabled:X,dataSchema:Se,patchCanvas:We,changeList:ve,moveColumn:we,headerCommand:Re,canvas:q}=O,{canvasVisited:nt,previewVisited:Le,visibleFetcher:Ne}=Wt(y,Y,Q),{sections:Ve,toolPreview:pe,setMode:ge,toggleToolPreview:Ae,chooseToolComponent:Ke,openBinding:Je,pendingConfigurations:Te,saveReason:at,openPending:ot,headingStatus:lt,chooseCanvas:Ce,locateReview:Fe,chooseRuleList:de,navigateSection:Me}=os(v,O,D,{id:_,readonly:()=>g.readonly===!0,capabilities:()=>g.capabilities}),Z=Sa(v,O,D,()=>g.dataSchemas,()=>g.datasets,()=>g.insertionMessages),Ye=wa(()=>({undo:v.undo,redo:v.redo,canUndo:m.value,canRedo:f.value,blocked:k.value||g.readonly})),A=["outline","reuse","excel","rules","params","review"],F=e.computed(()=>A.filter(G=>g.capabilities?.[G]!==!1));e.watch(F,G=>{G.includes(ne.value)||(ne.value=G[0]??"outline"),!G.length&&T.value==="tools"&&(T.value=p.value.length?"fields":"component")});const K=e.computed(()=>["fields","components","layout","excel","rules","review"].filter(G=>!["excel","rules","review"].includes(G)||g.capabilities?.[G]!==!1)),te=e.computed(()=>y.value.template.pages.some(G=>G.components.some(V=>V.kind==="list"||V.binding?!1:V.kind==="image"?!V.imageData||V.meta?.designerPlaceholder===!0:["qrcode","barcode"].includes(V.kind)&&!V.imageData&&!(V.code?.value??V.fallbackText??V.text??"").trim()))),re=e.computed(()=>Z.confirmation.value?Z.messages.value.newPagePending:te.value?Z.messages.value.assetPending:at.value);async function He(){if(!Z.confirmation.value){if(te.value){M.value=Z.messages.value.assetPending;return}await v.save()}}function xe(G){if(G==="preview"&&te.value){M.value=Z.messages.value.assetPending;return}v.flushPreview(),ge(G)}e.watch(Y,G=>{G==="preview"&&v.flushPreview()});const se=e.computed(()=>!!y.value.template.pages[j.value]?.flow),kt=e.computed(()=>g.dataSchemas?.[y.value.template.repeat?.dataset??""]),Et=e.computed(()=>{const G={text:u.value.insertText,list:u.value.insertList,image:u.value.insertImage,rect:u.value.insertRect,qrcode:u.value.insertQrcode,barcode:u.value.insertBarcode,chart:u.value.chartComponent,line:u.value.lineComponent,ellipse:u.value.ellipseComponent},V=new Map(kt.value?.fields.map(b=>[b.field,b.label||b.field]));return y.value.template.pages[j.value]?.components.map((b,W)=>{const ye=G[b.kind],st=(b.kind==="list"?b.title||b.dataset:b.binding?V.get(b.binding.field)||b.binding.field:b.text)?.replace(/\s+/g," ").trim().slice(0,60);return{index:W,name:st&&st!==ye?`${ye} · ${st}`:ye}})??[]});function on(G){let V=j.value;v.transaction(b=>{V=Ra(b,j.value,G)})&&(G.type!=="patch"&&(q.clearLocks(),q.selection.value=void 0,q.selections.value=[]),j.value=V)}const Be=e.computed(()=>!!y.value.template.pages[p.value[S.value]?.pageIndex??-1]?.flow),St=e.ref(null),rt=e.ref(null),ee=Rs(D,T,B),{open:wt,cursor:ln,trigger:rn,panel:sn,search:cn,list:dn}=ee;e.watch(T,async()=>{await e.nextTick(),rt.value&&(rt.value.scrollTop=0)});const Nt=e.computed(()=>({auto:u.value.auto,left:u.value.left,center:u.value.center,right:u.value.right,justify:u.value.justify}));let Qe=null;e.watch($,async G=>{G?(Qe=document.activeElement,await e.nextTick(),St.value?.focus()):(await e.nextTick(),Qe?.isConnected&&Qe.focus(),Qe=null)});function Vt(G){if(!(k.value||g.capabilities?.[G]===!1)){if(["excel","rules","params","review"].includes(G)){T.value="tools",ne.value=G;return}T.value=G==="layout"?"template":G==="fields"&&p.value.length?"fields":"component",xe(T.value==="fields"?"preview":"design")}}const Ct=e.computed(()=>!g.readonly&&!k.value&&!x.value&&!v.toolPending.value&&!v.fieldChange.value&&c.value.ok&&!te.value&&!Z.confirmation.value);o({openPanel:Vt,applyTemplate:v.applyTemplate,undo:v.undo,redo:v.redo,get canUndo(){return m.value},get canRedo(){return f.value},get canApply(){return Ct.value},get saveReason(){return re.value},get pendingLocalChanges(){return N.value},get saving(){return E.value},get blocked(){return k.value||!!Z.confirmation.value},guardChanges:(...G)=>(Z.cancelInsertion(),v.guardChanges(...G)),reset:async()=>{Z.cancelInsertion(),await v.reset()},save:He,insertComponent:q.insertComponent});async function un(G){const V={...G.document,id:y.value.id,template:{...G.document.template,...g.bindingDataContract?{dataContract:g.bindingDataContract}:{}}};if(y.value.revision===void 0?delete V.revision:V.revision=y.value.revision,!await v.replaceDocument(V))return!1;const b=z.parseReportTemplate(v.draft.value);return h("excel-bound",{...G,document:b,session:{...G.session,identity:{id:b.id,name:b.name}}}),!0}function he(G){return G.target.value}function it(G){return G.target.checked}function Mt(G,V){const b=G.target;v.alignColumns(V,b.value),b.value=""}return(G,V)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(u).title,"aria-busy":e.unref(E),onKeydown:V[65]||(V[65]=(...b)=>e.unref(Ye).keydown&&e.unref(Ye).keydown(...b))},[e.createElementVNode("header",sc,[e.createElementVNode("div",cc,[e.createVNode(J._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(u).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(N)})},e.toDisplayString(e.unref(lt)),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(u).sectionsLabel},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Ve),b=>(e.openBlock(),e.createElementBlock("button",{id:`${_}-tab-${b}`,key:b,type:"button",role:"tab","aria-selected":e.unref(T)===b,"aria-controls":`${_}-panel-${b}`,tabindex:e.unref(T)===b?0:-1,onClick:W=>T.value=b,onKeydown:V[0]||(V[0]=(...W)=>e.unref(Me)&&e.unref(Me)(...W))},[e.createTextVNode(e.toDisplayString(e.unref(u)[`${b}Section`])+" ",1),b==="tools"&&e.unref(v).toolPending.value||b==="advanced"&&e.unref(x)?(e.openBlock(),e.createElementBlock("span",mc)):e.createCommentVNode("",!0)],40,uc))),128))],8,dc),t.showModeSwitch!==!1?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-designer-mode",role:"group","aria-label":e.unref(u).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(Y)==="design",onClick:V[1]||(V[1]=b=>xe("design"))},e.toDisplayString(e.unref(u).design),9,fc),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(Y)==="preview",onClick:V[2]||(V[2]=b=>xe("preview"))},e.toDisplayString(e.unref(u).preview),9,vc)],8,pc)):e.createCommentVNode("",!0),e.createElementVNode("div",gc,[e.createVNode(Pn,{disabled:e.unref(X)||se.value,repeat:!!e.unref(y).template.repeat,fields:e.unref(y).template.repeat||e.unref(w)?e.unref(Z).fields.value:[],columns:!e.unref(y).template.repeat,"used-fields":e.unref(y).template.repeat?[]:e.unref(w)?.columns.map(b=>b.field)??[],messages:t.insertionMessages,onInsert:e.unref(Z).insert,onField:e.unref(Z).addField,onFields:e.unref(Z).addFields},null,8,["disabled","repeat","fields","columns","used-fields","messages","onInsert","onField","onFields"]),e.createVNode(yn,{available:K.value,fields:!!e.unref(p).length,disabled:e.unref(k),messages:t.guideMessages,onChoose:Vt},null,8,["available","fields","disabled","messages"]),e.createElementVNode("div",hc,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).undo,title:e.unref(u).undo,disabled:t.readonly||e.unref(k)||!e.unref(m),onClick:V[3]||(V[3]=b=>{e.unref(q).clearLocks(),e.unref(v).undo()})},[V[66]||(V[66]=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)),e.createTextVNode(e.toDisplayString(e.unref(u).undo),1)],8,yc),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).redo,title:e.unref(u).redo,disabled:t.readonly||e.unref(k)||!e.unref(f),onClick:V[4]||(V[4]=b=>{e.unref(q).clearLocks(),e.unref(v).redo()})},[V[67]||(V[67]=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)),e.createTextVNode(e.toDisplayString(e.unref(u).redo),1)],8,bc)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(k)||!e.unref(N),onClick:V[5]||(V[5]=(...b)=>e.unref(v).reset&&e.unref(v).reset(...b))},e.toDisplayString(e.unref(u).reset),9,kc),t.save&&t.showSave!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",title:re.value||e.unref(u).save,"aria-describedby":e.unref(Te).length?`${_}-pending`:re.value?`${_}-save-reason`:void 0,disabled:!Ct.value||!e.unref(N),onClick:He},[e.createVNode(J._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(E)?e.unref(u).saving:e.unref(u).save),1)],8,Ec)):e.createCommentVNode("",!0),t.save&&t.showSave!==!1&&re.value&&!e.unref(Te).length?(e.openBlock(),e.createElementBlock("span",{key:1,id:`${_}-save-reason`,class:"mr-designer-save-reason"},e.toDisplayString(re.value),9,Sc)):e.createCommentVNode("",!0)])]),e.unref(Z).notice.value?(e.openBlock(),e.createElementBlock("p",wc,e.toDisplayString(e.unref(Z).notice.value),1)):e.createCommentVNode("",!0),e.unref(Z).confirmation.value?(e.openBlock(),e.createBlock(Gn,e.mergeProps({key:1},e.unref(Z).confirmation.value,{onConfirm:e.unref(Z).confirmInsertion,onCancel:e.unref(Z).cancelInsertion}),null,16,["onConfirm","onCancel"])):e.createCommentVNode("",!0),e.createVNode(Ji,{recovery:e.unref(v).recovery,conflict:e.unref(v).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(Mi,{messages:t.productMessages,change:e.unref(v).fieldChange.value,disabled:e.unref(X),onConfirm:e.unref(v).confirmFieldChange,onCancel:e.unref(v).cancelFieldChange,onLocate:e.unref(Fe)},null,8,["messages","change","disabled","onConfirm","onCancel","onLocate"]),e.unref(Te).length?(e.openBlock(),e.createElementBlock("div",{key:2,id:`${_}-pending`,class:"mr-designer-pending",role:"status"},[e.createElementVNode("span",null,e.toDisplayString(e.unref(u).pendingToolsLabel),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Te),b=>(e.openBlock(),e.createElementBlock("button",{key:b.target,type:"button","aria-label":`${b.label} · ${e.unref(u).unapplied} · ${e.unref(u).returnToConfiguration}`,onClick:W=>e.unref(ot)(b.target)},[e.createTextVNode(e.toDisplayString(b.label),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(u).unapplied)+" ↗",1)],8,Vc))),128)),e.createElementVNode("small",null,e.toDisplayString(e.unref(u).pendingToolsHint),1)],8,Nc)):e.createCommentVNode("",!0),e.unref($)?(e.openBlock(),e.createElementBlock("div",{key:3,role:"alertdialog","aria-label":e.unref(u).discardTitle,class:"mr-designer-confirm",onKeydown:V[8]||(V[8]=e.withKeys(e.withModifiers(b=>e.unref(v).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(u).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(u).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:St,type:"button",onClick:V[6]||(V[6]=b=>e.unref(v).decideDiscard(!1))},e.toDisplayString(e.unref(u).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:V[7]||(V[7]=b=>e.unref(v).decideDiscard(!0))},e.toDisplayString(e.unref(u).discard),1)])],40,Cc)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(T)==="tools","is-docked":e.unref(pe)}])},[e.unref(ie).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:e.unref(v).toolEpoch.value,class:"mr-designer-tools",id:`${_}-panel-tools`,role:"tabpanel","aria-labelledby":`${_}-tab-tools`},[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(u).toolsSection},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,b=>(e.openBlock(),e.createElementBlock("button",{key:b,id:`${_}-tool-${b}`,type:"button","aria-pressed":e.unref(ne)===b,"aria-describedby":e.unref(v).isToolPending(b)?`${_}-pending`:void 0,onClick:W=>ne.value=b},[e.createTextVNode(e.toDisplayString(e.unref(u)[`${b}Tool`])+" ",1),e.unref(v).isToolPending(b)?(e.openBlock(),e.createElementBlock("span",Dc)):e.createCommentVNode("",!0)],8,Bc))),128))],8,xc),e.createElementVNode("div",$c,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(e.unref(u).toolTarget),1),e.createElementVNode("select",{value:e.unref(j),"aria-label":e.unref(u).pageDirectory,onChange:V[9]||(V[9]=b=>j.value=Number(b.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).template.pages,(b,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(e.unref(Ue)(b,W,e.unref(u).page)),9,_c))),128))],40,Tc)]),e.createElementVNode("select",{value:e.unref(U)?.pageIndex===e.unref(j)?e.unref(U).componentIndex:-1,"aria-label":e.unref(u).toolChooseComponent,onChange:V[10]||(V[10]=(...b)=>e.unref(Ke)&&e.unref(Ke)(...b))},[e.createElementVNode("option",Pc,e.toDisplayString(e.unref(u).toolChooseComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Et.value,b=>(e.openBlock(),e.createElementBlock("option",{key:b.index,value:b.index},e.toDisplayString(b.name),9,Rc))),128))],40,Ic),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(pe),onClick:V[11]||(V[11]=(...b)=>e.unref(Ae)&&e.unref(Ae)(...b))},[e.createVNode(J._sfc_main,{name:"columns",size:14}),e.createTextVNode(e.toDisplayString(e.unref(pe)?e.unref(u).toolPreviewHide:e.unref(u).toolPreview),1)],8,Lc)]),e.createElementVNode("div",Ac,[e.unref(ie).has("outline")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(i),{key:0,messages:t.productMessages,document:e.unref(y),selection:e.unref(U),onLocate:e.unref(Fe)},null,8,["messages","document","selection","onLocate"])),[[e.vShow,e.unref(ne)==="outline"]]):e.createCommentVNode("",!0),e.unref(ie).has("reuse")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(s),{key:1,messages:t.productMessages,document:e.unref(y),"page-index":e.unref(j),selection:e.unref(U),fragments:t.fragments,styles:t.documentStyles,disabled:e.unref(X),accept:e.unref(v).transaction,onSelect:e.unref(Ce)},null,8,["messages","document","page-index","selection","fragments","styles","disabled","accept","onSelect"])),[[e.vShow,e.unref(ne)==="reuse"]]):e.createCommentVNode("",!0),e.unref(ie).has("params")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(n),{key:2,document:e.unref(y),readonly:e.unref(X),accept:P,"load-options":t.preview?.loadParamOptions,onDirty:V[12]||(V[12]=b=>e.unref(v).setToolPending("params",b))},null,8,["document","readonly","load-options"])),[[e.vShow,e.unref(ne)==="params"]]):e.createCommentVNode("",!0),e.unref(ie).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(l),{key:3,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(y).id,name:e.unref(y).name},"lock-id":"",readonly:e.unref(X),accept:un,onDirty:V[13]||(V[13]=b=>e.unref(v).setToolPending("excel",b))},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(ne)==="excel"]]):e.createCommentVNode("",!0),e.unref(ie).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(d),{key:4,document:e.unref(y),previous:e.unref(v).originalDocument.value,fixtures:t.reviewFixtures,messages:t.reviewMessages,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(Fe)},null,8,["document","previous","fixtures","messages","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(ne)==="review"]]):e.createCommentVNode("",!0),e.unref(ie).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Fc,[e.unref(p).length>1?(e.openBlock(),e.createElementBlock("label",Hc,[e.createTextVNode(e.toDisplayString(e.unref(u).area),1),e.createElementVNode("select",{value:e.unref(S),onChange:V[14]||(V[14]=(...b)=>e.unref(de)&&e.unref(de)(...b))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),(b,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(b.component.title||b.component.dataset),9,Gc))),128))],40,Oc)])):e.createCommentVNode("",!0),e.unref(w)?(e.openBlock(),e.createBlock(e.unref(r),{key:1,list:e.unref(w),"recovery-key":`rules:${e.unref(p)[e.unref(S)]?.pageIndex??0}:${e.unref(p)[e.unref(S)]?.componentIndex??0}`,datasets:t.datasets,"dataset-schema":e.unref(Se),"dataset-schemas":t.dataSchemas,readonly:e.unref(X),onChange:e.unref(ve),onDirty:V[15]||(V[15]=b=>e.unref(v).setToolPending("rules",b))},null,8,["list","recovery-key","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",zc,e.toDisplayString(e.unref(u).rulesNeedList),1))],512)),[[e.vShow,e.unref(ne)==="rules"]]):e.createCommentVNode("",!0)])],8,Mc)),[[e.vShow,e.unref(T)==="tools"]]):e.createCommentVNode("",!0),e.unref(T)!=="tools"?(e.openBlock(),e.createElementBlock("aside",jc,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:rt,id:`${_}-panel-${e.unref(T)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(T)==="advanced"}]),role:"tabpanel","aria-labelledby":`${_}-tab-${e.unref(T)}`},[se.value||Be.value?(e.openBlock(),e.createElementBlock("div",qc,[e.createElementVNode("small",null,e.toDisplayString(e.unref(u).flowLayout),1),e.createElementVNode("button",{type:"button",onClick:V[16]||(V[16]=(...b)=>e.unref(Je)&&e.unref(Je)(...b))},e.toDisplayString(e.unref(u).excelTool)+" ↗",1)])):e.createCommentVNode("",!0),e.unref(T)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(p).length>1?(e.openBlock(),e.createElementBlock("label",Wc,[e.createTextVNode(e.toDisplayString(e.unref(u).area),1),e.createElementVNode("select",{value:e.unref(S),onChange:V[17]||(V[17]=(...b)=>e.unref(de)&&e.unref(de)(...b))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),(b,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(b.pageIndex+1)+" "+e.toDisplayString(e.unref(u).page)+" · "+e.toDisplayString(b.component.title||b.component.dataset),9,Jc))),128))],40,Kc)])):e.createCommentVNode("",!0),e.unref(w)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Yc,[e.createElementVNode("button",{type:"button",disabled:e.unref(X)||Be.value||e.unref(w).columns.length<2,onClick:V[18]||(V[18]=(...b)=>e.unref(Z).removeColumn&&e.unref(Z).removeColumn(...b))},e.toDisplayString(e.unref(Z).messages.value.removeColumn),9,Qc)]),e.createElementVNode("div",Xc,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:rn,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(wt),"aria-controls":`${_}-directory`,"aria-haspopup":"dialog",onClick:V[19]||(V[19]=(...b)=>e.unref(ee).toggle&&e.unref(ee).toggle(...b)),onKeydown:V[20]||(V[20]=e.withKeys((...b)=>e.unref(ee).escape&&e.unref(ee).escape(...b),["esc"]))},[e.createElementVNode("span",ed,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(L)?.column.header||e.unref(u).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(L)?.column.field||"—"),1)]),e.createElementVNode("span",td,[e.createTextVNode(e.toDisplayString(e.unref(u).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(w).columns.length),1),e.createVNode(J._sfc_main,{name:"chevron-down",size:13})])],40,Zc),e.createElementVNode("div",nd,[e.createElementVNode("span",{"aria-label":e.unref(u).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(I)>=0?e.unref(I)+1:0),1),V[68]||(V[68]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(w).columns.length),1)],8,ad),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).previousColumn,title:e.unref(u).previousColumn,disabled:e.unref(I)<=0,onClick:V[21]||(V[21]=b=>e.unref(D).stepColumn(-1))},[e.createVNode(J._sfc_main,{name:"chevron-left",size:14})],8,od),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).nextColumn,title:e.unref(u).nextColumn,disabled:e.unref(I)>=e.unref(w).columns.length-1,onClick:V[22]||(V[22]=b=>e.unref(D).stepColumn(1))},[e.createVNode(J._sfc_main,{name:"chevron-right",size:14})],8,ld)])]),e.createVNode(ma,{list:e.unref(w),schema:e.unref(Se),readonly:e.unref(X)||Be.value,onChange:e.unref(ve)},null,8,["list","schema","readonly","onChange"]),e.unref(L)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(k)||e.unref(x),"aria-label":e.unref(u).columnProperties},[e.createElementVNode("div",id,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(u).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(u).header),1),e.createElementVNode("input",{value:e.unref(L).column.header,onInput:V[23]||(V[23]=b=>e.unref(v).setColumn(e.unref(L).index,"header",he(b)))},null,40,sd)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(u).field),1),e.createElementVNode("input",{value:e.unref(L).column.field,list:e.unref(Se)?`${_}-fields`:void 0,onChange:V[24]||(V[24]=b=>e.unref(v).setColumn(e.unref(L).index,"field",he(b)))},null,40,cd)]),e.unref(Se)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${_}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Se).fields,b=>(e.openBlock(),e.createElementBlock("option",{key:b.field,value:b.field},e.toDisplayString(b.label)+" · "+e.toDisplayString(b.type)+" "+e.toDisplayString(b.unit),9,ud))),128))],8,dd)):e.createCommentVNode("",!0)]),e.createElementVNode("div",md,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(u).formatGroup),1),e.createElementVNode("div",pd,[e.createElementVNode("label",fd,[e.createTextVNode(e.toDisplayString(e.unref(u).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(L).column.widthMm,disabled:Be.value,onChange:V[25]||(V[25]=b=>e.unref(v).setColumn(e.unref(L).index,"widthMm",he(b)))},null,40,vd)]),e.createElementVNode("label",gd,[e.createTextVNode(e.toDisplayString(e.unref(u).semantic),1),e.createElementVNode("select",{value:e.unref(L).column.semanticRole||"text",onChange:V[26]||(V[26]=b=>e.unref(v).setColumn(e.unref(L).index,"semanticRole",he(b)))},[e.createElementVNode("option",yd,e.toDisplayString(e.unref(u).identifier),1),e.createElementVNode("option",bd,e.toDisplayString(e.unref(u).dimension),1),e.createElementVNode("option",kd,e.toDisplayString(e.unref(u).measure),1),e.createElementVNode("option",Ed,e.toDisplayString(e.unref(u).date),1),e.createElementVNode("option",Sd,e.toDisplayString(e.unref(u).text),1)],40,hd)])]),e.createElementVNode("div",wd,[e.createElementVNode("span",null,e.toDisplayString(e.unref(u).bodyAlign),1),e.createVNode(ft,{"model-value":e.unref(L).column.align??e.unref(L).column.style?.align??e.unref(w).align??"left",label:e.unref(u).bodyAlign,labels:Nt.value,"auto-label":e.unref(u).autoShort,"allow-auto":"","onUpdate:modelValue":V[27]||(V[27]=b=>e.unref(v).setColumn(e.unref(L).index,"align",b))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",Nd,[e.createElementVNode("span",null,e.toDisplayString(e.unref(u).headerAlign),1),e.createVNode(ft,{"model-value":e.unref(v).headerAlignments.value[e.unref(L).index]||"left",label:e.unref(u).headerAlign,labels:Nt.value,"auto-label":e.unref(u).autoShort,"onUpdate:modelValue":V[28]||(V[28]=b=>e.unref(v).setColumn(e.unref(L).index,"headerAlign",b))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",Vd,[e.createTextVNode(e.toDisplayString(e.unref(u).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(L).column.editable===!0,onChange:V[29]||(V[29]=b=>e.unref(v).setColumn(e.unref(L).index,"editable",it(b)))},null,40,Cd)]),(e.openBlock(),e.createBlock(Zt,{key:`${e.unref(S)}:${e.unref(L).index}`,"model-value":e.unref(L).column.visual,fields:e.unref(w)?.columns.map(b=>({field:b.field,label:b.header})),readonly:e.unref(X),messages:t.visualMessages,"onUpdate:modelValue":V[30]||(V[30]=b=>e.unref(v).setColumn(e.unref(L).index,"visual",b))},null,8,["model-value","fields","readonly","messages"])),e.createElementVNode("div",Md,[e.createElementVNode("span",null,e.toDisplayString(e.unref(u).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(u).moveColumnLeft,title:e.unref(u).moveColumnLeft,disabled:Be.value||e.unref(I)<=0,onClick:V[31]||(V[31]=b=>e.unref(we)(-1))},[e.createVNode(J._sfc_main,{name:"chevron-left",size:13})],8,xd),e.createElementVNode("button",{type:"button","aria-label":e.unref(u).moveColumnRight,title:e.unref(u).moveColumnRight,disabled:Be.value||e.unref(I)>=e.unref(w).columns.length-1,onClick:V[32]||(V[32]=b=>e.unref(we)(1))},[e.createVNode(J._sfc_main,{name:"chevron-right",size:13})],8,Bd),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(u).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(L).column.hidden!==!0,disabled:Be.value||e.unref(L).column.hidden!==!0&&e.unref(w).columns.filter(b=>!b.hidden).length===1,onChange:V[33]||(V[33]=b=>e.unref(v).setColumn(e.unref(L).index,"hidden",!it(b)))},null,40,Dd)])])],8,rd)):e.createCommentVNode("",!0),e.unref(wt)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${_}-directory`,ref_key:"directoryPanel",ref:sn,role:"dialog","aria-label":e.unref(u).columnDirectory,class:"mr-designer-directory",onKeydown:V[45]||(V[45]=e.withKeys((...b)=>e.unref(ee).escape&&e.unref(ee).escape(...b),["esc"])),onFocusout:V[46]||(V[46]=(...b)=>e.unref(ee).leave&&e.unref(ee).leave(...b))},[e.createElementVNode("div",Td,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(u).columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(w).columns.length),1)]),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).closeDirectory,onClick:V[34]||(V[34]=b=>e.unref(ee).close(!0))},[e.createVNode(J._sfc_main,{name:"close",size:15})],8,_d)]),e.createElementVNode("div",Id,[e.createVNode(J._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:cn,"onUpdate:modelValue":V[35]||(V[35]=b=>e.isRef(R)?R.value=b:null),type:"search","aria-label":e.unref(u).columnsSearch,placeholder:e.unref(u).columnsSearch,onKeydown:V[36]||(V[36]=(...b)=>e.unref(ee).searchKeydown&&e.unref(ee).searchKeydown(...b))},null,40,Pd),[[e.vModelText,e.unref(R)]]),e.unref(R)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(u).clearSearch,title:e.unref(u).clearSearch,onClick:V[37]||(V[37]=b=>R.value="")},[e.createVNode(J._sfc_main,{name:"close",size:13})],8,Rd)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ld,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(k)||e.unref(x)||!e.unref(B).length,onClick:V[38]||(V[38]=b=>e.unref(v).selectVisible(!0))},e.toDisplayString(e.unref(u).selectVisible),9,Ad),e.unref(H).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:V[39]||(V[39]=(...b)=>e.unref(v).clearSelection&&e.unref(v).clearSelection(...b))},e.toDisplayString(e.unref(u).clearSelection),1)):e.createCommentVNode("",!0),e.unref(H).length?(e.openBlock(),e.createElementBlock("span",Fd,e.toDisplayString(e.unref(u).columnsSelected)+" "+e.toDisplayString(e.unref(H).length),1)):(e.openBlock(),e.createElementBlock("span",Hd,e.toDisplayString(e.unref(B).length)+" / "+e.toDisplayString(e.unref(w).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:dn,class:"mr-designer-column-list","aria-label":e.unref(u).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ee).windowColumns.value,({column:b,index:W})=>(e.openBlock(),e.createElementBlock("div",{key:W,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(I)===W}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(u).selectColumn} ${b.header}`,checked:e.unref(H).includes(W),disabled:t.readonly||e.unref(k)||e.unref(x),onChange:ye=>e.unref(v).toggleColumn(W,it(ye))},null,40,Gd),e.createElementVNode("button",{type:"button","data-column-index":W,"aria-pressed":e.unref(I)===W,tabindex:e.unref(ln)===W?0:-1,onClick:ye=>e.unref(ee).choose(W),onKeydown:V[40]||(V[40]=(...ye)=>e.unref(ee).navigate&&e.unref(ee).navigate(...ye))},[e.createElementVNode("span",jd,e.toDisplayString(W+1),1),e.createElementVNode("span",Ud,[e.createElementVNode("strong",null,e.toDisplayString(b.header),1),e.createElementVNode("small",null,e.toDisplayString(b.field),1)]),e.unref(I)===W?(e.openBlock(),e.createBlock(J._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,zd)],2))),128)),e.unref(B).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",qd,[e.createVNode(J._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(u).noColumns),1)]))],8,Od),e.unref(B).length>e.unref(ee).windowSize?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mr-designer-directory-pages","aria-label":e.unref(u).columnDirectory},[e.createElementVNode("button",{type:"button",disabled:e.unref(ee).windowStart.value===0,"aria-label":e.unref(u).previousColumns,onClick:V[41]||(V[41]=b=>e.unref(ee).stepWindow(-1))},[e.createVNode(J._sfc_main,{name:"chevron-left",size:14})],8,Kd),e.createElementVNode("span",null,e.toDisplayString(e.unref(u).columnWindow.replace("{start}",String(e.unref(ee).windowStart.value+1)).replace("{end}",String(Math.min(e.unref(B).length,e.unref(ee).windowStart.value+e.unref(ee).windowSize))).replace("{total}",String(e.unref(B).length))),1),e.createElementVNode("button",{type:"button",disabled:e.unref(ee).windowStart.value+e.unref(ee).windowSize>=e.unref(B).length,"aria-label":e.unref(u).nextColumns,onClick:V[42]||(V[42]=b=>e.unref(ee).stepWindow(1))},[e.createVNode(J._sfc_main,{name:"chevron-right",size:14})],8,Jd)],8,Wd)):e.createCommentVNode("",!0),e.unref(H).length?(e.openBlock(),e.createElementBlock("div",Yd,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(u).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(u).batchBody,disabled:t.readonly||e.unref(k)||e.unref(x),onChange:V[43]||(V[43]=b=>Mt(b,"align"))},[e.createElementVNode("option",Xd,e.toDisplayString(e.unref(u).chooseAlignment),1),e.createElementVNode("option",Zd,e.toDisplayString(e.unref(u).auto),1),e.createElementVNode("option",eu,e.toDisplayString(e.unref(u).left),1),e.createElementVNode("option",tu,e.toDisplayString(e.unref(u).center),1),e.createElementVNode("option",nu,e.toDisplayString(e.unref(u).right),1),e.createElementVNode("option",au,e.toDisplayString(e.unref(u).justify),1)],40,Qd)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(u).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(u).batchHeader,disabled:t.readonly||e.unref(k)||e.unref(x),onChange:V[44]||(V[44]=b=>Mt(b,"headerAlign"))},[e.createElementVNode("option",lu,e.toDisplayString(e.unref(u).chooseAlignment),1),e.createElementVNode("option",ru,e.toDisplayString(e.unref(u).left),1),e.createElementVNode("option",iu,e.toDisplayString(e.unref(u).center),1),e.createElementVNode("option",su,e.toDisplayString(e.unref(u).right),1),e.createElementVNode("option",cu,e.toDisplayString(e.unref(u).justify),1)],40,ou)])])):e.createCommentVNode("",!0)],40,$d)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",du,e.toDisplayString(e.unref(u).noColumns),1))],64)):e.unref(T)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",uu,[e.createElementVNode("button",{type:"button",title:e.unref(u).duplicateComponent,"aria-label":e.unref(u).duplicateComponent,disabled:e.unref(X)||se.value||!e.unref(oe),onClick:V[47]||(V[47]=(...b)=>e.unref(q).duplicate&&e.unref(q).duplicate(...b))},e.toDisplayString(e.unref(Z).messages.value.duplicate),9,mu),e.createElementVNode("button",{type:"button",title:e.unref(u).removeComponent,"aria-label":e.unref(u).removeComponent,disabled:e.unref(X)||se.value||!e.unref(oe),onClick:V[48]||(V[48]=(...b)=>e.unref(q).remove&&e.unref(q).remove(...b))},[e.createVNode(J._sfc_main,{name:"close",size:14}),e.createTextVNode(" "+e.toDisplayString(e.unref(u).removeComponent),1)],8,pu)]),e.unref(y).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",fu,[e.createTextVNode(e.toDisplayString(e.unref(u).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[49]||(V[49]=b=>e.isRef(j)?j.value=b:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).template.pages,(b,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(e.unref(Ue)(b,W,e.unref(u).page)),9,vu))),128))],512),[[e.vModelSelect,e.unref(j),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",gu,[e.createTextVNode(e.toDisplayString(e.unref(u).components),1),e.createElementVNode("select",{value:e.unref(U)&&e.unref(U).pageIndex===e.unref(j)?e.unref(U).componentIndex:-1,onChange:V[50]||(V[50]=b=>e.unref(Ce)({pageIndex:e.unref(j),componentIndex:Number(he(b))}))},[e.createElementVNode("option",yu,e.toDisplayString(e.unref(u).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Et.value,b=>(e.openBlock(),e.createElementBlock("option",{key:b.index,value:b.index},e.toDisplayString(b.index+1)+" · "+e.toDisplayString(b.name),9,bu))),128))],40,hu)]),e.unref(q).selections.value.length?(e.openBlock(),e.createElementBlock("div",ku,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(q).selections.value.length)+" "+e.toDisplayString(e.unref(u).component),1),e.createElementVNode("button",{type:"button",disabled:e.unref(X),onClick:V[51]||(V[51]=(...b)=>e.unref(q).toggleLock&&e.unref(q).toggleLock(...b))},e.toDisplayString(e.unref(q).allLocked.value?e.unref(u).unlockSelection:e.unref(u).lockSelection),9,Eu),e.createElementVNode("select",{"aria-label":e.unref(u).alignSelection,disabled:e.unref(X)||se.value||e.unref(q).selections.value.length<2,onChange:V[52]||(V[52]=b=>{e.unref(q).align(he(b)),b.target.value=""})},[e.createElementVNode("option",wu,e.toDisplayString(e.unref(u).alignSelection),1),e.createElementVNode("option",Nu,e.toDisplayString(e.unref(u).leftEdges),1),e.createElementVNode("option",Vu,e.toDisplayString(e.unref(u).centers),1),e.createElementVNode("option",Cu,e.toDisplayString(e.unref(u).rightEdges),1),e.createElementVNode("option",Mu,e.toDisplayString(e.unref(u).topEdges),1),e.createElementVNode("option",xu,e.toDisplayString(e.unref(u).middles),1),e.createElementVNode("option",Bu,e.toDisplayString(e.unref(u).bottomEdges),1)],40,Su),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||se.value||e.unref(q).selections.value.length<3,onClick:V[53]||(V[53]=b=>e.unref(q).distribute("horizontal"))},e.toDisplayString(e.unref(u).horizontalSpacing),9,Du),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||se.value||e.unref(q).selections.value.length<3,onClick:V[54]||(V[54]=b=>e.unref(q).distribute("vertical"))},e.toDisplayString(e.unref(u).verticalSpacing),9,$u),e.unref(q).allLocked.value?(e.openBlock(),e.createElementBlock("small",Tu,e.toDisplayString(e.unref(u).sessionLock),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(oe)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",_u,[e.createElementVNode("button",{type:"button",disabled:e.unref(X)||se.value||e.unref(U)?.componentIndex===0,onClick:V[55]||(V[55]=b=>e.unref(q).reorder(-1))},e.toDisplayString(e.unref(u).backward),9,Iu),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||se.value||e.unref(U)?.componentIndex===(e.unref(y).template.pages[e.unref(j)]?.components.length??0)-1,onClick:V[56]||(V[56]=b=>e.unref(q).reorder(1))},e.toDisplayString(e.unref(u).forward),9,Pu)]),e.createVNode(Ir,{component:e.unref(oe),"geometry-disabled":se.value,disabled:e.unref(X)||e.unref(q).locked(e.unref(U)),messages:e.unref(u),repeat:e.unref(y).template.repeat,schema:kt.value,schemas:t.dataSchemas,datasets:t.datasets,onGeometry:e.unref(q).geometry,onPatch:e.unref(We)},null,8,["component","geometry-disabled","disabled","messages","repeat","schema","schemas","datasets","onGeometry","onPatch"]),e.unref(oe).kind==="list"?(e.openBlock(),e.createBlock(as,{key:0,list:e.unref(oe),disabled:e.unref(X)||se.value,messages:e.unref(u),onCommand:e.unref(Re)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Ru,e.toDisplayString(e.unref(u).noComponent),1))],64)):e.unref(T)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(u).templateDetails),1),e.createElementVNode("label",Lu,[e.createTextVNode(e.toDisplayString(e.unref(u).name),1),e.createElementVNode("input",{value:e.unref(y).name,disabled:t.readonly||e.unref(k)||e.unref(x),onInput:V[57]||(V[57]=b=>e.unref(v).setName(he(b)))},null,40,Au)]),e.createElementVNode("label",Fu,[e.createTextVNode(e.toDisplayString(e.unref(u).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(y).description,disabled:t.readonly||e.unref(k)||e.unref(x),onInput:V[58]||(V[58]=b=>e.unref(v).setDescription(he(b)))},null,40,Hu)]),e.createVNode(ni,{document:e.unref(y),"page-index":e.unref(j),disabled:e.unref(X),messages:e.unref(u),onSelect:V[59]||(V[59]=b=>j.value=b),onCommand:on,onLocate:V[60]||(V[60]=b=>{e.unref(Ce)({pageIndex:e.unref(j),componentIndex:b}),xe("design")})},null,8,["document","page-index","disabled","messages"]),e.createVNode(Ei,{document:e.unref(y),datasets:Object.keys(t.datasets??{}),schemas:t.dataSchemas,disabled:e.unref(X),messages:e.unref(u),onChange:V[61]||(V[61]=b=>{e.unref(v).transaction(W=>{b?W.template.repeat=b:delete W.template.repeat})})},null,8,["document","datasets","schemas","disabled","messages"]),e.createElementVNode("details",Ou,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(u).technicalDetails),1),e.createElementVNode("dl",Gu,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(u).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(y).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(u).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(y).revision||e.unref(u).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(u).advancedTitle),1),e.createElementVNode("label",zu,[e.createTextVNode(e.toDisplayString(e.unref(u).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":V[62]||(V[62]=b=>e.isRef(C)?C.value=b:null),class:"mr-designer-json","aria-label":e.unref(u).json,disabled:t.readonly||e.unref(k),spellcheck:"false"},null,8,ju),[[e.vModelText,e.unref(C)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(k),onClick:V[63]||(V[63]=(...b)=>e.unref(v).applyJson&&e.unref(v).applyJson(...b))},e.toDisplayString(e.unref(u).applyJson),9,Uu)],64)),e.unref(x)?(e.openBlock(),e.createElementBlock("p",qu,e.toDisplayString(e.unref(u).jsonPending),1)):e.createCommentVNode("",!0)],10,Uc)])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",{class:"mr-designer-preview","aria-label":e.unref(u).previewTitle},[e.unref(M)?(e.openBlock(),e.createElementBlock("div",Ku,e.toDisplayString(e.unref(M)),1)):e.createCommentVNode("",!0),e.unref(c).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",Ju,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(c).errors,b=>(e.openBlock(),e.createElementBlock("li",{key:b.path},e.toDisplayString(b.path)+":"+e.toDisplayString(b.message),1))),128))])),e.unref(nt)&&e.unref(c).ok?e.withDirectives((e.openBlock(),e.createBlock(wo,{key:`canvas-${e.unref(y).id}`,document:e.unref(y),selection:e.unref(U),selections:e.unref(q).selections.value,locked:e.unref(q).locked,"active-column-index":e.unref(I),"page-index":e.unref(j),active:e.unref(Y)==="design"&&(e.unref(T)!=="tools"||e.unref(pe)),datasets:t.datasets,disabled:e.unref(X)||se.value||e.unref(v).isToolPending("rules"),messages:e.unref(u),onSelect:e.unref(Ce),onGeometry:e.unref(q).geometry,onMove:e.unref(q).move,onDelete:e.unref(q).remove,onDuplicate:e.unref(q).duplicate,onColumn:e.unref(D).activate,onWidth:V[64]||(V[64]=(b,W)=>e.unref(v).setColumn(b,"widthMm",String(W)))},null,8,["document","selection","selections","locked","active-column-index","page-index","active","datasets","disabled","messages","onSelect","onGeometry","onMove","onDelete","onDuplicate","onColumn"])),[[e.vShow,e.unref(Y)==="design"]]):e.createCommentVNode("",!0),e.unref(Le)&&e.unref(Ne)&&e.unref(c).ok?e.withDirectives((e.openBlock(),e.createBlock(e.unref(mt.ReportPreview),{key:`preview-${e.unref(y).id}`,"report-id":"draft",fetcher:e.unref(Ne),refresh:{retainPrevious:!0,key:e.unref(y).id},messages:{title:e.unref(u).previewTitle,columnDirectory:e.unref(u).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","refresh","messages"])),[[e.vShow,e.unref(Y)==="preview"]]):e.createCommentVNode("",!0),e.unref(c).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Yu,e.toDisplayString(e.unref(u).invalid),1))],8,Wu),[[e.vShow,e.unref(T)!=="tools"||e.unref(pe)]])],2)],40,ic))}}),an=J._export_sfc(Qu,[["__scopeId","data-v-5a3e7dc6"]]),Xu=Object.freeze(Object.defineProperty({__proto__:null,default:an},Symbol.toStringTag,{value:"Module"})),Zu={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:"调序"}},em={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:"契约字段,不执行接口查询"},tm={restoreDraft:"恢复工具草稿",catalog:"规则与字段",searchFields:"搜索字段、类型或单位",useField:"使用此字段",shown:"显示",explanation:"计算解释",sourceValues:"源值",expression:"表达式",result:"结果",notChecked:"修改后请重新验算",nullReason:"空值依规则保留;空值传播与除零策略见计算边界。",sourceHint:"最多展示 5 条明细;分组和全量聚合以当前验算范围为准。",pending:"未应用配置",detail:"主从",matrix:"矩阵",matrixHierarchy:"层级维度与小计",matrixHierarchyHint:"分列展示行维度,生成合并列标题。小计直接统计原始样本;空值与空字符串分别保留。",matrixSort:"同级排序",matrixSourceOrder:"来源顺序",matrixAscending:"升序",matrixDescending:"降序",matrixPrefixSubtotal:"此级小计",matrixEmptyLabel:"空维度显示",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:"否",if:"条件取值",round:"四舍五入",abs:"绝对值",concat:"拼接文本",trim:"去除首尾空白",upper:"大写",lower:"小写",dateYear:"日期年份",dateMonth:"日期月份",dateDay:"日期日号",all:"全部满足",any:"任一满足",not:"条件不成立",conditionGroup:"条件组合",addCondition:"添加条件",compareField:"比较字段",compareValue:"固定值",between:"范围内(含边界)",contains:"包含文本",isNull:"为空值",isNotNull:"非空值",valueKind:"值语义",calendarDate:"日历日",upperBound:"上限",lowerBound:"下限",functionHelp:"函数用法",thenValue:"成立时",elseValue:"否则",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:"启用"},nm={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:"下拉选择",paramMultiSelect:"多选",paramCascader:"层级选择",paramNumberRange:"数值范围",paramMinItems:"最少选择项数",paramMaxItems:"最多选择项数",paramChildAdd:"添加下级",paramTreeHint:"选择完整叶节点路径;同级选项值须唯一,最多 16 级。"},am={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} 组"},om={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:"模板目录响应格式无效"},lm={applyFirst:"请先应用当前配置或修正模板问题,再切换打印预览。",saveFailed:"模板尚未保存,请检查提示后重试。",title:"标识打印",preview:"打印预览",design:"设计标签",records:"预览记录",all:"全部记录",record:"记录序号",single:"单条预览",faces:"个版面",labels:"张标签",session:"当前会话模板",flow:"成品预览 · 按记录生成",designHint:"设计使用前 3 条样本 · 完整记录用于预览和打印",guide:"使用指引",help:"先选成品样式与显示字段即可使用。需要追加内容或自由排版时,进入设计标签。",size:"纸张与份数",bindings:"字段与码图",count:"条记录",invalidCopies:"份数待校验",sheet:"A4 标签拼版",sheetHint:"{columns} 列 × {rows} 行 · 每页 {capacity} 张,保持原尺寸",sheetUnavailable:"当前版面尺寸不适合 A4 拼版,请统一版面尺寸或使用原尺寸打印。",printHint:"先试打一张,使用同规格纸张与 100% 比例核对尺寸和扫码。",empty:"暂无可打印记录",save:"保存标签模板",layout:"成品样式",materialPreset:"物料卡",pairedPreset:"双版标识",warehousePreset:"仓储标签",fields:"显示字段",findField:"查找业务字段",noFields:"没有匹配的字段",fieldLimit:"最多显示 5 个字段,取消已选项后可继续选择。",removeField:"取消字段",fieldSearchHint:"每次显示前 30 项,可搜索完整字段目录。",brand:"标题与品牌",brandName:"主标题",brandTagline:"副标题(可选)",applyLayout:"应用新样式",applyContent:"更新内容",contentHint:"标题与字段原位更新,保留手工排版和追加内容。",contentNeedsDesign:"新增内容与现有设计重叠或缺少可识别位置,请还原轻配置后进入设计调整,或确认重建样式。",rebuildCurrent:"重新套用所选样式",applyLayoutFirst:"样式尚未应用,请先确认重建或还原轻配置后继续。",rebuildTitle:"确认重建标签布局",rebuildDescription:"将替换当前全部版面和手工调整,保留打印份数。进入设计后可撤销本次重建。",cancelRebuild:"继续调整",confirmRebuild:"确认重建",invalidSavedTemplate:"保存服务返回的模板标识不一致,请重试。",designLoading:"正在加载标签设计器…",designLoadFailed:"标签设计器加载失败,请重试。",restoreConfiguration:"还原轻配置",choosePreset:"请选择成品样式后更新标签,或还原轻配置继续使用当前模板。",discardTitle:"保留标签修改",discardDescription:"标签设计或轻配置存在未保存的修改,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃并继续",reflowHint:"按所选样式重新排版,可在设计中撤销恢复。",customTemplate:"自定义模板",readyTemplate:"成品模板 · 可直接打印"};function rm(t){const o=e.ref(!1),a=e.shallowRef(),l=e.computed(()=>o.value||t.blocked?.()===!0);let n=!1,r;function i(){n=!0,r?.abort()}e.getCurrentScope()&&e.onScopeDispose(i);async function s(h){if(l.value||n)return;const v=new AbortController;r=v,o.value=!0,a.value=void 0;try{const y=await h({signal:v.signal});if(!n)return y}catch(y){n||(a.value=y,t.onError?.(y))}finally{r=void 0,o.value=!1}}async function d(){for(const h of t.guards?.()??[])if(n||!await h())return!1;return!n}async function g(){return await s(async v=>{const y=await t.prepare?.();if(!y||v.signal.aborted||!t.apply)return!1;const C=z.parseReportTemplate(y);return await t.apply(C,v)===!1||v.signal.aborted?!1:(await t.applied?.(C),!0)})===!0}return{operating:o,busy:l,error:a,run:s,guardChanges:d,apply:g,dispose:i}}const im=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-DnYImiXu.cjs"))),sm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-D4RS5Bpg.cjs"))),cm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-DcT9xI1v.cjs"))),dm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-C-6C9rd2.cjs"))),um=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportBatchPanel-YVj5IO5y.cjs"))),mm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportTemplateLibrary-BaWodmpm.cjs"))),pm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-CUHFFiNM.cjs"))),fm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-DZMyiX5I.cjs"))),vm=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportLabelStudio-Cqhita1b.cjs")));exports.COLUMN_VISUAL_MESSAGES=Xt;exports.ChartBindingInspector=Jt;exports.ColumnVisualEditor=Zt;exports.DEFAULT_RULE_EDITOR_MESSAGES=tm;exports.DESIGNER_GUIDE_MESSAGES=Ft;exports.EXCEL_BINDING_MESSAGES=em;exports.ExcelBindingWizard=sm;exports.LABEL_STUDIO_MESSAGES=lm;exports.PARAM_EDITOR_MESSAGES=nm;exports.ParamEditor=dm;exports.REPORT_BATCH_MESSAGES=am;exports.ReportBatchPanel=um;exports.ReportLabelStudio=vm;exports.ReportTemplateEditor=an;exports.ReportTemplateEditor$1=Xu;exports.ReportTemplateLibrary=mm;exports.RuleEditor=cm;exports.TEMPLATE_EDITOR_MESSAGES=me;exports.TEMPLATE_LIBRARY_MESSAGES=om;exports.TEMPLATE_PRODUCT_MESSAGES=Yt;exports.TEMPLATE_RECOVERY_MESSAGES=Qt;exports.TEMPLATE_REVIEW_MESSAGES=Zu;exports.TemplateOutlinePanel=pm;exports.TemplateReusePanel=fm;exports.TemplateReviewPanel=im;exports.createTemplateDraftStorage=Ks;exports.useDesignerViews=Wt;exports.useTemplateDiscard=nn;exports.useTemplateToolDraft=As;exports.useTemplateWorkbench=rm;