@agile-team/mach-report 2.10.0 → 2.11.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 (111) hide show
  1. package/README.md +6 -2
  2. package/dist/ExcelBindingWizard-CjIiVox-.cjs +1 -0
  3. package/dist/ExcelBindingWizard-Dxm-K5HL.js +1240 -0
  4. package/dist/ParamEditor-D-Hf5xfO.cjs +1 -0
  5. package/dist/ParamEditor-DRGxzxeO.js +381 -0
  6. package/dist/ReportBatchPanel-BYgg0EDB.cjs +1 -0
  7. package/dist/ReportBatchPanel-Bby5yLzU.js +287 -0
  8. package/dist/ReportPreview-DWXROHBP.cjs +6 -0
  9. package/dist/ReportPreview-DiNXhQI0.js +4138 -0
  10. package/dist/ReportTemplateLibrary-C6CO7YCT.cjs +1 -0
  11. package/dist/ReportTemplateLibrary-DfzDXRvr.js +260 -0
  12. package/dist/RuleEditor-C2QsOHOs.cjs +1 -0
  13. package/dist/RuleEditor-D9wQHrkf.js +2024 -0
  14. package/dist/TemplateReviewPanel-BKofGrV9.js +222 -0
  15. package/dist/TemplateReviewPanel-DwtOcLue.cjs +1 -0
  16. package/dist/analytics.cjs +1 -1
  17. package/dist/analytics.d.cts +2 -0
  18. package/dist/analytics.d.ts +2 -0
  19. package/dist/analytics.js +29 -29
  20. package/dist/batch-Bt3Fd27Z.cjs +1 -0
  21. package/dist/batch-mRqhhhjt.js +364 -0
  22. package/dist/computed-Bvk0W15F.js +521 -0
  23. package/dist/computed-CGV2a809.cjs +1 -0
  24. package/dist/config-B612mw0x.js +525 -0
  25. package/dist/config-BRoLo2oj.cjs +1 -0
  26. package/dist/designer.cjs +2 -2
  27. package/dist/designer.d.cts +659 -9
  28. package/dist/designer.d.ts +659 -9
  29. package/dist/designer.js +2030 -1824
  30. package/dist/index.cjs +8 -8
  31. package/dist/index.d.cts +147 -3
  32. package/dist/index.d.ts +147 -3
  33. package/dist/index.js +639 -592
  34. package/dist/injection-keys-Db_DyLkm.cjs +1 -0
  35. package/dist/injection-keys-e85udZCp.js +7 -0
  36. package/dist/list-cell-BuYn4tGF.cjs +1 -0
  37. package/dist/{list-cell-Dxyi7DOw.js → list-cell-ClFra1zS.js} +54 -40
  38. package/dist/matrix-DVyWiYsd.cjs +1 -0
  39. package/dist/matrix-yZsGnldA.js +227 -0
  40. package/dist/param-validation-BlHHXs6u.js +153 -0
  41. package/dist/param-validation-DCK039V1.cjs +1 -0
  42. package/dist/pdf.cjs +25 -25
  43. package/dist/pdf.d.cts +3 -0
  44. package/dist/pdf.d.ts +3 -0
  45. package/dist/pdf.js +677 -677
  46. package/dist/plugin-BDTU4D94.cjs +1 -0
  47. package/dist/plugin-Cd5G2QQn.js +22 -0
  48. package/dist/region-binding-workflow-CXDmt9Bs.js +977 -0
  49. package/dist/region-binding-workflow-DhQvu1co.cjs +3 -0
  50. package/dist/{report-params-B_VCihAh.js → report-params-B44imUd4.js} +1 -1
  51. package/dist/{report-params-CjWrjPl6.cjs → report-params-SJfhKgaX.cjs} +1 -1
  52. package/dist/server/node.d.cts +5 -2
  53. package/dist/server/node.d.ts +5 -2
  54. package/dist/server-node.cjs +1 -1
  55. package/dist/server-node.js +87 -87
  56. package/dist/server.cjs +1 -1
  57. package/dist/server.d.cts +201 -2
  58. package/dist/server.d.ts +201 -2
  59. package/dist/server.js +557 -658
  60. package/dist/style.css +1 -1
  61. package/dist/template-registry-WNXdkiET.js +506 -0
  62. package/dist/template-registry-ukBGlm8N.cjs +1 -0
  63. package/dist/template-review-BXp2oyqg.cjs +1 -0
  64. package/dist/template-review-BdcXSYbx.js +1616 -0
  65. package/dist/tree-BX380Rr7.cjs +1 -0
  66. package/dist/tree-CqcQ99NM.js +172 -0
  67. package/dist/{validate-UUy9yP4K.js → validate-7s0yn6ii.js} +44 -44
  68. package/dist/validate-DsRiNw8h.cjs +1 -0
  69. package/dist/vue/async.d.cts +93 -4
  70. package/dist/vue/async.d.ts +93 -4
  71. package/dist/vue/index.d.cts +145 -7
  72. package/dist/vue/index.d.ts +145 -7
  73. package/dist/vue-async.cjs +1 -1
  74. package/dist/vue-async.js +5 -5
  75. package/dist/vue.cjs +1 -1
  76. package/dist/vue.js +116 -113
  77. package/dist/{workbook-session-B-bW5_yR.js → workbook-session-BKOTwcoq.js} +1 -1
  78. package/dist/{workbook-session-D7RtdNo0.cjs → workbook-session-CLYLhZWu.cjs} +1 -1
  79. package/dist/worker.cjs +1 -1
  80. package/dist/worker.d.cts +5 -2
  81. package/dist/worker.d.ts +5 -2
  82. package/dist/worker.js +1 -1
  83. package/dist/xlsx.cjs +3 -3
  84. package/dist/xlsx.d.cts +129 -2
  85. package/dist/xlsx.d.ts +129 -2
  86. package/dist/xlsx.js +336 -242
  87. package/package.json +1 -1
  88. package/dist/ExcelBindingWizard-CF7RplWm.cjs +0 -1
  89. package/dist/ExcelBindingWizard-qhwEderR.js +0 -842
  90. package/dist/ReportPreview-BE1tCHqE.js +0 -4604
  91. package/dist/ReportPreview-QKRKQOe3.cjs +0 -6
  92. package/dist/RuleEditor-BA36yIV6.js +0 -1723
  93. package/dist/RuleEditor-CczJ6mJm.cjs +0 -1
  94. package/dist/TemplateReviewPanel-CHi4Alqa.cjs +0 -1
  95. package/dist/TemplateReviewPanel-Dz0G5o83.js +0 -217
  96. package/dist/binding-preview-BWsdf_z2.cjs +0 -2
  97. package/dist/binding-preview-DILq0-0f.js +0 -649
  98. package/dist/decimal-CI1OAczk.js +0 -87
  99. package/dist/decimal-CQA0xJex.cjs +0 -1
  100. package/dist/list-cell-CyM1ZlRN.cjs +0 -1
  101. package/dist/matrix-BbXarwyk.js +0 -661
  102. package/dist/matrix-Cm65WLLP.cjs +0 -1
  103. package/dist/param-validation-BWNjLcN0.js +0 -116
  104. package/dist/param-validation-CiTxFeZ8.cjs +0 -1
  105. package/dist/plugin-CThk42vJ.cjs +0 -1
  106. package/dist/plugin-tGn7-5oF.js +0 -25
  107. package/dist/template-registry-CGWTLtIA.cjs +0 -1
  108. package/dist/template-registry-DzlQs3OF.js +0 -434
  109. package/dist/template-review-D1RoNCPw.cjs +0 -1
  110. package/dist/template-review-fnteXRng.js +0 -1473
  111. package/dist/validate-Bf6ccFr2.cjs +0 -1
package/dist/designer.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Se=require("@agile-team/mach-report/vue"),A=require("@agile-team/mach-report"),W=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),$e=require("./list-cell-CyM1ZlRN.cjs"),pe=require("./style-UgIJSA1F.cjs"),we=96/25.4;function xe(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((d,l)=>d+l,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function Q(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:xe(t)}}function se(t,d){return d?t.template.pages[d.pageIndex]?.components[d.componentIndex]:void 0}function je(t,d="detail"){const l={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:d,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...l,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...l,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...l,kind:t,widthMm:48,heightMm:24,imageData:`data:image/svg+xml;charset=utf-8,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="180" height="90" viewBox="0 0 180 90"><rect width="180" height="90" rx="5" fill="#eff6ff"/><path d="m25 68 32-32 25 23 27-35 45 44" fill="none" stroke="#94b8e5" stroke-width="3"/><circle cx="45" cy="24" r="7" fill="#bfd5ef"/></svg>')}`}}function Ne(t,d,l=!1){const a=Math.max(2,Math.min(d.widthMm,t.widthMm)),o=Math.max(2,Math.min(d.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(d.widthMm-a,t.leftMm)),topMm:Math.max(0,Math.min(d.heightMm-(l?2:o),t.topMm)),widthMm:a,heightMm:o}}function ve(t,d){const l=t.widthMm;if(Object.assign(t,{leftMm:d.leftMm,topMm:d.topMm,widthMm:d.widthMm}),t.kind!=="list")t.heightMm=d.heightMm;else if(l>0&&d.widthMm!==l){const a=d.widthMm/l;t.columns.forEach(o=>{o.widthMm=Math.round(o.widthMm*a*100)/100}),t.widthMm=t.columns.reduce((o,f)=>o+f.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(o=>o.widthMm))}}function Ue(t,d,l){if(d===l||!t.columns[d]||!t.columns[l])return!1;if(t.headerGrid){if(A.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:f})=>(f.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const o=ge(t);o.forEach(f=>{f.splice(l,0,f.splice(d,1)[0])}),t.headerGrid=he(o,t.columns.map(f=>f.widthMm),t.headerGrid.rowHeightsMm??o.map(()=>8))}return t.columns.splice(l,0,t.columns.splice(d,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(a=>a.widthMm)),!0}function ge(t){if(!t.headerGrid)return[t.columns.map(l=>({text:l.header}))];const d=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:l,ri:a,ci:o}of A.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)d[a][o]=l;return d}function he(t,d,l){const a=new Set;return{cells:t.map((f,p)=>f.flatMap((v,r)=>{if(a.has(`${p}:${r}`))return[];if(!v)return[null];for(let h=p;h<p+(v.rowSpan??1);h++)for(let b=r;b<r+(v.colSpan??1);b++)(h!==p||b!==r)&&a.add(`${h}:${b}`);return[v]})),colWidthsMm:d,rowHeightsMm:l}}function We(t){const d=ge(t),l=t.headerGrid?.rowHeightsMm??d.map(()=>8);d.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=he(d,t.columns.map(a=>a.widthMm),[8,...l])}function Ke(t,d,l,a){if(l>=a||l<0||a>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const o=ge(t),f=o[d];if(!f)throw new Error("表头行不存在。");const p=f.slice(l,a+1);if(p.some(r=>!r||(r.colSpan??1)!==1||(r.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const v=p[0];f[l]={...v,colSpan:a-l+1};for(let r=l+1;r<=a;r++)f[r]=null;t.headerGrid=he(o,t.columns.map(r=>r.widthMm),t.headerGrid?.rowHeightsMm??[8])}function Je(t,d,l){if(!t.headerGrid)return;const o=A.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:h,ci:b,cell:M})=>d>=h&&d<h+(M.rowSpan??1)&&l>=b&&l<b+(M.colSpan??1));if(!o)return;const f=ge(t),{ri:p,ci:v,cell:r}=o;for(let h=p;h<p+(r.rowSpan??1);h++)for(let b=v;b<v+(r.colSpan??1);b++){const M={...r,text:h===f.length-1?t.columns[b].header:r.text};delete M.colSpan,delete M.rowSpan,f[h][b]=M}t.headerGrid=he(f,t.columns.map(h=>h.widthMm),t.headerGrid.rowHeightsMm??f.map(()=>8))}function qe(t){const d=e.ref(),l=e.ref(.8),a=e.ref(0),o=e.ref(0),f=e.computed(()=>l.value*we),p=e.computed(()=>t.document.template.pages[t.pageIndex]),v=e.computed(()=>p.value.widthMm*f.value>o.value-40);let r;function h(E){const s=d.value;if(!s)return;let c={leftMm:0,topMm:0,widthMm:p.value.widthMm,heightMm:p.value.heightMm};const y=t.selection?.pageIndex===t.pageIndex?p.value.components[t.selection.componentIndex]:void 0;E==="selection"&&y&&(c=Q(y));const V=(s.clientWidth-40)/(c.widthMm*we),N=(s.clientHeight-40)/(c.heightMm*we);l.value=Math.max(.05,Math.min(2,E==="width"?V:Math.min(V,N))),e.nextTick(()=>{s.scrollLeft=c.leftMm*f.value,s.scrollTop=c.topMm*f.value})}function b(){const E=d.value;E&&(o.value=E.clientWidth,a.value=E.scrollWidth>E.clientWidth?Math.round(E.scrollLeft/(E.scrollWidth-E.clientWidth)*100):0)}function M(E){const s=d.value;s&&(s.scrollLeft=(s.scrollWidth-s.clientWidth)*E/100),a.value=E}async function B(){await e.nextTick();const E=d.value,s=t.selection;if(!E||s?.pageIndex!==t.pageIndex)return;const c=p.value.components[s.componentIndex];if(!c)return;const y=Q(c);if(c.kind==="list"&&t.columnIndex!==void 0&&t.columnIndex>=0){const w=c;y.leftMm+=w.columns.slice(0,t.columnIndex).reduce((x,T)=>x+T.widthMm,0),y.widthMm=w.columns[t.columnIndex]?.widthMm??y.widthMm}const V=y.leftMm*f.value,N=y.topMm*f.value,g=V+y.widthMm*f.value,S=N+y.heightMm*f.value;V<E.scrollLeft?E.scrollLeft=V:g>E.scrollLeft+E.clientWidth-40&&(E.scrollLeft=Math.max(0,Math.min(V,g-E.clientWidth+40))),N<E.scrollTop?E.scrollTop=N:S>E.scrollTop+E.clientHeight-40&&(E.scrollTop=Math.max(0,Math.min(N,S-E.clientHeight+40))),b()}return e.watch(()=>[t.selection,t.columnIndex,t.pageIndex],()=>{B()}),e.onMounted(()=>{b(),typeof ResizeObserver<"u"&&d.value&&(r=new ResizeObserver(b),r.observe(d.value))}),e.onBeforeUnmount(()=>r?.disconnect()),{viewport:d,zoom:l,scale:f,page:p,wide:v,fraction:a,fit:h,sync:b,navigate:M}}function Ie(t,d,l){const a=t.filter(o=>o!==d).flatMap(o=>{const f=o[l],p=l==="leftMm"?o.widthMm:xe(o);return[f,f+p/2,f+p]});return[...new Set(a)].sort((o,f)=>o-f)}function Xe(t,d){if(!t.length)return;let l=0,a=t.length;for(;l<a;){const p=l+a>>>1;t[p]<d?l=p+1:a=p}const o=t[Math.max(0,l-1)],f=t[Math.min(t.length-1,l)];return Math.abs(o-d)<Math.abs(f-d)?o:f}function Le(t,d,l,a){let o=1/0,f={value:Math.round(t*2)/2};for(const p of[0,d/2,d]){const v=Xe(l,t+p);if(v===void 0)continue;const r=Math.abs(v-t-p);r<=a&&r<o&&(o=r,f={value:v-p,guide:v})}return f}function Ye(t){let d;function l(a,o,f=!1){if(t.disabled()||a.button!==0)return;a.preventDefault(),a.stopPropagation(),d?.();const p=a.currentTarget.closest("[data-canvas-component]"),v=Q(o),r=a.clientX,h=a.clientY;let b=v,M=0;const B=t.scale.value,E=p.parentElement;let s,c;const y=()=>{for(const[$,I]of[["x",s],["y",c]])E.style.setProperty(`--mr-canvas-guide-${$}-display`,I===void 0?"none":"block"),I!==void 0&&E.style.setProperty(`--mr-canvas-guide-${$}`,`${I*B}px`)},V=()=>{M=0,y(),p.style.left=`${b.leftMm*B}px`,p.style.top=`${b.topMm*B}px`,p.style.width=`${b.widthMm*B}px`,p.style.height=`${b.heightMm*B}px`},N={leftMm:Ie(t.page().components,o,"leftMm"),topMm:Ie(t.page().components,o,"topMm")},g=$=>{const I=($.clientX-r)/B,O=($.clientY-h)/B,n=Le(v.leftMm+I,v.widthMm,N.leftMm,5/B),D=Le(v.topMm+O,v.heightMm,N.topMm,5/B);s=f?void 0:n.guide,c=f?void 0:D.guide,b=Ne(f?{...v,widthMm:Math.round((v.widthMm+I)*2)/2,heightMm:Math.round((v.heightMm+O)*2)/2}:{...v,leftMm:n.value,topMm:D.value},t.page(),o.kind==="list"),M||(M=requestAnimationFrame(V))},S=$=>{window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",w),window.removeEventListener("pointercancel",x),window.removeEventListener("keydown",T),M&&cancelAnimationFrame(M),b=$?b:v,s=void 0,c=void 0,V(),d=void 0,$&&JSON.stringify(b)!==JSON.stringify(v)&&t.commit(b)},w=()=>S(!0),x=()=>S(!1),T=$=>{$.key==="Escape"&&($.preventDefault(),x())};window.addEventListener("pointermove",g),window.addEventListener("pointerup",w),window.addEventListener("pointercancel",x),window.addEventListener("keydown",T),d=x}return e.watch(t.disabled,a=>{a&&d?.()}),e.watch(t.page,()=>d?.()),e.onBeforeUnmount(()=>d?.()),{start:l}}const Qe={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:"请先修正模板错误,再预览或保存。"},Ze={repeatPage:"每页重复",repeatNone:"不重复",repeatHeader:"页眉",repeatFooter:"页脚",textFormat:"文字样式",fontSize:"字号(pt)",fontBold:"加粗",textColor:"文字颜色",backgroundColor:"背景颜色",canvasGridLimited:"设计窗口仅显示前 2000 个单元格;最终预览与导出保留完整内容。",design:"设计",preview:"预览",componentSection:"组件",toolsSection:"工具",component:"组件",components:"组件目录",canvasHint:"点击选择 · 拖动移动 · 方向键微调 · Shift 加速 · Esc 取消",zoom:"缩放",sampleRows:"数据预览区域",resizeComponent:"调整组件尺寸",resizeColumn:"调整列宽",insertComponent:"添加组件",insertText:"文本",insertList:"明细表",insertImage:"图片",insertRect:"矩形",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,支持 PNG/JPEG/WebP/SVG",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",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:"定位字段"},ce={fitWidth:"适宽",fitPage:"适页",fitSelection:"选区",wideNavigation:"宽表导航",alignSelection:"对齐选区",leftEdges:"左对齐",centers:"水平居中",rightEdges:"右对齐",topEdges:"顶对齐",middles:"垂直居中",bottomEdges:"底对齐",horizontalSpacing:"水平等距",verticalSpacing:"垂直等距",lockSelection:"锁定位置",unlockSelection:"解锁位置",sessionLock:"位置锁定仅当前设计会话有效。",toolsPending:"工具中还有未应用的配置,请先应用或恢复后再保存模板。",...Qe,...Ze},et={class:"mr-canvas"},tt={class:"mr-canvas-heading"},nt={class:"mr-canvas-view-tools"},ot=["disabled"],lt=["aria-label"],at=["value"],rt=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],it={class:"mr-canvas-table"},st={key:1,class:"mr-canvas-table-row is-header"},ct=["onPointerdown"],dt={key:2,class:"mr-canvas-placeholder"},ut=["aria-label","onPointerdown"],mt={key:1,class:"mr-canvas-static-grid"},ft={key:0,class:"mr-canvas-grid-limit"},pt=["src"],vt=["aria-label","onPointerdown"],gt={key:0,class:"mr-canvas-navigator"},ht=["value","aria-label"],yt=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{},selections:{},locked:{type:Function},activeColumnIndex:{},pageIndex:{},datasets:{},disabled:{type:Boolean},messages:{}},emits:["select","geometry","column","width"],setup(t,{emit:d}){const l=t,a=d,o=e.computed(()=>({...ce,...l.messages})),{viewport:f,zoom:p,scale:v,page:r,wide:h,fraction:b,fit:M,sync:B,navigate:E}=qe({get document(){return l.document},get pageIndex(){return l.pageIndex},get selection(){return l.selection},get columnIndex(){return l.activeColumnIndex}}),s=e.computed(()=>r.value.components.map(n=>n.kind==="list"?(l.datasets?.[n.dataset]??[]).slice(0,3).map(D=>n.columns.map(m=>$e.resolveListSampleCell(n,m,D))):[]));function c(n,D,m){return{width:`${D*v.value}px`,opacity:m?.35:1,textAlign:n.style?.align,color:n.style?.color,backgroundColor:n.style?.backgroundColor,fontWeight:n.style?.bold?"700":"400",fontSize:`${pe.resolveFontSize(n.style).fontSizePx*p.value}px`}}function y(n){return l.locked?.({pageIndex:l.pageIndex,componentIndex:n})===!0}function V(n,D){a("select",{pageIndex:l.pageIndex,componentIndex:D,additive:n.ctrlKey||n.metaKey||n.shiftKey}),!n.ctrlKey&&!n.metaKey&&!n.shiftKey&&!y(D)&&N.start(n,r.value.components[D])}const N=Ye({scale:v,page:()=>r.value,disabled:()=>l.disabled===!0,commit:n=>a("geometry",n)});function g(n){return(l.selections??(l.selection?[l.selection]:[])).some(D=>D.pageIndex===l.pageIndex&&D.componentIndex===n)}function S(n){const D=r.value.components[n];return{left:`${D.leftMm*v.value}px`,top:`${D.topMm*v.value}px`,width:`${D.widthMm*v.value}px`,height:`${xe(D)*v.value}px`}}function w(n,D){const m=r.value.components[D];if(l.disabled||y(D)||!g(D))return;const C={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},k=C[n.key];if(!k)return;n.preventDefault(),n.stopPropagation();const _=Q(m),L=n.shiftKey?5:.5;_.leftMm+=k[0]*L,_.topMm+=k[1]*L,a("geometry",_)}function x(n){let D=0;return n.columns.map(m=>(D+=m.widthMm,D))}function T(n){return n.grid?A.resolveGridLayout(n.grid,n.widthMm,n.heightMm).cells.slice(0,2e3):[]}function $(n){return n.headerGrid?A.resolveGridLayout(n.headerGrid,n.widthMm,n.headerGrid.rowHeightsMm?.reduce((D,m)=>D+m,0)??n.headerGrid.cells.length*8).cells:[]}let I;e.watch(()=>l.disabled,n=>{n&&I?.()}),e.watch(()=>l.document,()=>I?.()),e.onBeforeUnmount(()=>I?.());function O(n,D,m){if(l.disabled||n.button!==0)return;n.preventDefault(),n.stopPropagation(),I?.();const C=n.clientX,k=D.columns[m].widthMm;let _=k;const L=n.currentTarget,j=X=>{_=Math.max(2,Math.round((k+(X.clientX-C)/v.value)*2)/2),L.style.transform=`translateX(${(_-k)*v.value}px)`},Y=()=>{window.removeEventListener("pointermove",j),window.removeEventListener("pointerup",Z),window.removeEventListener("pointercancel",U),window.removeEventListener("keydown",q),L.style.transform="",I=void 0},Z=()=>{Y(),_!==k&&a("width",m,_)},U=()=>Y(),q=X=>{X.key==="Escape"&&(X.preventDefault(),U())};window.addEventListener("pointermove",j),window.addEventListener("pointerup",Z),window.addEventListener("pointercancel",U),window.addEventListener("keydown",q),I=U}return(n,D)=>(e.openBlock(),e.createElementBlock("div",et,[e.createElementVNode("div",tt,[e.createElementVNode("span",null,e.toDisplayString(o.value.canvasHint),1),e.createElementVNode("nav",nt,[e.createElementVNode("button",{type:"button",onClick:D[0]||(D[0]=m=>e.unref(M)("width"))},e.toDisplayString(o.value.fitWidth),1),e.createElementVNode("button",{type:"button",onClick:D[1]||(D[1]=m=>e.unref(M)("page"))},e.toDisplayString(o.value.fitPage),1),e.createElementVNode("button",{type:"button",disabled:!t.selection,onClick:D[2]||(D[2]=m=>e.unref(M)("selection"))},e.toDisplayString(o.value.fitSelection),9,ot)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.zoom),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":D[3]||(D[3]=m=>e.isRef(p)?p.value=m:null),"aria-label":o.value.zoom},[[.5,.8,1,1.25].includes(e.unref(p))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("option",{key:0,value:e.unref(p)},e.toDisplayString(Math.round(e.unref(p)*100))+"%",9,at)),D[6]||(D[6]=e.createElementVNode("option",{value:.5},"50%",-1)),D[7]||(D[7]=e.createElementVNode("option",{value:.8},"80%",-1)),D[8]||(D[8]=e.createElementVNode("option",{value:1},"100%",-1)),D[9]||(D[9]=e.createElementVNode("option",{value:1.25},"125%",-1))],8,lt),[[e.vModelSelect,e.unref(p),void 0,{number:!0}]])])]),e.createElementVNode("div",{ref_key:"viewport",ref:f,class:"mr-canvas-scroll",onScrollPassive:D[4]||(D[4]=(...m)=>e.unref(B)&&e.unref(B)(...m))},[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${e.unref(r).widthMm*e.unref(v)}px`,height:`${e.unref(r).heightMm*e.unref(v)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).components,(m,C)=>(e.openBlock(),e.createElementBlock("div",{key:C,class:e.normalizeClass(["mr-canvas-component",{"is-selected":g(C),"is-locked":y(C)}]),"data-canvas-component":C,style:e.normalizeStyle(S(C)),role:"button","aria-label":`${o.value.component} ${C+1} ${m.kind}`,"aria-pressed":g(C),tabindex:g(C)?0:-1,onFocus:k=>!g(C)&&a("select",{pageIndex:t.pageIndex,componentIndex:C}),onPointerdown:k=>V(k,C),onClick:k=>k.detail===0&&!g(C)&&a("select",{pageIndex:t.pageIndex,componentIndex:C}),onKeydown:k=>w(k,C)},[m.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",it,[m.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(m.headerGrid.rowHeightsMm?.reduce((k,_)=>k+_,0)??m.headerGrid.cells.length*8)*e.unref(v)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($(m),(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle({left:`${k.xMm*e.unref(v)}px`,top:`${k.yMm*e.unref(v)}px`,width:`${k.widthMm*e.unref(v)}px`,height:`${k.heightMm*e.unref(v)}px`,textAlign:k.cell.style?.align??"center"})},e.toDisplayString(k.cell.text),5))),128))],4)):(e.openBlock(),e.createElementBlock("div",st,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.columns,(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle(c({text:k.header,style:e.unref($e.resolveListHeaderStyle)(m,k)},k.widthMm,k.hidden)),onPointerdown:e.withModifiers(L=>{a("select",{pageIndex:t.pageIndex,componentIndex:C}),a("column",_)},["stop"])},e.toDisplayString(k.header),45,ct))),128))])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value[C],(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.columns,(L,j)=>(e.openBlock(),e.createElementBlock("div",{key:j,style:e.normalizeStyle(c(k[j],L.widthMm,L.hidden))},e.toDisplayString(k[j].text),5))),128))]))),128)),t.datasets?.[m.dataset]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",dt,e.toDisplayString(m.dataset)+" · "+e.toDisplayString(o.value.sampleRows),1))]),g(C)&&!t.disabled&&!y(C)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(x(m),(k,_)=>(e.openBlock(),e.createElementBlock("span",{key:_,class:"mr-canvas-column-handle","aria-label":`${o.value.resizeColumn} ${m.columns[_]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${k*e.unref(v)}px`}),onPointerdown:L=>O(L,m,_)},null,44,ut))),128)):e.createCommentVNode("",!0)],64)):m.grid?(e.openBlock(),e.createElementBlock("div",mt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T(m),(k,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle({left:`${k.xMm*e.unref(v)}px`,top:`${k.yMm*e.unref(v)}px`,width:`${k.widthMm*e.unref(v)}px`,height:`${k.heightMm*e.unref(v)}px`,backgroundColor:k.cell.style?.backgroundColor,color:k.cell.style?.color,fontWeight:k.cell.style?.bold?"700":"400",fontSize:`${e.unref(pe.resolveFontSize)(k.cell.style).fontSizePx*e.unref(p)}px`,textAlign:k.cell.style?.align??"left"})},e.toDisplayString(k.cell.text),5))),128)),m.grid.cells.reduce((k,_)=>k+_.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",ft,e.toDisplayString(o.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):m.imageData?(e.openBlock(),e.createElementBlock("img",{key:2,src:m.imageData,alt:"",draggable:"false"},null,8,pt)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mr-canvas-content",style:e.normalizeStyle({color:m.style?.color,backgroundColor:m.style?.backgroundColor,fontWeight:m.style?.bold?"700":"400",fontSize:`${e.unref(pe.resolveFontSize)(m.style).fontSizePx*e.unref(p)}px`,textAlign:m.style?.align})},e.toDisplayString(m.text??m.fallbackText??(m.kind==="rect"?"":m.kind)),5)),g(C)&&!t.disabled&&!y(C)?(e.openBlock(),e.createElementBlock("span",{key:4,class:"mr-canvas-resize","aria-label":o.value.resizeComponent,role:"separator",onPointerdown:k=>e.unref(N).start(k,m,!0)},null,40,vt)):e.createCommentVNode("",!0)],46,rt))),128))],4)],544),e.unref(h)?(e.openBlock(),e.createElementBlock("footer",gt,[e.createElementVNode("span",null,e.toDisplayString(o.value.wideNavigation),1),e.createElementVNode("input",{type:"range",min:"0",max:"100",value:e.unref(b),"aria-label":o.value.wideNavigation,onInput:D[5]||(D[5]=m=>e.unref(E)(Number(m.target.value)))},null,40,ht),e.createElementVNode("span",null,e.toDisplayString(e.unref(b))+"%",1)])):e.createCommentVNode("",!0)]))}}),kt=W._export_sfc(yt,[["__scopeId","data-v-0a5ec6d3"]]),bt=["aria-label"],Et=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],wt={key:0},St={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},Nt={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},Vt={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},xt={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},Mt={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},Ct=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:d}){const l=t,a=d,o=()=>l.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function f(p,v){if(!["ArrowLeft","ArrowRight","Home","End"].includes(p.key))return;p.preventDefault();const h=o(),b=h.indexOf(v),M=p.key==="Home"?0:p.key==="End"?h.length-1:(b+(p.key==="ArrowRight"?1:-1)+h.length)%h.length;a("update:modelValue",h[M]);const B=p.currentTarget.parentElement;await e.nextTick(),B?.querySelector(`[data-align="${h[M]}"]`)?.focus()}return(p,v)=>(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(o(),r=>(e.openBlock(),e.createElementBlock("button",{key:r,type:"button",role:"radio","data-align":r,"aria-label":t.labels[r],title:t.labels[r],"aria-checked":t.modelValue===r,tabindex:t.modelValue===r?0:-1,onClick:h=>a("update:modelValue",r),onKeydown:h=>f(h,r)},[r==="auto"?(e.openBlock(),e.createElementBlock("span",wt,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",St,[r==="left"?(e.openBlock(),e.createElementBlock("path",Nt)):r==="center"?(e.openBlock(),e.createElementBlock("path",Vt)):r==="right"?(e.openBlock(),e.createElementBlock("path",xt)):(e.openBlock(),e.createElementBlock("path",Mt))]))],40,Et))),128))],8,bt))}}),Ve=W._export_sfc(Ct,[["__scopeId","data-v-c85770c4"]]),Bt=["disabled"],Dt={class:"mr-component-dimensions"},_t=["min","value","onChange"],Tt={key:0},$t=["value"],It={value:""},Lt={value:"header"},Rt={value:"footer"},At={key:1},Pt=["value"],Gt=["value"],zt={class:"mr-component-upload"},Ft=["aria-label"],Ht={key:0,role:"alert"},Ot={key:3,class:"mr-component-type"},jt={class:"mr-component-dimensions"},Ut=["value"],Wt=["checked"],Kt={class:"mr-component-dimensions"},Jt=["value"],qt=["value"],Xt={key:4},Yt=["value"],Qt=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["geometry","patch"],setup(t,{emit:d}){const l=t,a=d,o=e.computed(()=>({...ce,...l.messages})),f=e.ref(""),p=["leftMm","topMm","widthMm","heightMm"],v=e.computed(()=>[o.value.leftPosition,o.value.topPosition,o.value.componentWidth,o.value.componentHeight]);function r(E,s){const c=Number(s.target.value);Number.isFinite(c)&&a("geometry",{...Q(l.component),[E]:c})}function h(E,s){if(l.component.kind==="list")return;const c={...l.component.style,[E]:s};E==="fontSize"&&delete c.fontSizePx,a("patch",{style:c})}const b=e.computed(()=>({auto:o.value.auto,left:o.value.left,center:o.value.center,right:o.value.right,justify:o.value.justify}));function M(E){return E.target.value}async function B(E){const s=E.target,c=s.files?.[0];if(!c)return;f.value="";const y=l.component;try{if(c.size>4*1024*1024||!["image/png","image/jpeg","image/webp","image/svg+xml"].includes(c.type))throw new Error(o.value.imageBudget);const V=new FileReader,N=await new Promise((g,S)=>{V.onload=()=>g(String(V.result)),V.onerror=()=>S(V.error),V.readAsDataURL(c)});!l.disabled&&l.component===y&&a("patch",{imageData:N})}catch(V){f.value=V instanceof Error?V.message:String(V)}finally{s.value=""}}return(E,s)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("h3",null,e.toDisplayString(o.value.positionGroup),1),e.createElementVNode("div",Dt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.filter(c=>t.component.kind!=="list"||c!=="heightMm"),(c,y)=>(e.openBlock(),e.createElementBlock("label",{key:c},[e.createTextVNode(e.toDisplayString(v.value[y]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:c==="widthMm"||c==="heightMm"?2:0,value:e.unref(Q)(t.component)[c],onChange:V=>r(c,V)},null,40,_t)]))),128))]),t.component.kind!=="list"?(e.openBlock(),e.createElementBlock("label",Tt,[e.createTextVNode(e.toDisplayString(o.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",onChange:s[0]||(s[0]=c=>a("patch",{pageAnchor:M(c)||void 0}))},[e.createElementVNode("option",It,e.toDisplayString(o.value.repeatNone),1),e.createElementVNode("option",Lt,e.toDisplayString(o.value.repeatHeader),1),e.createElementVNode("option",Rt,e.toDisplayString(o.value.repeatFooter),1)],40,$t)])):e.createCommentVNode("",!0),e.createElementVNode("h3",null,e.toDisplayString(o.value.componentContent),1),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("label",At,[e.createTextVNode(e.toDisplayString(o.value.componentText),1),e.createElementVNode("textarea",{rows:"4",value:t.component.text,onChange:s[1]||(s[1]=c=>a("patch",{text:M(c)}))},null,40,Pt)])):e.createCommentVNode("",!0),t.component.kind==="image"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:s[2]||(s[2]=c=>a("patch",{imageData:M(c)}))},null,40,Gt)]),e.createElementVNode("label",zt,[e.createTextVNode(e.toDisplayString(o.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg,image/webp,image/svg+xml","aria-label":o.value.imageUpload,onChange:B},null,40,Ft)]),f.value?(e.openBlock(),e.createElementBlock("p",Ht,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Ot,[e.createElementVNode("h3",null,e.toDisplayString(o.value.textFormat),1),e.createElementVNode("div",jt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(pe.resolveFontSize)(t.component.style).fontSizePt,onChange:s[3]||(s[3]=c=>h("fontSize",Number(M(c))))},null,40,Ut)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:s[4]||(s[4]=c=>h("bold",c.target.checked))},null,40,Wt)])]),e.createVNode(Ve,{"model-value":t.component.style?.align??"left",label:o.value.bodyAlign,labels:b.value,"auto-label":o.value.autoShort,"onUpdate:modelValue":s[5]||(s[5]=c=>h("align",c))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",Kt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:s[6]||(s[6]=c=>h("color",M(c)))},null,40,Jt)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:s[7]||(s[7]=c=>h("backgroundColor",M(c)))},null,40,qt)])])])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",Xt,[e.createTextVNode(e.toDisplayString(o.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:s[8]||(s[8]=c=>a("patch",{dataset:M(c)}))},null,40,Yt)])):e.createCommentVNode("",!0)],8,Bt))}}),Zt=W._export_sfc(Qt,[["__scopeId","data-v-2dcbd9cb"]]),en={class:"mr-header-editor"},tn=["disabled"],nn=["value"],on=["value"],ln=["value"],an=["disabled"],rn=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:d}){const l=t,a=d,o=e.computed(()=>({...ce,...l.messages})),f=e.ref(0),p=e.ref(0),v=e.ref(Math.min(1,l.list.columns.length-1));return e.watch(()=>l.list.columns.length,r=>{p.value=Math.min(p.value,r-1),v.value=Math.min(v.value,r-1)}),(r,h)=>(e.openBlock(),e.createElementBlock("details",en,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(o.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(o.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[0]||(h[0]=b=>f.value=b)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,b=>(e.openBlock(),e.createElementBlock("option",{key:b,value:b-1},e.toDisplayString(b),9,nn))),128))],512),[[e.vModelSelect,f.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[1]||(h[1]=b=>p.value=b)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(b,M)=>(e.openBlock(),e.createElementBlock("option",{key:M,value:M},e.toDisplayString(M+1)+" · "+e.toDisplayString(b.header),9,on))),128))],512),[[e.vModelSelect,p.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[2]||(h[2]=b=>v.value=b)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(b,M)=>(e.openBlock(),e.createElementBlock("option",{key:M,value:M},e.toDisplayString(M+1)+" · "+e.toDisplayString(b.header),9,ln))),128))],512),[[e.vModelSelect,v.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:h[3]||(h[3]=b=>a("command",{action:"add",row:f.value,first:p.value,last:v.value}))},e.toDisplayString(o.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:p.value>=v.value,onClick:h[4]||(h[4]=b=>a("command",{action:"merge",row:f.value,first:p.value,last:v.value}))},e.toDisplayString(o.value.mergeHeader),9,an),e.createElementVNode("button",{type:"button",onClick:h[5]||(h[5]=b=>a("command",{action:"split",row:f.value,first:p.value,last:v.value}))},e.toDisplayString(o.value.splitHeader),1)])],8,tn)]))}}),sn=W._export_sfc(rn,[["__scopeId","data-v-acd607ef"]]),te=t=>`${t.pageIndex}:${t.componentIndex}`;function cn(t,d,l){const a=e.ref([]),o=e.ref(new Set);e.watch(()=>t.value.id,()=>{a.value=[],o.value=new Set});const f=B=>!!B&&o.value.has(te(B));function p(B){const E={pageIndex:B.pageIndex,componentIndex:B.componentIndex};if(B.additive&&a.value.every(s=>s.pageIndex===B.pageIndex)){const s=a.value.some(c=>te(c)===te(B));a.value=s?a.value.filter(c=>te(c)!==te(B)):[...a.value,E],d.value=s?a.value.at(-1):E}else a.value=[E],d.value=E}const v=e.computed(()=>a.value.filter(B=>!f(B)));function r(){const B=new Set(o.value),E=a.value.every(f);for(const s of a.value)E?B.delete(te(s)):B.add(te(s));o.value=B}function h(B){v.value.length<2||l(E=>{const s=v.value.map(S=>se(E,S)).filter(Boolean),c=s.map(Q),y=Math.min(...c.map(S=>S.leftMm)),V=Math.min(...c.map(S=>S.topMm)),N=Math.max(...c.map(S=>S.leftMm+S.widthMm)),g=Math.max(...c.map(S=>S.topMm+S.heightMm));s.forEach((S,w)=>{const x=c[w],T={left:y,center:(y+N-x.widthMm)/2,right:N-x.widthMm},$={top:V,middle:(V+g-x.heightMm)/2,bottom:g-x.heightMm};B in T?x.leftMm=T[B]:x.topMm=$[B],ve(S,x)})})}function b(B){v.value.length<3||l(E=>{const s=B==="horizontal"?"leftMm":"topMm",c=B==="horizontal"?"widthMm":"heightMm",y=v.value.map(w=>({component:se(E,w),box:Q(se(E,w))})).sort((w,x)=>w.box[s]-x.box[s]),V=y[0].box[s],g=(Math.max(...y.map(w=>w.box[s]+w.box[c]))-V-y.reduce((w,x)=>w+x.box[c],0))/(y.length-1);let S=V;for(const w of y)w.box[s]=S,ve(w.component,w.box),S+=w.box[c]+g})}function M(B,E,s){function c(y){if(y.pageIndex!==B)return y;const V=y.componentIndex;return s===void 0?V===E?void 0:{...y,componentIndex:V>E?V-1:V}:{...y,componentIndex:V===E?s:V===s?E:V}}o.value=new Set([...o.value].flatMap(y=>{const[V,N]=y.split(":").map(Number),g=c({pageIndex:V,componentIndex:N});return g?[te(g)]:[]})),a.value=a.value.flatMap(y=>{const V=c(y);return V?[V]:[]})}return{clearLocks:()=>{o.value=new Set},selections:a,locked:f,allLocked:e.computed(()=>!!a.value.length&&a.value.every(f)),toggleLock:r,align:h,distribute:b,select:p,remap:M}}function dn(t,d){const l=e.ref("preview"),a=e.ref(),o=e.ref(0),f=cn(t,a,d),p=e.computed(()=>se(t.value,a.value));e.watch(t,()=>{p.value||(a.value=void 0),t.value.template.pages[o.value]||(o.value=0)});function v(s){f.select(s),o.value=s.pageIndex}function r(s){const c=a.value;return!c||f.locked(c)?!1:d(y=>{const V=se(y,c);V&&s(V,y)})}function h(s){r((c,y)=>{const V=y.template.pages[a.value.pageIndex];ve(c,Ne(s,V,c.kind==="list"))})}function b(s){let c=-1;const y=o.value;d(V=>{const N=V.template.pages[y].components;N.push(je(s)),c=N.length-1})&&v({pageIndex:y,componentIndex:c})}function M(){const s=a.value;s&&!f.locked(s)&&d(c=>{c.template.pages[s.pageIndex].components.splice(s.componentIndex,1)})&&(f.remap(s.pageIndex,s.componentIndex),a.value=void 0)}function B(){const s=a.value;if(!s)return;let c=-1;d(y=>{const V=y.template.pages[s.pageIndex],N=JSON.parse(JSON.stringify(se(y,s))),g=Q(N);g.leftMm+=4,g.topMm+=4,ve(N,Ne(g,V,N.kind==="list")),N.kind==="list"?delete N.id:(delete N.nid,delete N.rkey),V.components.push(N),c=V.components.length-1})&&v({pageIndex:s.pageIndex,componentIndex:c})}function E(s){const c=a.value;if(!c||f.locked(c))return;const y=c.componentIndex+s;t.value.template.pages[c.pageIndex]?.components[y]&&d(V=>{const N=V.template.pages[c.pageIndex].components;N.splice(y,0,N.splice(c.componentIndex,1)[0])})&&(f.remap(c.pageIndex,c.componentIndex,y),v({pageIndex:c.pageIndex,componentIndex:y}))}return{...f,mode:l,selection:a,pageIndex:o,active:p,select:v,mutate:r,geometry:h,insert:b,remove:M,duplicate:B,reorder:E}}function un(t,d,l){const{draft:a,lists:o,selected:f,activeList:p,blocked:v,jsonPending:r,error:h}=t,{section:b,activeIndex:M}=d,B=dn(a,t.transaction),{mode:E,selection:s,pageIndex:c,active:y}=B,V=e.ref("excel"),N=e.ref(new Set);e.watch([b,V],()=>{b.value==="tools"&&(N.value=new Set([...N.value,V.value]))}),e.watch(s,m=>{if(!m)return;const C=o.value.findIndex(k=>k.pageIndex===m.pageIndex&&k.componentIndex===m.componentIndex);C>=0&&(f.value=C)}),e.watch([M,f,E,b],()=>{if(E.value!=="design"||b.value!=="fields")return;const m=o.value[f.value];m&&(s.value?.pageIndex!==m.pageIndex||s.value.componentIndex!==m.componentIndex)&&B.select({pageIndex:m.pageIndex,componentIndex:m.componentIndex})});const g=e.computed(()=>t.editingReadonly.value||v.value||r.value),S=e.computed(()=>l()?.[p.value?.dataset??""]);function w(m){E.value=m,b.value==="tools"&&(b.value=m==="design"?"component":"fields")}function x(m){if(!a.value.template.pages[m.pageIndex]?.components[m.componentIndex])return;if(B.select(m),a.value.template.pages[m.pageIndex]?.components[m.componentIndex]?.kind==="list"){const k=o.value.findIndex(_=>_.pageIndex===m.pageIndex&&_.componentIndex===m.componentIndex);k>=0&&(f.value=k),b.value="fields"}else b.value="component"}function T(m){const C=m.target;C.value&&(B.insert(C.value),E.value="design",b.value="component",C.value="")}function $(m){B.mutate((C,k)=>{if(C.kind!=="list"&&m.pageAnchor!==C.pageAnchor){const L=k.template.pages[s.value.pageIndex];m.pageAnchor==="header"&&(C.topMm=L.marginTopMm??0),m.pageAnchor==="footer"&&(C.topMm=Math.max(0,L.heightMm-(L.marginBottomMm??0)-C.heightMm))}const _=C;for(const[L,j]of Object.entries(m))j===void 0?delete _[L]:_[L]=j})}function I(m){const C=o.value[f.value];C&&t.transaction(k=>{k.template.pages[C.pageIndex].components[C.componentIndex]=m})}function O(m){const C=p.value;if(!C)return;const k=JSON.parse(JSON.stringify(C));try{Ue(k,M.value,M.value+m)&&(I(k),d.activate(M.value+m))}catch(_){h.value=_ instanceof Error?_.message:String(_)}}function n(m){const C=o.value[f.value];C&&t.transaction(k=>{const _=k.template.pages[C.pageIndex].components[C.componentIndex];_?.kind==="list"&&(m.action==="add"?We(_):m.action==="merge"?Ke(_,m.row,m.first,m.last):Je(_,m.row,m.first))})}function D(m){const C=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(m.path??""),k=m.pageIndex??(C?Number(C[1]):void 0),_=m.componentIndex??(C?Number(C[2]):void 0);if(!(k===void 0||_===void 0)&&(E.value="design",x({pageIndex:k,componentIndex:_}),m.field)){const L=p.value?.columns.findIndex(j=>j.field===m.field);L!==void 0&&L>=0&&d.activate(L)}}return{mode:E,setMode:w,canvasSelection:s,canvasPage:c,canvasActive:y,tool:V,visitedTools:N,editDisabled:g,dataSchema:S,chooseCanvas:x,insertComponent:T,patchCanvas:$,changeList:I,moveColumn:O,headerCommand:n,locateReview:D,canvas:B}}function mn(t,d,l){if(!t.length)return;const a=Math.max(0,t.indexOf(d)),f={ArrowDown:Math.min(a+1,t.length-1),ArrowUp:Math.max(a-1,0),Home:0,End:t.length-1}[l];return f===void 0?void 0:t[f]}function fn(t,d,l){const a=e.ref(!1),o=e.ref(t.activeIndex.value),f=e.ref(null),p=e.ref(null),v=e.ref(null),r=e.ref(null);function h(N=!1){const g=r.value,S=g?.querySelector(`button[data-column-index="${o.value}"]`);if(!g||!S)return;N&&S.focus({preventScroll:!0});const w=g.getBoundingClientRect(),x=S.getBoundingClientRect(),T=w.top+g.clientTop,$=T+g.clientHeight;x.top<T?g.scrollTop+=x.top-T:x.bottom>$&&(g.scrollTop+=x.bottom-$)}async function b(N=!1){a.value&&(a.value=!1,N&&(await e.nextTick(),f.value?.focus({preventScroll:!0})))}async function M(){if(a.value)return b(!0);const N=l.value.map(g=>g.index);o.value=N.includes(t.activeIndex.value)?t.activeIndex.value:N[0]??-1,a.value=!0,await e.nextTick(),v.value?.focus({preventScroll:!0}),h()}function B(N){t.activate(N),b(!0)}function E(N){a.value&&(N.preventDefault(),N.stopPropagation(),b(!0))}async function s(N){const g=mn(l.value.map(S=>S.index),o.value,N.key);g!==void 0&&(o.value=g,N.preventDefault(),await e.nextTick(),h(!0))}async function c(N){if(!["ArrowDown","ArrowUp","Enter"].includes(N.key))return;N.preventDefault(),N.stopPropagation();const g=l.value.map(S=>S.index);if(g.length){if(N.key==="Enter"){g.includes(o.value)&&B(o.value);return}N.key==="ArrowUp"&&(o.value=g.at(-1)),await e.nextTick(),h(!0)}}function y(N){const g=N.target;!a.value||p.value?.contains(g)||f.value?.contains(g)||b()}function V(N){const g=N.relatedTarget;!g||p.value?.contains(g)||f.value?.contains(g)||b()}return e.watch(l,N=>{N.some(g=>g.index===o.value)||(o.value=N[0]?.index??-1)}),e.watch(d,()=>{b()}),e.onMounted(()=>document.addEventListener("pointerdown",y)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",y)),{open:a,cursor:o,trigger:f,panel:p,search:v,list:r,toggle:M,close:b,choose:B,escape:E,navigate:s,searchKeydown:c,leave:V}}function pn(t,d,l,a){const o=e.ref(0),f=e.ref(""),p=e.ref([]),v=e.computed(()=>t.value.template.pages.flatMap((g,S)=>g.components.flatMap((w,x)=>w.kind==="list"?[{component:w,pageIndex:S,componentIndex:x}]:[]))),r=e.computed(()=>v.value[o.value]?.component),h=e.computed(()=>{const g=r.value;if(!g)return[];const S=g.columns.map(w=>w.headerStyle?.align??w.headerAlign??g.headerStyle?.align??g.headerAlign??w.style?.align??"center");if(g.headerGrid&&d())for(const w of A.resolveGridLayout(g.headerGrid,g.widthMm,100).cells)for(let x=w.ci;x<w.ci+(w.cell.colSpan??1);x++)S[x]=w.cell.style?.align??"left";return S}),b=e.computed(()=>{const g=f.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(r.value?.columns??[]).flatMap((S,w)=>{const x=`${S.header} ${S.field}`.toLocaleLowerCase();return g.every(T=>x.includes(T))?[{column:S,index:w}]:[]})});function M(g,S){p.value=S?[...new Set([...p.value,g])]:p.value.filter(w=>w!==g)}function B(g){for(const S of b.value)M(S.index,g)}function E(){p.value=[]}function s(g,S,w){if(!l())return;const x=r.value?.columns[g];x&&(S==="hidden"&&w===!0&&!r.value?.columns.some((T,$)=>$!==g&&!T.hidden)||(Object.assign(x,{[S]:S==="widthMm"?Number(w):w}),S==="header"&&y(g,String(w)),S==="headerAlign"&&V(g,w),S==="widthMm"&&c(),a()))}function c(){const g=v.value[o.value];if(!g)return;const S=g.component,w=t.value.template.pages[g.pageIndex],x=S.columns.map(T=>T.widthMm);S.headerGrid&&(S.headerGrid.colWidthsMm=x),w.layout==="wide"&&x.every(T=>Number.isFinite(T)&&T>0)&&(S.widthMm=x.reduce((T,$)=>T+$,0),w.widthMm=Math.max(...w.components.map(T=>T.leftMm+T.widthMm))+(w.marginRightMm??0))}function y(g,S){const w=r.value;if(!w?.headerGrid)return;const T=A.resolveGridLayout(w.headerGrid,w.widthMm,100).cells.filter(({ci:$,cell:I})=>$<=g&&$+(I.colSpan??1)>g).slice(-1)[0];T&&(Object.assign(T.cell,{text:S,rawText:S,value:S}),w.columns.slice(T.ci,T.ci+(T.cell.colSpan??1)).forEach($=>{$.header=S}))}function V(g,S){const w=r.value,x=w?.columns[g];if(x?.headerStyle?.align!==void 0&&(x.headerStyle={...x.headerStyle,align:S}),!w?.headerGrid)return;const $=A.resolveGridLayout(w.headerGrid,w.widthMm,100).cells.filter(({ci:I,cell:O})=>I<=g&&I+(O.colSpan??1)>g).slice(-1)[0];$&&($.cell.style={...$.cell.style,align:S},w.columns.slice($.ci,$.ci+($.cell.colSpan??1)).forEach(I=>{I.headerAlign=S,I.headerStyle?.align!==void 0&&(I.headerStyle={...I.headerStyle,align:S})}))}function N(g,S){if(!(!l()||g==="headerAlign"&&S==="auto")){for(const w of p.value){const x=r.value?.columns[w];x&&(Object.assign(x,{[g]:S}),g==="headerAlign"&&V(w,S))}a()}}return{selected:o,query:f,selectedColumns:p,lists:v,activeList:r,headerAlignments:h,visibleColumns:b,toggleColumn:M,selectVisible:B,clearSelection:E,setColumn:s,alignColumns:N}}function oe(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function vn(t,d,l=!1){const a={kind:"snapshot",value:d};if(l)return a;let o=0;const f=Math.min(t.length,d.length);for(;o<f&&t.charCodeAt(o)===d.charCodeAt(o);)o++;let p=t.length,v=d.length;for(;p>o&&v>o&&t.charCodeAt(p-1)===d.charCodeAt(v-1);)p--,v--;const r={kind:"patch",start:o,removed:t.slice(o,p),inserted:d.slice(o,v)};return oe(r)<oe(a)?r:a}function fe(t,d,l=!1){if(d.kind==="snapshot")return d.value;const a=l?d.inserted:d.removed,o=l?d.removed:d.inserted;return t.slice(0,d.start)+o+t.slice(d.start+a.length)}function gn(t,d={entries:100,bytes:16*1024*1024}){if(![d.entries,d.bytes].every(s=>Number.isSafeInteger(s)&&s>0))throw new RangeError("History budgets must be positive safe integers");const l=e.shallowRef([{kind:"snapshot",value:t}]),a=e.ref(0),o=e.ref(t),f=e.computed(()=>a.value>0),p=e.computed(()=>a.value+1<l.value.length),v=e.computed(()=>o.value),r=e.computed(()=>l.value.reduce((s,c)=>s+oe(c),0));function h(s){l.value=[{kind:"snapshot",value:s}],a.value=0,o.value=s}function b(s){let c=s;for(;c>0&&l.value[c].kind!=="snapshot";)c--;let y="";for(;c<=s;c++)y=fe(y,l.value[c]);return y}function M(s){let c=s.reduce((y,V)=>y+oe(V),0);for(;s.length>1&&(s.length>d.entries||c>d.bytes);){const y=s[0],V=s[1],N={kind:"snapshot",value:fe(y.value,V)};c+=oe(N)-oe(y)-oe(V),s.splice(0,2,N)}return s}function B(s){if(o.value===s)return;const c=l.value.slice(0,a.value+1);c.push(vn(o.value,s,c.length%20===0)),l.value=M(c),a.value=l.value.length-1,o.value=s}function E(s){if(s<0?!f.value:!p.value)return;const c=l.value[a.value];return s<0&&c.kind==="patch"?o.value=fe(o.value,c,!0):s>0?o.value=fe(o.value,l.value[a.value+1]):o.value=b(a.value-1),a.value+=s,o.value}return{canUndo:f,canRedo:p,current:v,retainedBytes:r,reset:h,record:B,move:E}}function hn(t){const d=e.shallowRef(null),l=e.ref(!1);let a,o=0;function f(r){a?.(r),a=void 0,d.value=null}function p(){o++,f(!1),l.value=!1}async function v(r){p();const h=o,b=t();l.value=!0;try{const M=await new Promise((B,E)=>{if(a=B,!b){d.value=r;return}Promise.resolve().then(()=>o===h?b(r):!1).then(s=>{o===h&&f(s===!0)},s=>{o===h&&(a=void 0,d.value=null,E(s))})});return o===h&&M===!0}finally{o===h&&(l.value=!1)}}return e.onBeforeUnmount(p),{confirmation:d,pending:l,decide:f,request:v,cancel:p}}function yn(t,d){const l=e.ref(A.parseReportTemplate(t.modelValue)),a=e.ref(A.serializeReportTemplate(l.value)),o=e.ref(A.serializeReportTemplate(l.value)),f=e.ref(""),p=e.ref(!1),v=e.computed(()=>({...ce,...t.messages})),r=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}}));Se.provideMachReportConfig({get defaults(){return r.value}});let h,b=0;const M=e.computed(()=>A.validateReportTemplateDocument(l.value)),B=e.computed(()=>{try{return A.serializeReportTemplate(l.value)!==a.value}catch{return!0}}),E=e.ref(o.value),s=e.computed(()=>o.value!==E.value),c=e.ref({}),y=e.ref(0),V=e.ref(0),N=e.computed(()=>Object.values(c.value).some(Boolean));function g(R,G){c.value={...c.value,[R]:G},y.value++}const S=e.computed(()=>B.value||o.value!==E.value||N.value),w=()=>JSON.stringify({document:l.value,json:o.value,appliedJson:E.value}),x=gn(w()),T=hn(()=>t.beforeDiscard),$=e.computed(()=>p.value||T.pending.value),I=()=>!t.readonly&&!$.value&&!s.value,O=pn(l,()=>M.value.ok,I,U),{selected:n,lists:D,activeList:m,headerAlignments:C,setColumn:k}=O;e.watch(n,()=>O.clearSelection());const _=e.computed(()=>M.value.ok?Se.createLocalFetcher({draft:{template:l.value.template,datasets:t.datasets??{},params:[]}}):void 0);function L(){b++,h?.abort(),h=void 0,p.value=!1}let j=0;async function Y(R="replace",G){if(!S.value)return!0;const H=w(),P=y.value;try{return await T.request({reason:R,document:JSON.parse(JSON.stringify(l.value)),replacement:G?A.parseReportTemplate(G):void 0,pendingLocalChanges:!0})&&H===w()&&P===y.value}catch(re){return f.value=re instanceof Error?re.message:String(re),!1}}function Z(R){L(),l.value=R,a.value=A.serializeReportTemplate(R),o.value=a.value,E.value=o.value,f.value="",n.value=0,O.clearSelection(),c.value={},y.value++,V.value++,x.reset(w())}e.watch(()=>t.modelValue,async R=>{let G;try{G=A.parseReportTemplate(R)}catch(P){f.value=P instanceof Error?P.message:String(P);return}try{if(A.serializeReportTemplate(G)===A.serializeReportTemplate(l.value))return}catch{}const H=++j;if(L(),!await Y("replace",G)){H===j&&M.value.ok&&d("update:modelValue",A.parseReportTemplate(l.value));return}H===j&&Z(G)}),e.onBeforeUnmount(()=>{j++,L()});function U(){T.cancel(),f.value="",M.value.ok&&(o.value=A.serializeReportTemplate(l.value),E.value=o.value,d("update:modelValue",A.parseReportTemplate(l.value))),x.record(w())}function q(R){if(!I())return!1;try{const G=A.parseReportTemplate(l.value);R(G);const H=A.validateReportTemplateDocument(G);if(!H.ok)throw new Error(H.errors.map(P=>`${P.path}: ${P.message}`).join(`
2
- `));return l.value=G,U(),!0}catch(G){return f.value=G instanceof Error?G.message:String(G),!1}}async function X(R){if(!I())return!1;try{const G=A.parseReportTemplate(R);return!await Y("replace",G)||!I()?!1:(l.value=G,n.value=0,O.clearSelection(),U(),!0)}catch(G){return f.value=G instanceof Error?G.message:String(G),!1}}function ne(R){I()&&(l.value.name=R,U())}function le(R){I()&&(l.value.description=R,U())}function K(){if(!(t.readonly||$.value))try{const R=A.parseReportTemplate(o.value);if(R.id!==l.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(R.revision!==l.value.revision)throw new Error("修订号由保存服务管理,不能在 JSON 中修改");l.value=R,n.value=0,O.clearSelection(),U()}catch(R){f.value=R instanceof Error?R.message:String(R)}}async function ae(){$.value||t.readonly||!await Y("reset")||(Z(A.parseReportTemplate(a.value)),d("update:modelValue",A.parseReportTemplate(l.value)))}function de(R){if($.value||t.readonly)return;x.record(w());const G=x.move(R);if(!G)return;T.cancel();const H=JSON.parse(G);l.value=H.document,o.value=H.json,E.value=H.appliedJson,f.value="",n.value=0,O.clearSelection(),M.value.ok&&d("update:modelValue",A.parseReportTemplate(l.value))}async function ue(){if(!t.save||!I()||!M.value.ok)return;if(N.value){f.value=v.value.toolsPending;return}const R=++b;h=new AbortController,p.value=!0,f.value="";const G=A.parseReportTemplate(l.value);try{const H=A.parseReportTemplate(await t.save(G,{expectedRevision:G.revision,signal:h.signal}));if(R!==b)return;if(H.id!==G.id)throw new Error("保存服务返回了其他模板的文档");l.value=H,a.value=A.serializeReportTemplate(H),o.value=a.value,E.value=o.value,x.reset(w()),d("saved",A.parseReportTemplate(H)),d("update:modelValue",A.parseReportTemplate(H))}catch(H){R===b&&(f.value=H instanceof Error?H.message:String(H))}finally{R===b&&(p.value=!1,h=void 0)}}const ye=e.computed(()=>x.canUndo.value||w()!==x.current.value),ke=e.computed(()=>x.canRedo.value&&w()===x.current.value);return{...O,editingReadonly:e.computed(()=>t.readonly===!0),transaction:q,replaceDocument:X,originalDocument:e.computed(()=>A.parseReportTemplate(a.value)),canUndo:ye,canRedo:ke,undo:()=>de(-1),redo:()=>de(1),pendingLocalChanges:S,setToolPending:g,isToolPending:R=>c.value[R]===!0,toolEpoch:V,toolPending:N,jsonPending:s,blocked:$,confirmation:T.confirmation,decideDiscard:T.decide,guardChanges:Y,draft:l,json:o,selected:n,error:f,saving:p,dirty:B,validation:M,lists:D,activeList:m,headerAlignments:C,previewOptions:r,fetcher:_,messages:v,setName:ne,setDescription:le,setColumn:k,applyJson:K,reset:ae,save:ue}}function kn(t,d){const l=e.ref("fields"),a=()=>d.value?.columns.length?0:-1,o=e.ref(a()),f=e.computed(()=>{const r=d.value?.columns[o.value];return r?{column:r,index:o.value}:void 0});e.watch(t,()=>{o.value=a()}),e.watch(d,r=>{r?.columns[o.value]||(o.value=a())});function p(r){d.value?.columns[r]&&(o.value=r)}function v(r){const h=d.value?.columns.length??0;h&&(o.value=Math.max(0,Math.min(h-1,o.value+r)))}return{section:l,activeIndex:o,activeColumn:f,activate:p,stepColumn:v}}const bn=["aria-label","aria-busy"],En={class:"mr-designer-bar"},wn={class:"mr-designer-heading"},Sn=["aria-label"],Nn=["id","aria-selected","aria-controls","tabindex","onClick"],Vn=["aria-label"],xn=["aria-pressed"],Mn=["aria-pressed"],Cn={class:"mr-designer-actions"},Bn={class:"mr-designer-history"},Dn=["aria-label","title","disabled"],_n=["aria-label","title","disabled"],Tn=["disabled"],$n=["disabled"],In=["aria-label"],Ln=["aria-label"],Rn=["aria-pressed","onClick"],An={class:"mr-designer-tool-content"},Pn={key:2,class:"mr-designer-rule-workspace"},Gn={key:0},zn=["value"],Fn=["value"],Hn={key:2,class:"mr-designer-note"},On={key:1,class:"mr-designer-inspector"},jn=["id","aria-labelledby"],Un={key:0,class:"mr-designer-area"},Wn=["value"],Kn=["value"],Jn={class:"mr-designer-current"},qn=["aria-expanded","aria-controls"],Xn={class:"mr-designer-current-name"},Yn={class:"mr-designer-directory-entry"},Qn={class:"mr-designer-field-position"},Zn=["aria-label"],eo=["aria-label","title","disabled"],to=["aria-label","title","disabled"],no=["disabled","aria-label"],oo={class:"mr-designer-property-group"},lo=["value"],ao=["value","list"],ro=["id"],io=["value"],so={class:"mr-designer-property-group"},co={class:"mr-designer-format-pair"},uo={class:"mr-designer-stacked"},mo=["value"],fo={class:"mr-designer-stacked"},po=["value"],vo={value:"identifier"},go={value:"dimension"},ho={value:"measure"},yo={value:"date"},ko={value:"text"},bo={class:"mr-designer-control-row"},Eo={class:"mr-designer-control-row"},wo={class:"mr-designer-toggle"},So=["checked"],No={class:"mr-designer-column-structure"},Vo=["aria-label","title","disabled"],xo=["aria-label","title","disabled"],Mo=["checked","disabled"],Co=["id","aria-label"],Bo={class:"mr-designer-directory-heading"},Do=["aria-label"],_o={class:"mr-designer-search"},To=["aria-label","placeholder"],$o=["aria-label","title"],Io={class:"mr-designer-column-tools"},Lo=["disabled"],Ro={key:1,role:"status"},Ao={key:2},Po=["aria-label"],Go=["aria-label","checked","disabled","onChange"],zo=["data-column-index","aria-pressed","tabindex","onClick"],Fo={class:"mr-designer-column-number"},Ho={class:"mr-designer-column-name"},Oo={key:0,role:"status",class:"mr-designer-empty"},jo={key:0,class:"mr-designer-batch"},Uo=["aria-label","disabled"],Wo={value:""},Ko={value:"auto"},Jo={value:"left"},qo={value:"center"},Xo={value:"right"},Yo={value:"justify"},Qo=["aria-label","disabled"],Zo={value:""},el={value:"left"},tl={value:"center"},nl={value:"right"},ol={value:"justify"},ll={key:2,role:"status",class:"mr-designer-empty"},al={class:"mr-designer-object-tools"},rl=["aria-label","disabled"],il={value:""},sl={value:"text"},cl={value:"list"},dl={value:"image"},ul={value:"rect"},ml=["title","aria-label","disabled"],fl=["title","aria-label","disabled"],pl={key:0},vl=["value"],gl={class:"mr-designer-stacked"},hl=["value"],yl={value:-1,disabled:""},kl=["value"],bl={key:1,class:"mr-designer-arrange"},El=["disabled"],wl=["aria-label","disabled"],Sl={value:""},Nl={value:"left"},Vl={value:"center"},xl={value:"right"},Ml={value:"top"},Cl={value:"middle"},Bl={value:"bottom"},Dl=["disabled"],_l=["disabled"],Tl={key:0},$l={class:"mr-designer-layer-tools"},Il=["disabled"],Ll=["disabled"],Rl={key:3,class:"mr-designer-empty"},Al={class:"mr-designer-stacked"},Pl=["value","disabled"],Gl={class:"mr-designer-stacked"},zl=["value","disabled"],Fl={class:"mr-designer-technical"},Hl={class:"mr-designer-identity"},Ol={class:"mr-designer-stacked mr-designer-json-label"},jl=["aria-label","disabled"],Ul=["disabled"],Wl={key:4,role:"status",class:"mr-designer-note mr-designer-pending"},Kl=["aria-label"],Jl={key:0,role:"alert",class:"mr-designer-error"},ql={key:1,role:"alert",class:"mr-designer-error"},Xl={key:4,class:"mr-designer-note mr-designer-invalid"},Yl=e.defineComponent({__name:"ReportTemplateEditor",props:{modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},preview:{},beforeDiscard:{type:Function},save:{type:Function}},emits:["update:modelValue","saved","excel-bound"],setup(t,{expose:d,emit:l}){const a=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-CF7RplWm.cjs"))),o=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-CczJ6mJm.cjs"))),f=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-CHi4Alqa.cjs"))),p=t,v=l,r=yn(p,(F,u)=>{v(F==="saved"?"saved":"update:modelValue",u)}),{draft:h,json:b,selected:M,error:B,saving:E,pendingLocalChanges:s,jsonPending:c,blocked:y,confirmation:V,canUndo:N,canRedo:g,validation:S,lists:w,activeList:x,visibleColumns:T,query:$,selectedColumns:I,fetcher:O,messages:n}=r,D=kn(M,x),{section:m,activeIndex:C,activeColumn:k}=D,_=`mr-designer-${e.getCurrentInstance()?.uid??0}`,L=["fields","component","template","tools","advanced"],j=un(r,D,()=>p.dataSchemas),{mode:Y,setMode:Z,canvasSelection:U,canvasPage:q,canvasActive:X,tool:ne,visitedTools:le,editDisabled:K,dataSchema:ae,chooseCanvas:de,insertComponent:ue,patchCanvas:ye,changeList:ke,moveColumn:R,headerCommand:G,locateReview:H,canvas:P}=j,re=e.computed(()=>E.value?n.value.saving:p.readonly?n.value.readonly:s.value?n.value.dirty:n.value.ready),Me=e.ref(null),be=e.ref(null),J=fn(D,m,T),{open:Ce,cursor:Re,trigger:Ae,panel:Pe,search:Ge,list:ze}=J;e.watch(m,async()=>{await e.nextTick(),be.value&&(be.value.scrollTop=0)});const Be=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));let me=null;e.watch(V,async F=>{F?(me=document.activeElement,await e.nextTick(),Me.value?.focus()):(await e.nextTick(),me?.isConnected&&me.focus(),me=null)}),d({get pendingLocalChanges(){return s.value},get saving(){return E.value},get blocked(){return y.value},guardChanges:r.guardChanges,reset:r.reset,save:r.save});async function Fe(F){const u={...F.document,id:h.value.id};if(h.value.revision===void 0?delete u.revision:u.revision=h.value.revision,!await r.replaceDocument(u))return!1;const i=A.parseReportTemplate(r.draft.value);return v("excel-bound",{...F,document:i,session:{...F.session,identity:{id:i.id,name:i.name}}}),!0}async function De(F){const u=w.value.findIndex(i=>i.pageIndex===F.pageIndex&&i.componentIndex===F.componentIndex);u>=0&&u!==M.value&&r.isToolPending("rules")&&!await r.guardChanges()||de(F)}async function _e(F){const u=F.target,i=Number(u.value);if(r.isToolPending("rules")&&!await r.guardChanges()){u.value=String(M.value);return}M.value=i}function ee(F){return F.target.value}function Ee(F){return F.target.checked}function Te(F,u){const i=F.target;r.alignColumns(u,i.value),i.value=""}async function He(F){const i={ArrowRight:1,ArrowLeft:-1,Home:-L.length,End:L.length}[F.key];if(i===void 0)return;F.preventDefault();const z=L.indexOf(m.value),ie=F.key==="Home"?0:F.key==="End"?L.length-1:(z+i+L.length)%L.length;m.value=L[ie];const Oe=F.currentTarget.parentElement;await e.nextTick(),Oe?.querySelector(`#${_}-tab-${m.value}`)?.focus()}return(F,u)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(n).title,"aria-busy":e.unref(E)},[e.createElementVNode("header",En,[e.createElementVNode("div",wn,[e.createVNode(W._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(s)})},e.toDisplayString(re.value),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(n).sectionsLabel},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(L,i=>e.createElementVNode("button",{id:`${_}-tab-${i}`,key:i,type:"button",role:"tab","aria-selected":e.unref(m)===i,"aria-controls":`${_}-panel-${i}`,tabindex:e.unref(m)===i?0:-1,onClick:z=>m.value=i,onKeydown:He},e.toDisplayString(e.unref(n)[`${i}Section`]),41,Nn)),64))],8,Sn),e.createElementVNode("div",{class:"mr-designer-mode",role:"group","aria-label":e.unref(n).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(Y)==="design",onClick:u[0]||(u[0]=i=>e.unref(Z)("design"))},e.toDisplayString(e.unref(n).design),9,xn),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(Y)==="preview",onClick:u[1]||(u[1]=i=>e.unref(Z)("preview"))},e.toDisplayString(e.unref(n).preview),9,Mn)],8,Vn),e.createElementVNode("div",Cn,[e.createElementVNode("div",Bn,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).undo,title:e.unref(n).undo,disabled:t.readonly||e.unref(y)||!e.unref(N),onClick:u[2]||(u[2]=i=>{e.unref(P).clearLocks(),e.unref(r).undo()})},[...u[52]||(u[52]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)])],8,Dn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).redo,title:e.unref(n).redo,disabled:t.readonly||e.unref(y)||!e.unref(g),onClick:u[3]||(u[3]=i=>{e.unref(P).clearLocks(),e.unref(r).redo()})},[...u[53]||(u[53]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)])],8,_n)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(y)||!e.unref(s),onClick:u[4]||(u[4]=(...i)=>e.unref(r).reset&&e.unref(r).reset(...i))},e.toDisplayString(e.unref(n).reset),9,Tn),t.save?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",disabled:t.readonly||e.unref(y)||e.unref(c)||e.unref(r).toolPending.value||!e.unref(S).ok||!e.unref(s),onClick:u[5]||(u[5]=(...i)=>e.unref(r).save&&e.unref(r).save(...i))},[e.createVNode(W._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(E)?e.unref(n).saving:e.unref(n).save),1)],8,$n)):e.createCommentVNode("",!0)])]),e.unref(V)?(e.openBlock(),e.createElementBlock("div",{key:0,role:"alertdialog","aria-label":e.unref(n).discardTitle,class:"mr-designer-confirm",onKeydown:u[8]||(u[8]=e.withKeys(e.withModifiers(i=>e.unref(r).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(n).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:Me,type:"button",onClick:u[6]||(u[6]=i=>e.unref(r).decideDiscard(!1))},e.toDisplayString(e.unref(n).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:u[7]||(u[7]=i=>e.unref(r).decideDiscard(!0))},e.toDisplayString(e.unref(n).discard),1)])],40,In)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(m)==="tools"}])},[e.unref(le).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:e.unref(r).toolEpoch.value,class:"mr-designer-tools"},[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(n).toolsSection},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["excel","rules","review"],i=>e.createElementVNode("button",{key:i,type:"button","aria-pressed":e.unref(ne)===i,onClick:z=>ne.value=i},e.toDisplayString(e.unref(n)[`${i}Tool`]),9,Rn)),64)),e.createElementVNode("span",null,e.toDisplayString(e.unref(n).toolsDescription),1)],8,Ln),e.createElementVNode("div",An,[e.unref(le).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(a),{key:0,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(h).id,name:e.unref(h).name},"lock-id":"",readonly:e.unref(K),accept:Fe,onDirty:u[9]||(u[9]=i=>e.unref(r).setToolPending("excel",i))},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(ne)==="excel"]]):e.createCommentVNode("",!0),e.unref(le).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(f),{key:1,document:e.unref(h),previous:e.unref(r).originalDocument.value,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(H)},null,8,["document","previous","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(ne)==="review"]]):e.createCommentVNode("",!0),e.unref(le).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Pn,[e.unref(w).length>1?(e.openBlock(),e.createElementBlock("label",Gn,[e.createTextVNode(e.toDisplayString(e.unref(n).area),1),e.createElementVNode("select",{value:e.unref(M),onChange:_e},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(i,z)=>(e.openBlock(),e.createElementBlock("option",{key:z,value:z},e.toDisplayString(i.component.title||i.component.dataset),9,Fn))),128))],40,zn)])):e.createCommentVNode("",!0),e.unref(x)?(e.openBlock(),e.createBlock(e.unref(o),{key:1,list:e.unref(x),datasets:t.datasets,"dataset-schema":e.unref(ae),"dataset-schemas":t.dataSchemas,readonly:e.unref(K),onChange:e.unref(ke),onDirty:u[10]||(u[10]=i=>e.unref(r).setToolPending("rules",i))},null,8,["list","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",Hn,e.toDisplayString(e.unref(n).rulesNeedList),1))],512)),[[e.vShow,e.unref(ne)==="rules"]]):e.createCommentVNode("",!0)])])),[[e.vShow,e.unref(m)==="tools"]]):e.createCommentVNode("",!0),e.unref(m)!=="tools"?(e.openBlock(),e.createElementBlock("aside",On,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:be,id:`${_}-panel-${e.unref(m)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(m)==="advanced"}]),role:"tabpanel","aria-labelledby":`${_}-tab-${e.unref(m)}`},[e.unref(m)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(w).length>1?(e.openBlock(),e.createElementBlock("label",Un,[e.createTextVNode(e.toDisplayString(e.unref(n).area),1),e.createElementVNode("select",{value:e.unref(M),onChange:_e},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w),(i,z)=>(e.openBlock(),e.createElementBlock("option",{key:z,value:z},e.toDisplayString(i.pageIndex+1)+" "+e.toDisplayString(e.unref(n).page)+" · "+e.toDisplayString(i.component.title||i.component.dataset),9,Kn))),128))],40,Wn)])):e.createCommentVNode("",!0),e.unref(x)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Jn,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:Ae,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(Ce),"aria-controls":`${_}-directory`,"aria-haspopup":"dialog",onClick:u[11]||(u[11]=(...i)=>e.unref(J).toggle&&e.unref(J).toggle(...i)),onKeydown:u[12]||(u[12]=e.withKeys((...i)=>e.unref(J).escape&&e.unref(J).escape(...i),["esc"]))},[e.createElementVNode("span",Xn,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(k)?.column.header||e.unref(n).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(k)?.column.field||"—"),1)]),e.createElementVNode("span",Yn,[e.createTextVNode(e.toDisplayString(e.unref(n).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(x).columns.length),1),e.createVNode(W._sfc_main,{name:"chevron-down",size:13})])],40,qn),e.createElementVNode("div",Qn,[e.createElementVNode("span",{"aria-label":e.unref(n).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(C)>=0?e.unref(C)+1:0),1),u[54]||(u[54]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(x).columns.length),1)],8,Zn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).previousColumn,title:e.unref(n).previousColumn,disabled:e.unref(C)<=0,onClick:u[13]||(u[13]=i=>e.unref(D).stepColumn(-1))},[e.createVNode(W._sfc_main,{name:"chevron-left",size:14})],8,eo),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).nextColumn,title:e.unref(n).nextColumn,disabled:e.unref(C)>=e.unref(x).columns.length-1,onClick:u[14]||(u[14]=i=>e.unref(D).stepColumn(1))},[e.createVNode(W._sfc_main,{name:"chevron-right",size:14})],8,to)])]),e.unref(k)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(y)||e.unref(c),"aria-label":e.unref(n).columnProperties},[e.createElementVNode("div",oo,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).header),1),e.createElementVNode("input",{value:e.unref(k).column.header,onInput:u[15]||(u[15]=i=>e.unref(r).setColumn(e.unref(k).index,"header",ee(i)))},null,40,lo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).field),1),e.createElementVNode("input",{value:e.unref(k).column.field,list:e.unref(ae)?`${_}-fields`:void 0,onChange:u[16]||(u[16]=i=>e.unref(r).setColumn(e.unref(k).index,"field",ee(i)))},null,40,ao)]),e.unref(ae)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${_}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ae).fields,i=>(e.openBlock(),e.createElementBlock("option",{key:i.field,value:i.field},e.toDisplayString(i.label)+" · "+e.toDisplayString(i.type)+" "+e.toDisplayString(i.unit),9,io))),128))],8,ro)):e.createCommentVNode("",!0)]),e.createElementVNode("div",so,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).formatGroup),1),e.createElementVNode("div",co,[e.createElementVNode("label",uo,[e.createTextVNode(e.toDisplayString(e.unref(n).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(k).column.widthMm,onChange:u[17]||(u[17]=i=>e.unref(r).setColumn(e.unref(k).index,"widthMm",ee(i)))},null,40,mo)]),e.createElementVNode("label",fo,[e.createTextVNode(e.toDisplayString(e.unref(n).semantic),1),e.createElementVNode("select",{value:e.unref(k).column.semanticRole||"text",onChange:u[18]||(u[18]=i=>e.unref(r).setColumn(e.unref(k).index,"semanticRole",ee(i)))},[e.createElementVNode("option",vo,e.toDisplayString(e.unref(n).identifier),1),e.createElementVNode("option",go,e.toDisplayString(e.unref(n).dimension),1),e.createElementVNode("option",ho,e.toDisplayString(e.unref(n).measure),1),e.createElementVNode("option",yo,e.toDisplayString(e.unref(n).date),1),e.createElementVNode("option",ko,e.toDisplayString(e.unref(n).text),1)],40,po)])]),e.createElementVNode("div",bo,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).bodyAlign),1),e.createVNode(Ve,{"model-value":e.unref(k).column.align??e.unref(k).column.style?.align??e.unref(x).align??"left",label:e.unref(n).bodyAlign,labels:Be.value,"auto-label":e.unref(n).autoShort,"allow-auto":"","onUpdate:modelValue":u[19]||(u[19]=i=>e.unref(r).setColumn(e.unref(k).index,"align",i))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",Eo,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).headerAlign),1),e.createVNode(Ve,{"model-value":e.unref(r).headerAlignments.value[e.unref(k).index]||"left",label:e.unref(n).headerAlign,labels:Be.value,"auto-label":e.unref(n).autoShort,"onUpdate:modelValue":u[20]||(u[20]=i=>e.unref(r).setColumn(e.unref(k).index,"headerAlign",i))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",wo,[e.createTextVNode(e.toDisplayString(e.unref(n).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(k).column.editable===!0,onChange:u[21]||(u[21]=i=>e.unref(r).setColumn(e.unref(k).index,"editable",Ee(i)))},null,40,So)]),e.createElementVNode("div",No,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(n).moveColumnLeft,title:e.unref(n).moveColumnLeft,disabled:e.unref(C)<=0,onClick:u[22]||(u[22]=i=>e.unref(R)(-1))},[e.createVNode(W._sfc_main,{name:"chevron-left",size:13})],8,Vo),e.createElementVNode("button",{type:"button","aria-label":e.unref(n).moveColumnRight,title:e.unref(n).moveColumnRight,disabled:e.unref(C)>=e.unref(x).columns.length-1,onClick:u[23]||(u[23]=i=>e.unref(R)(1))},[e.createVNode(W._sfc_main,{name:"chevron-right",size:13})],8,xo),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(k).column.hidden!==!0,disabled:e.unref(k).column.hidden!==!0&&e.unref(x).columns.filter(i=>!i.hidden).length===1,onChange:u[24]||(u[24]=i=>e.unref(r).setColumn(e.unref(k).index,"hidden",!Ee(i)))},null,40,Mo)])])],8,no)):e.createCommentVNode("",!0),e.unref(Ce)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${_}-directory`,ref_key:"directoryPanel",ref:Pe,role:"dialog","aria-label":e.unref(n).columnDirectory,class:"mr-designer-directory",onKeydown:u[34]||(u[34]=e.withKeys((...i)=>e.unref(J).escape&&e.unref(J).escape(...i),["esc"])),onFocusout:u[35]||(u[35]=(...i)=>e.unref(J).leave&&e.unref(J).leave(...i))},[e.createElementVNode("div",Bo,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(n).columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(x).columns.length),1)]),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).closeDirectory,onClick:u[25]||(u[25]=i=>e.unref(J).close(!0))},[e.createVNode(W._sfc_main,{name:"close",size:15})],8,Do)]),e.createElementVNode("div",_o,[e.createVNode(W._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:Ge,"onUpdate:modelValue":u[26]||(u[26]=i=>e.isRef($)?$.value=i:null),type:"search","aria-label":e.unref(n).columnsSearch,placeholder:e.unref(n).columnsSearch,onKeydown:u[27]||(u[27]=(...i)=>e.unref(J).searchKeydown&&e.unref(J).searchKeydown(...i))},null,40,To),[[e.vModelText,e.unref($)]]),e.unref($)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).clearSearch,title:e.unref(n).clearSearch,onClick:u[28]||(u[28]=i=>$.value="")},[e.createVNode(W._sfc_main,{name:"close",size:13})],8,$o)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Io,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(y)||e.unref(c)||!e.unref(T).length,onClick:u[29]||(u[29]=i=>e.unref(r).selectVisible(!0))},e.toDisplayString(e.unref(n).selectVisible),9,Lo),e.unref(I).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:u[30]||(u[30]=(...i)=>e.unref(r).clearSelection&&e.unref(r).clearSelection(...i))},e.toDisplayString(e.unref(n).clearSelection),1)):e.createCommentVNode("",!0),e.unref(I).length?(e.openBlock(),e.createElementBlock("span",Ro,e.toDisplayString(e.unref(n).columnsSelected)+" "+e.toDisplayString(e.unref(I).length),1)):(e.openBlock(),e.createElementBlock("span",Ao,e.toDisplayString(e.unref(T).length)+" / "+e.toDisplayString(e.unref(x).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:ze,class:"mr-designer-column-list","aria-label":e.unref(n).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(T),({column:i,index:z})=>(e.openBlock(),e.createElementBlock("div",{key:z,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(C)===z}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(n).selectColumn} ${i.header}`,checked:e.unref(I).includes(z),disabled:t.readonly||e.unref(y)||e.unref(c),onChange:ie=>e.unref(r).toggleColumn(z,Ee(ie))},null,40,Go),e.createElementVNode("button",{type:"button","data-column-index":z,"aria-pressed":e.unref(C)===z,tabindex:e.unref(Re)===z?0:-1,onClick:ie=>e.unref(J).choose(z),onKeydown:u[31]||(u[31]=(...ie)=>e.unref(J).navigate&&e.unref(J).navigate(...ie))},[e.createElementVNode("span",Fo,e.toDisplayString(z+1),1),e.createElementVNode("span",Ho,[e.createElementVNode("strong",null,e.toDisplayString(i.header),1),e.createElementVNode("small",null,e.toDisplayString(i.field),1)]),e.unref(C)===z?(e.openBlock(),e.createBlock(W._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,zo)],2))),128)),e.unref(T).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Oo,[e.createVNode(W._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(n).noColumns),1)]))],8,Po),e.unref(I).length?(e.openBlock(),e.createElementBlock("div",jo,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(n).batchBody,disabled:t.readonly||e.unref(y)||e.unref(c),onChange:u[32]||(u[32]=i=>Te(i,"align"))},[e.createElementVNode("option",Wo,e.toDisplayString(e.unref(n).chooseAlignment),1),e.createElementVNode("option",Ko,e.toDisplayString(e.unref(n).auto),1),e.createElementVNode("option",Jo,e.toDisplayString(e.unref(n).left),1),e.createElementVNode("option",qo,e.toDisplayString(e.unref(n).center),1),e.createElementVNode("option",Xo,e.toDisplayString(e.unref(n).right),1),e.createElementVNode("option",Yo,e.toDisplayString(e.unref(n).justify),1)],40,Uo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(n).batchHeader,disabled:t.readonly||e.unref(y)||e.unref(c),onChange:u[33]||(u[33]=i=>Te(i,"headerAlign"))},[e.createElementVNode("option",Zo,e.toDisplayString(e.unref(n).chooseAlignment),1),e.createElementVNode("option",el,e.toDisplayString(e.unref(n).left),1),e.createElementVNode("option",tl,e.toDisplayString(e.unref(n).center),1),e.createElementVNode("option",nl,e.toDisplayString(e.unref(n).right),1),e.createElementVNode("option",ol,e.toDisplayString(e.unref(n).justify),1)],40,Qo)])])):e.createCommentVNode("",!0)],40,Co)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",ll,e.toDisplayString(e.unref(n).noColumns),1))],64)):e.unref(m)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",al,[e.createElementVNode("select",{"aria-label":e.unref(n).insertComponent,disabled:e.unref(K),onChange:u[36]||(u[36]=(...i)=>e.unref(ue)&&e.unref(ue)(...i))},[e.createElementVNode("option",il,e.toDisplayString(e.unref(n).insertComponent),1),e.createElementVNode("option",sl,e.toDisplayString(e.unref(n).insertText),1),e.createElementVNode("option",cl,e.toDisplayString(e.unref(n).insertList),1),e.createElementVNode("option",dl,e.toDisplayString(e.unref(n).insertImage),1),e.createElementVNode("option",ul,e.toDisplayString(e.unref(n).insertRect),1)],40,rl),e.createElementVNode("button",{type:"button",title:e.unref(n).duplicateComponent,"aria-label":e.unref(n).duplicateComponent,disabled:e.unref(K)||!e.unref(X),onClick:u[37]||(u[37]=(...i)=>e.unref(P).duplicate&&e.unref(P).duplicate(...i))}," + ",8,ml),e.createElementVNode("button",{type:"button",title:e.unref(n).removeComponent,"aria-label":e.unref(n).removeComponent,disabled:e.unref(K)||!e.unref(X),onClick:u[38]||(u[38]=(...i)=>e.unref(P).remove&&e.unref(P).remove(...i))},[e.createVNode(W._sfc_main,{name:"close",size:14})],8,fl)]),e.unref(h).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",pl,[e.createTextVNode(e.toDisplayString(e.unref(n).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[39]||(u[39]=i=>e.isRef(q)?q.value=i:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).template.pages,(i,z)=>(e.openBlock(),e.createElementBlock("option",{key:z,value:z},e.toDisplayString(z+1),9,vl))),128))],512),[[e.vModelSelect,e.unref(q),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",gl,[e.createTextVNode(e.toDisplayString(e.unref(n).components),1),e.createElementVNode("select",{value:e.unref(U)?.pageIndex===e.unref(q)?e.unref(U).componentIndex:-1,onChange:u[40]||(u[40]=i=>De({pageIndex:e.unref(q),componentIndex:Number(ee(i))}))},[e.createElementVNode("option",yl,e.toDisplayString(e.unref(n).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).template.pages[e.unref(q)]?.components,(i,z)=>(e.openBlock(),e.createElementBlock("option",{key:z,value:z},e.toDisplayString(z+1)+" · "+e.toDisplayString(i.kind==="list"?i.title||i.dataset:i.text||i.kind),9,kl))),128))],40,hl)]),e.unref(P).selections.value.length?(e.openBlock(),e.createElementBlock("div",bl,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(P).selections.value.length)+" "+e.toDisplayString(e.unref(n).component),1),e.createElementVNode("button",{type:"button",disabled:e.unref(K),onClick:u[41]||(u[41]=(...i)=>e.unref(P).toggleLock&&e.unref(P).toggleLock(...i))},e.toDisplayString(e.unref(P).allLocked.value?e.unref(n).unlockSelection:e.unref(n).lockSelection),9,El),e.createElementVNode("select",{"aria-label":e.unref(n).alignSelection,disabled:e.unref(K)||e.unref(P).selections.value.length<2,onChange:u[42]||(u[42]=i=>{e.unref(P).align(ee(i)),i.target.value=""})},[e.createElementVNode("option",Sl,e.toDisplayString(e.unref(n).alignSelection),1),e.createElementVNode("option",Nl,e.toDisplayString(e.unref(n).leftEdges),1),e.createElementVNode("option",Vl,e.toDisplayString(e.unref(n).centers),1),e.createElementVNode("option",xl,e.toDisplayString(e.unref(n).rightEdges),1),e.createElementVNode("option",Ml,e.toDisplayString(e.unref(n).topEdges),1),e.createElementVNode("option",Cl,e.toDisplayString(e.unref(n).middles),1),e.createElementVNode("option",Bl,e.toDisplayString(e.unref(n).bottomEdges),1)],40,wl),e.createElementVNode("button",{type:"button",disabled:e.unref(K)||e.unref(P).selections.value.length<3,onClick:u[43]||(u[43]=i=>e.unref(P).distribute("horizontal"))},e.toDisplayString(e.unref(n).horizontalSpacing),9,Dl),e.createElementVNode("button",{type:"button",disabled:e.unref(K)||e.unref(P).selections.value.length<3,onClick:u[44]||(u[44]=i=>e.unref(P).distribute("vertical"))},e.toDisplayString(e.unref(n).verticalSpacing),9,_l),e.unref(P).allLocked.value?(e.openBlock(),e.createElementBlock("small",Tl,e.toDisplayString(e.unref(n).sessionLock),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(X)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",$l,[e.createElementVNode("button",{type:"button",disabled:e.unref(K)||e.unref(U)?.componentIndex===0,onClick:u[45]||(u[45]=i=>e.unref(P).reorder(-1))},e.toDisplayString(e.unref(n).backward),9,Il),e.createElementVNode("button",{type:"button",disabled:e.unref(K)||e.unref(U)?.componentIndex===(e.unref(h).template.pages[e.unref(q)]?.components.length??0)-1,onClick:u[46]||(u[46]=i=>e.unref(P).reorder(1))},e.toDisplayString(e.unref(n).forward),9,Ll)]),e.createVNode(Zt,{component:e.unref(X),disabled:e.unref(K)||e.unref(P).locked(e.unref(U)),messages:e.unref(n),onGeometry:e.unref(P).geometry,onPatch:e.unref(ye)},null,8,["component","disabled","messages","onGeometry","onPatch"]),e.unref(X).kind==="list"?(e.openBlock(),e.createBlock(sn,{key:0,list:e.unref(X),disabled:e.unref(K),messages:e.unref(n),onCommand:e.unref(G)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Rl,e.toDisplayString(e.unref(n).noComponent),1))],64)):e.unref(m)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).templateDetails),1),e.createElementVNode("label",Al,[e.createTextVNode(e.toDisplayString(e.unref(n).name),1),e.createElementVNode("input",{value:e.unref(h).name,disabled:t.readonly||e.unref(y)||e.unref(c),onInput:u[47]||(u[47]=i=>e.unref(r).setName(ee(i)))},null,40,Pl)]),e.createElementVNode("label",Gl,[e.createTextVNode(e.toDisplayString(e.unref(n).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(h).description,disabled:t.readonly||e.unref(y)||e.unref(c),onInput:u[48]||(u[48]=i=>e.unref(r).setDescription(ee(i)))},null,40,zl)]),e.createElementVNode("details",Fl,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(n).technicalDetails),1),e.createElementVNode("dl",Hl,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(n).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(h).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(n).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(h).revision||e.unref(n).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).advancedTitle),1),e.createElementVNode("label",Ol,[e.createTextVNode(e.toDisplayString(e.unref(n).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[49]||(u[49]=i=>e.isRef(b)?b.value=i:null),class:"mr-designer-json","aria-label":e.unref(n).json,disabled:t.readonly||e.unref(y),spellcheck:"false"},null,8,jl),[[e.vModelText,e.unref(b)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(y),onClick:u[50]||(u[50]=(...i)=>e.unref(r).applyJson&&e.unref(r).applyJson(...i))},e.toDisplayString(e.unref(n).applyJson),9,Ul)],64)),e.unref(c)?(e.openBlock(),e.createElementBlock("p",Wl,e.toDisplayString(e.unref(n).jsonPending),1)):e.createCommentVNode("",!0)],10,jn)])):e.createCommentVNode("",!0),e.unref(m)!=="tools"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(n).previewTitle},[e.unref(B)?(e.openBlock(),e.createElementBlock("div",Jl,e.toDisplayString(e.unref(B)),1)):e.createCommentVNode("",!0),e.unref(S).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",ql,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(S).errors,i=>(e.openBlock(),e.createElementBlock("li",{key:i.path},e.toDisplayString(i.path)+":"+e.toDisplayString(i.message),1))),128))])),e.unref(Y)==="design"&&e.unref(S).ok?(e.openBlock(),e.createBlock(kt,{key:2,document:e.unref(h),selection:e.unref(U),selections:e.unref(P).selections.value,locked:e.unref(P).locked,"active-column-index":e.unref(C),"page-index":e.unref(q),datasets:t.datasets,disabled:e.unref(K)||e.unref(r).isToolPending("rules"),messages:e.unref(n),onSelect:De,onGeometry:e.unref(P).geometry,onColumn:e.unref(D).activate,onWidth:u[51]||(u[51]=(i,z)=>e.unref(r).setColumn(i,"widthMm",String(z)))},null,8,["document","selection","selections","locked","active-column-index","page-index","datasets","disabled","messages","onGeometry","onColumn"])):e.unref(O)&&e.unref(S).ok?(e.openBlock(),e.createBlock(e.unref(Se.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(O),messages:{title:e.unref(n).previewTitle,columnDirectory:e.unref(n).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",Xl,e.toDisplayString(e.unref(n).invalid),1))],8,Kl)):e.createCommentVNode("",!0)],2)],8,bn))}}),Ql=W._export_sfc(Yl,[["__scopeId","data-v-84f96f7b"]]),Zl={stale:"输入或验收范围已变化,旧结果已失效,请重新运行检查。",scope:"上次实测范围",datasets:"个数据集",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:"调序"}},ea={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:"契约字段,不执行接口查询"},ta={restoreDraft:"恢复工具草稿",catalog:"规则与字段",searchFields:"搜索字段、类型或单位",useField:"使用此字段",shown:"显示",explanation:"计算解释",sourceValues:"源值",expression:"表达式",result:"结果",notChecked:"修改后请重新验算",nullReason:"空值依规则保留;空值传播与除零策略见计算边界。",sourceHint:"最多展示 5 条明细;分组和全量聚合以当前验算范围为准。",pending:"未应用配置",detail:"主从",matrix:"矩阵",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},na=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-CHi4Alqa.cjs"))),oa=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-CF7RplWm.cjs"))),la=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-CczJ6mJm.cjs")));exports.EXCEL_BINDING_MESSAGES=ea;exports.ExcelBindingWizard=oa;exports.RULE_EDITOR_MESSAGES=ta;exports.ReportTemplateEditor=Ql;exports.RuleEditor=la;exports.TEMPLATE_EDITOR_MESSAGES=ce;exports.TEMPLATE_REVIEW_MESSAGES=Zl;exports.TemplateReviewPanel=na;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),Ve=require("@agile-team/mach-report/vue"),R=require("@agile-team/mach-report"),W=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Me=require("./list-cell-BuYn4tGF.cjs"),Je=require("./tree-BX380Rr7.cjs"),ye=require("./style-UgIJSA1F.cjs");function Xe(t,i,a=3){if(!t.tree)return i.slice(0,a).map(l=>t.columns.map(o=>Me.resolveListSampleCell(t,o,l)));if(i.length>200)return[];try{return Je.createTreeTable(i,{...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(o=>t.columns.map(m=>Me.resolveTreeListSampleCell(t,m,o)))}catch{return[]}}const xe=96/25.4;function Be(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((i,a)=>i+a,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function ne(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:Be(t)}}function me(t,i){return i?t.template.pages[i.pageIndex]?.components[i.componentIndex]:void 0}function Ye(t,i="detail"){const a={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:i,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/svg+xml;charset=utf-8,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="180" height="90" viewBox="0 0 180 90"><rect width="180" height="90" rx="5" fill="#eff6ff"/><path d="m25 68 32-32 25 23 27-35 45 44" fill="none" stroke="#94b8e5" stroke-width="3"/><circle cx="45" cy="24" r="7" fill="#bfd5ef"/></svg>')}`}}function Ce(t,i,a=!1){const l=Math.max(2,Math.min(i.widthMm,t.widthMm)),o=Math.max(2,Math.min(i.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(i.widthMm-l,t.leftMm)),topMm:Math.max(0,Math.min(i.heightMm-(a?2:o),t.topMm)),widthMm:l,heightMm:o}}function be(t,i){const a=t.widthMm;if(Object.assign(t,{leftMm:i.leftMm,topMm:i.topMm,widthMm:i.widthMm}),t.kind!=="list")t.heightMm=i.heightMm;else if(a>0&&i.widthMm!==a){const l=i.widthMm/a;t.columns.forEach(o=>{o.widthMm=Math.round(o.widthMm*l*100)/100}),t.widthMm=t.columns.reduce((o,m)=>o+m.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(o=>o.widthMm))}}function Qe(t,i,a){if(i===a||!t.columns[i]||!t.columns[a])return!1;if(t.headerGrid){if(R.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:m})=>(m.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const o=ke(t);o.forEach(m=>{m.splice(a,0,m.splice(i,1)[0])}),t.headerGrid=Ee(o,t.columns.map(m=>m.widthMm),t.headerGrid.rowHeightsMm??o.map(()=>8))}return t.columns.splice(a,0,t.columns.splice(i,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(l=>l.widthMm)),!0}function ke(t){if(!t.headerGrid)return[t.columns.map(a=>({text:a.header}))];const i=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:a,ri:l,ci:o}of R.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)i[l][o]=a;return i}function Ee(t,i,a){const l=new Set;return{cells:t.map((m,p)=>m.flatMap((y,f)=>{if(l.has(`${p}:${f}`))return[];if(!y)return[null];for(let d=p;d<p+(y.rowSpan??1);d++)for(let v=f;v<f+(y.colSpan??1);v++)(d!==p||v!==f)&&l.add(`${d}:${v}`);return[y]})),colWidthsMm:i,rowHeightsMm:a}}function Ze(t){const i=ke(t),a=t.headerGrid?.rowHeightsMm??i.map(()=>8);i.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=Ee(i,t.columns.map(l=>l.widthMm),[8,...a])}function et(t,i,a,l){if(a>=l||a<0||l>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const o=ke(t),m=o[i];if(!m)throw new Error("表头行不存在。");const p=m.slice(a,l+1);if(p.some(f=>!f||(f.colSpan??1)!==1||(f.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const y=p[0];m[a]={...y,colSpan:l-a+1};for(let f=a+1;f<=l;f++)m[f]=null;t.headerGrid=Ee(o,t.columns.map(f=>f.widthMm),t.headerGrid?.rowHeightsMm??[8])}function tt(t,i,a){if(!t.headerGrid)return;const o=R.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:d,ci:v,cell:B})=>i>=d&&i<d+(B.rowSpan??1)&&a>=v&&a<v+(B.colSpan??1));if(!o)return;const m=ke(t),{ri:p,ci:y,cell:f}=o;for(let d=p;d<p+(f.rowSpan??1);d++)for(let v=y;v<y+(f.colSpan??1);v++){const B={...f,text:d===m.length-1?t.columns[v].header:f.text};delete B.colSpan,delete B.rowSpan,m[d][v]=B}t.headerGrid=Ee(m,t.columns.map(d=>d.widthMm),t.headerGrid.rowHeightsMm??m.map(()=>8))}function nt(t){const i=e.ref(),a=e.ref(.8),l=e.ref(0),o=e.ref(0),m=e.computed(()=>a.value*xe),p=e.computed(()=>t.document.template.pages[t.pageIndex]),y=e.computed(()=>p.value.widthMm*m.value>o.value-40);let f;function d(S){const u=i.value;if(!u)return;let s={leftMm:0,topMm:0,widthMm:p.value.widthMm,heightMm:p.value.heightMm};const E=t.selection?.pageIndex===t.pageIndex?p.value.components[t.selection.componentIndex]:void 0;S==="selection"&&E&&(s=ne(E));const k=(u.clientWidth-40)/(s.widthMm*xe),V=(u.clientHeight-40)/(s.heightMm*xe);a.value=Math.max(.05,Math.min(2,S==="width"?k:Math.min(k,V))),e.nextTick(()=>{u.scrollLeft=s.leftMm*m.value,u.scrollTop=s.topMm*m.value})}function v(){const S=i.value;S&&(o.value=S.clientWidth,l.value=S.scrollWidth>S.clientWidth?Math.round(S.scrollLeft/(S.scrollWidth-S.clientWidth)*100):0)}function B(S){const u=i.value;u&&(u.scrollLeft=(u.scrollWidth-u.clientWidth)*S/100),l.value=S}async function M(){await e.nextTick();const S=i.value,u=t.selection;if(!S||u?.pageIndex!==t.pageIndex)return;const s=p.value.components[u.componentIndex];if(!s)return;const E=ne(s);if(s.kind==="list"&&t.columnIndex!==void 0&&t.columnIndex>=0){const N=s;E.leftMm+=N.columns.slice(0,t.columnIndex).reduce((D,T)=>D+T.widthMm,0),E.widthMm=N.columns[t.columnIndex]?.widthMm??E.widthMm}const k=E.leftMm*m.value,V=E.topMm*m.value,g=k+E.widthMm*m.value,w=V+E.heightMm*m.value;k<S.scrollLeft?S.scrollLeft=k:g>S.scrollLeft+S.clientWidth-40&&(S.scrollLeft=Math.max(0,Math.min(k,g-S.clientWidth+40))),V<S.scrollTop?S.scrollTop=V:w>S.scrollTop+S.clientHeight-40&&(S.scrollTop=Math.max(0,Math.min(V,w-S.clientHeight+40))),v()}return e.watch(()=>[t.selection,t.columnIndex,t.pageIndex],()=>{M()}),e.onMounted(()=>{v(),typeof ResizeObserver<"u"&&i.value&&(f=new ResizeObserver(v),f.observe(i.value))}),e.onBeforeUnmount(()=>f?.disconnect()),{viewport:i,zoom:a,scale:m,page:p,wide:y,fraction:l,fit:d,sync:v,navigate:B}}function Ae(t,i,a){const l=t.filter(o=>o!==i).flatMap(o=>{const m=o[a],p=a==="leftMm"?o.widthMm:Be(o);return[m,m+p/2,m+p]});return[...new Set(l)].sort((o,m)=>o-m)}function ot(t,i){if(!t.length)return;let a=0,l=t.length;for(;a<l;){const p=a+l>>>1;t[p]<i?a=p+1:l=p}const o=t[Math.max(0,a-1)],m=t[Math.min(t.length-1,a)];return Math.abs(o-i)<Math.abs(m-i)?o:m}function Pe(t,i,a,l){let o=1/0,m={value:Math.round(t*2)/2};for(const p of[0,i/2,i]){const y=ot(a,t+p);if(y===void 0)continue;const f=Math.abs(y-t-p);f<=l&&f<o&&(o=f,m={value:y-p,guide:y})}return m}function at(t){let i;function a(l,o,m=!1){if(t.disabled()||l.button!==0)return;l.preventDefault(),l.stopPropagation(),i?.();const p=l.currentTarget.closest("[data-canvas-component]"),y=ne(o),f=l.clientX,d=l.clientY;let v=y,B=0;const M=t.scale.value,S=p.parentElement;let u,s;const E=()=>{for(const[I,$]of[["x",u],["y",s]])S.style.setProperty(`--mr-canvas-guide-${I}-display`,$===void 0?"none":"block"),$!==void 0&&S.style.setProperty(`--mr-canvas-guide-${I}`,`${$*M}px`)},k=()=>{B=0,E(),p.style.left=`${v.leftMm*M}px`,p.style.top=`${v.topMm*M}px`,p.style.width=`${v.widthMm*M}px`,p.style.height=`${v.heightMm*M}px`},V={leftMm:Ae(t.page().components,o,"leftMm"),topMm:Ae(t.page().components,o,"topMm")},g=I=>{const $=(I.clientX-f)/M,z=(I.clientY-d)/M,K=Pe(y.leftMm+$,y.widthMm,V.leftMm,5/M),n=Pe(y.topMm+z,y.heightMm,V.topMm,5/M);u=m?void 0:K.guide,s=m?void 0:n.guide,v=Ce(m?{...y,widthMm:Math.round((y.widthMm+$)*2)/2,heightMm:Math.round((y.heightMm+z)*2)/2}:{...y,leftMm:K.value,topMm:n.value},t.page(),o.kind==="list"),B||(B=requestAnimationFrame(k))},w=I=>{window.removeEventListener("pointermove",g),window.removeEventListener("pointerup",N),window.removeEventListener("pointercancel",D),window.removeEventListener("keydown",T),B&&cancelAnimationFrame(B),v=I?v:y,u=void 0,s=void 0,k(),i=void 0,I&&JSON.stringify(v)!==JSON.stringify(y)&&t.commit(v)},N=()=>w(!0),D=()=>w(!1),T=I=>{I.key==="Escape"&&(I.preventDefault(),D())};window.addEventListener("pointermove",g),window.addEventListener("pointerup",N),window.addEventListener("pointercancel",D),window.addEventListener("keydown",T),i=D}return e.watch(t.disabled,l=>{l&&i?.()}),e.watch(t.page,()=>i?.()),e.onBeforeUnmount(()=>i?.()),{start:a}}const lt={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:"请先修正模板错误,再预览或保存。"},rt={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:"矩形",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,支持 PNG/JPEG/WebP/SVG",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",flowLayout:"区域版式由 Excel 绑定向导管理;可编辑字段、格式与业务规则。",paramsTool:"查询参数",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",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:"定位字段"},fe={fitWidth:"适宽",fitPage:"适页",fitSelection:"选区",wideNavigation:"宽表导航",alignSelection:"对齐选区",leftEdges:"左对齐",centers:"水平居中",rightEdges:"右对齐",topEdges:"顶对齐",middles:"垂直居中",bottomEdges:"底对齐",horizontalSpacing:"水平等距",verticalSpacing:"垂直等距",lockSelection:"锁定位置",unlockSelection:"解锁位置",sessionLock:"位置锁定仅当前设计会话有效。",toolsPending:"工具中还有未应用的配置,请先应用或恢复后再保存模板。",...lt,...rt},it={class:"mr-canvas"},st={class:"mr-canvas-heading"},ct={class:"mr-canvas-view-tools"},dt=["disabled"],ut=["aria-label"],mt=["value"],pt=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],ft={class:"mr-canvas-table"},vt={key:1,class:"mr-canvas-table-row is-header"},gt=["onPointerdown"],ht={key:2,class:"mr-canvas-placeholder"},yt=["aria-label","onPointerdown"],bt={key:1,class:"mr-canvas-static-grid"},kt={key:0,class:"mr-canvas-grid-limit"},Et=["src"],wt=["aria-label","onPointerdown"],St={key:0,class:"mr-canvas-navigator"},Nt=["value","aria-label"],xt=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{},selections:{},locked:{type:Function},activeColumnIndex:{},pageIndex:{},datasets:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},messages:{}},emits:["select","geometry","column","width"],setup(t,{emit:i}){const a=t,l=i,o=e.computed(()=>({...fe,...a.messages})),{viewport:m,zoom:p,scale:y,page:f,wide:d,fraction:v,fit:B,sync:M,navigate:S}=nt({get document(){return a.document},get pageIndex(){return a.pageIndex},get selection(){return a.selection},get columnIndex(){return a.activeColumnIndex}}),u=e.computed(()=>a.disabled===!0||a.geometryDisabled===!0||!!f.value.flow),s=e.computed(()=>f.value.components.map(n=>n.kind==="list"?Xe(n,a.datasets?.[n.dataset]??[],f.value.flow||n.cardinality==="record"?1:3):[]));function E(n,h,b){return{width:`${h*y.value}px`,opacity:b?.35:1,textAlign:n.style?.align,paddingLeft:n.indentMm?`${n.indentMm*y.value}px`:void 0,color:n.style?.color,backgroundColor:n.style?.backgroundColor,fontWeight:n.style?.bold?"700":"400",fontSize:`${ye.resolveFontSize(n.style).fontSizePx*p.value}px`}}function k(n){return a.locked?.({pageIndex:a.pageIndex,componentIndex:n})===!0}function V(n,h){l("select",{pageIndex:a.pageIndex,componentIndex:h,additive:n.ctrlKey||n.metaKey||n.shiftKey}),!n.ctrlKey&&!n.metaKey&&!n.shiftKey&&!k(h)&&g.start(n,f.value.components[h])}const g=at({scale:y,page:()=>f.value,disabled:()=>u.value,commit:n=>l("geometry",n)});function w(n){return(a.selections??(a.selection?[a.selection]:[])).some(h=>h.pageIndex===a.pageIndex&&h.componentIndex===n)}function N(n){const h=f.value.components[n],b=h.kind==="list"?h.id:h.nid,C=f.value.flow?.bands.find(_=>_.componentIds.includes(b??"")),x=C&&h.kind==="list"?C.topMm+C.heightMm-h.topMm:Be(h);return{left:`${h.leftMm*y.value}px`,top:`${h.topMm*y.value}px`,width:`${h.widthMm*y.value}px`,height:`${x*y.value}px`}}function D(n,h){const b=f.value.components[h];if(u.value||k(h)||!w(h))return;const C={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},x=C[n.key];if(!x)return;n.preventDefault(),n.stopPropagation();const _=ne(b),P=n.shiftKey?5:.5;_.leftMm+=x[0]*P,_.topMm+=x[1]*P,l("geometry",_)}function T(n){let h=0;return n.columns.map(b=>(h+=b.widthMm,h))}function I(n){return n.grid?R.resolveGridLayout(n.grid,n.widthMm,n.heightMm).cells.slice(0,2e3):[]}function $(n){return n.headerGrid?R.resolveGridLayout(n.headerGrid,n.widthMm,n.headerGrid.rowHeightsMm?.reduce((h,b)=>h+b,0)??n.headerGrid.cells.length*8).cells:[]}let z;e.watch(()=>u.value,n=>{n&&z?.()}),e.watch(()=>a.document,()=>z?.()),e.onBeforeUnmount(()=>z?.());function K(n,h,b){if(u.value||n.button!==0)return;n.preventDefault(),n.stopPropagation(),z?.();const C=n.clientX,x=h.columns[b].widthMm;let _=x;const P=n.currentTarget,j=q=>{_=Math.max(2,Math.round((x+(q.clientX-C)/y.value)*2)/2),P.style.transform=`translateX(${(_-x)*y.value}px)`},re=()=>{window.removeEventListener("pointermove",j),window.removeEventListener("pointerup",X),window.removeEventListener("pointercancel",ee),window.removeEventListener("keydown",Q),P.style.transform="",z=void 0},X=()=>{re(),_!==x&&l("width",b,_)},ee=()=>re(),Q=q=>{q.key==="Escape"&&(q.preventDefault(),ee())};window.addEventListener("pointermove",j),window.addEventListener("pointerup",X),window.addEventListener("pointercancel",ee),window.addEventListener("keydown",Q),z=ee}return(n,h)=>(e.openBlock(),e.createElementBlock("div",it,[e.createElementVNode("div",st,[e.createElementVNode("span",null,e.toDisplayString(o.value.canvasHint),1),e.createElementVNode("nav",ct,[e.createElementVNode("button",{type:"button",onClick:h[0]||(h[0]=b=>e.unref(B)("width"))},e.toDisplayString(o.value.fitWidth),1),e.createElementVNode("button",{type:"button",onClick:h[1]||(h[1]=b=>e.unref(B)("page"))},e.toDisplayString(o.value.fitPage),1),e.createElementVNode("button",{type:"button",disabled:!t.selection,onClick:h[2]||(h[2]=b=>e.unref(B)("selection"))},e.toDisplayString(o.value.fitSelection),9,dt)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.zoom),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":h[3]||(h[3]=b=>e.isRef(p)?p.value=b:null),"aria-label":o.value.zoom},[[.5,.8,1,1.25].includes(e.unref(p))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("option",{key:0,value:e.unref(p)},e.toDisplayString(Math.round(e.unref(p)*100))+"%",9,mt)),h[6]||(h[6]=e.createElementVNode("option",{value:.5},"50%",-1)),h[7]||(h[7]=e.createElementVNode("option",{value:.8},"80%",-1)),h[8]||(h[8]=e.createElementVNode("option",{value:1},"100%",-1)),h[9]||(h[9]=e.createElementVNode("option",{value:1.25},"125%",-1))],8,ut),[[e.vModelSelect,e.unref(p),void 0,{number:!0}]])])]),e.createElementVNode("div",{ref_key:"viewport",ref:m,class:"mr-canvas-scroll",onScrollPassive:h[4]||(h[4]=(...b)=>e.unref(M)&&e.unref(M)(...b))},[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${e.unref(f).widthMm*e.unref(y)}px`,height:`${e.unref(f).heightMm*e.unref(y)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f).components,(b,C)=>(e.openBlock(),e.createElementBlock("div",{key:C,class:e.normalizeClass(["mr-canvas-component",{"is-selected":w(C),"is-locked":k(C)}]),"data-canvas-component":C,style:e.normalizeStyle(N(C)),role:"button","aria-label":`${o.value.component} ${C+1} ${b.kind}`,"aria-pressed":w(C),tabindex:w(C)?0:-1,onFocus:x=>!w(C)&&l("select",{pageIndex:t.pageIndex,componentIndex:C}),onPointerdown:x=>V(x,C),onClick:x=>x.detail===0&&!w(C)&&l("select",{pageIndex:t.pageIndex,componentIndex:C}),onKeydown:x=>D(x,C)},[b.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ft,[b.header!==!1&&b.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(b.headerGrid.rowHeightsMm?.reduce((x,_)=>x+_,0)??b.headerGrid.cells.length*8)*e.unref(y)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($(b),(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle({left:`${x.xMm*e.unref(y)}px`,top:`${x.yMm*e.unref(y)}px`,width:`${x.widthMm*e.unref(y)}px`,height:`${x.heightMm*e.unref(y)}px`,textAlign:x.cell.style?.align??"center"})},e.toDisplayString(x.cell.text),5))),128))],4)):b.header!==!1?(e.openBlock(),e.createElementBlock("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.columns,(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle(E({text:x.header,style:e.unref(Me.resolveListHeaderStyle)(b,x)},x.widthMm,x.hidden)),onPointerdown:e.withModifiers(P=>{l("select",{pageIndex:t.pageIndex,componentIndex:C}),l("column",_)},["stop"])},e.toDisplayString(x.header),45,gt))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value[C],(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.columns,(P,j)=>(e.openBlock(),e.createElementBlock("div",{key:j,style:e.normalizeStyle(E(x[j],P.widthMm,P.hidden))},e.toDisplayString(x[j].text),5))),128))]))),128)),s.value[C]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ht,e.toDisplayString(b.dataset)+" · "+e.toDisplayString(b.tree&&t.datasets?.[b.dataset]?.length?o.value.treeSampleHint:o.value.sampleRows),1))]),w(C)&&!u.value&&!k(C)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(T(b),(x,_)=>(e.openBlock(),e.createElementBlock("span",{key:_,class:"mr-canvas-column-handle","aria-label":`${o.value.resizeColumn} ${b.columns[_]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${x*e.unref(y)}px`}),onPointerdown:P=>K(P,b,_)},null,44,yt))),128)):e.createCommentVNode("",!0)],64)):b.grid?(e.openBlock(),e.createElementBlock("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I(b),(x,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,style:e.normalizeStyle({left:`${x.xMm*e.unref(y)}px`,top:`${x.yMm*e.unref(y)}px`,width:`${x.widthMm*e.unref(y)}px`,height:`${x.heightMm*e.unref(y)}px`,backgroundColor:x.cell.style?.backgroundColor,color:x.cell.style?.color,fontWeight:x.cell.style?.bold?"700":"400",fontSize:`${e.unref(ye.resolveFontSize)(x.cell.style).fontSizePx*e.unref(p)}px`,textAlign:x.cell.style?.align??"left"})},e.toDisplayString(x.cell.text),5))),128)),b.grid.cells.reduce((x,_)=>x+_.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",kt,e.toDisplayString(o.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):b.imageData?(e.openBlock(),e.createElementBlock("img",{key:2,src:b.imageData,alt:"",draggable:"false"},null,8,Et)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mr-canvas-content",style:e.normalizeStyle({color:b.style?.color,backgroundColor:b.style?.backgroundColor,fontWeight:b.style?.bold?"700":"400",fontSize:`${e.unref(ye.resolveFontSize)(b.style).fontSizePx*e.unref(p)}px`,textAlign:b.style?.align})},e.toDisplayString(b.text??b.fallbackText??(b.kind==="rect"?"":b.kind)),5)),w(C)&&!u.value&&!k(C)?(e.openBlock(),e.createElementBlock("span",{key:4,class:"mr-canvas-resize","aria-label":o.value.resizeComponent,role:"separator",onPointerdown:x=>e.unref(g).start(x,b,!0)},null,40,wt)):e.createCommentVNode("",!0)],46,pt))),128))],4)],544),e.unref(d)?(e.openBlock(),e.createElementBlock("footer",St,[e.createElementVNode("span",null,e.toDisplayString(o.value.wideNavigation),1),e.createElementVNode("input",{type:"range",min:"0",max:"100",value:e.unref(v),"aria-label":o.value.wideNavigation,onInput:h[5]||(h[5]=b=>e.unref(S)(Number(b.target.value)))},null,40,Nt),e.createElementVNode("span",null,e.toDisplayString(e.unref(v))+"%",1)])):e.createCommentVNode("",!0)]))}}),Vt=W._export_sfc(xt,[["__scopeId","data-v-b9edde8c"]]),Mt=["aria-label"],Ct=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],Dt={key:0},Bt={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},_t={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},Tt={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},It={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},$t={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},Rt=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:i}){const a=t,l=i,o=()=>a.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function m(p,y){if(!["ArrowLeft","ArrowRight","Home","End"].includes(p.key))return;p.preventDefault();const d=o(),v=d.indexOf(y),B=p.key==="Home"?0:p.key==="End"?d.length-1:(v+(p.key==="ArrowRight"?1:-1)+d.length)%d.length;l("update:modelValue",d[B]);const M=p.currentTarget.parentElement;await e.nextTick(),M?.querySelector(`[data-align="${d[B]}"]`)?.focus()}return(p,y)=>(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(o(),f=>(e.openBlock(),e.createElementBlock("button",{key:f,type:"button",role:"radio","data-align":f,"aria-label":t.labels[f],title:t.labels[f],"aria-checked":t.modelValue===f,tabindex:t.modelValue===f?0:-1,onClick:d=>l("update:modelValue",f),onKeydown:d=>m(d,f)},[f==="auto"?(e.openBlock(),e.createElementBlock("span",Dt,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",Bt,[f==="left"?(e.openBlock(),e.createElementBlock("path",_t)):f==="center"?(e.openBlock(),e.createElementBlock("path",Tt)):f==="right"?(e.openBlock(),e.createElementBlock("path",It)):(e.openBlock(),e.createElementBlock("path",$t))]))],40,Ct))),128))],8,Mt))}}),De=W._export_sfc(Rt,[["__scopeId","data-v-c85770c4"]]),Lt=["disabled"],At={class:"mr-component-dimensions"},Pt=["min","value","disabled","onChange"],Ft={key:0},Gt=["value","disabled"],zt={value:""},Ht={value:"header"},Ot={value:"footer"},jt={key:1},Ut=["value"],Wt=["value"],Kt={class:"mr-component-upload"},qt=["aria-label"],Jt={key:0,role:"alert"},Xt={key:3,class:"mr-component-type"},Yt={class:"mr-component-dimensions"},Qt=["value"],Zt=["checked"],en={class:"mr-component-dimensions"},tn=["value"],nn=["value"],on={key:4},an=["value"],ln=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},messages:{}},emits:["geometry","patch"],setup(t,{emit:i}){const a=t,l=i,o=e.computed(()=>({...fe,...a.messages})),m=e.ref(""),p=["leftMm","topMm","widthMm","heightMm"],y=e.computed(()=>[o.value.leftPosition,o.value.topPosition,o.value.componentWidth,o.value.componentHeight]);function f(S,u){if(a.disabled||a.geometryDisabled)return;const s=Number(u.target.value);Number.isFinite(s)&&l("geometry",{...ne(a.component),[S]:s})}function d(S,u){if(a.component.kind==="list")return;const s={...a.component.style,[S]:u};S==="fontSize"&&delete s.fontSizePx,l("patch",{style:s})}const v=e.computed(()=>({auto:o.value.auto,left:o.value.left,center:o.value.center,right:o.value.right,justify:o.value.justify}));function B(S){return S.target.value}async function M(S){const u=S.target,s=u.files?.[0];if(!s)return;m.value="";const E=a.component;try{if(s.size>4*1024*1024||!["image/png","image/jpeg","image/webp","image/svg+xml"].includes(s.type))throw new Error(o.value.imageBudget);const k=new FileReader,V=await new Promise((g,w)=>{k.onload=()=>g(String(k.result)),k.onerror=()=>w(k.error),k.readAsDataURL(s)});!a.disabled&&a.component===E&&l("patch",{imageData:V})}catch(k){m.value=k instanceof Error?k.message:String(k)}finally{u.value=""}}return(S,u)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("h3",null,e.toDisplayString(o.value.positionGroup),1),e.createElementVNode("div",At,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.filter(s=>t.component.kind!=="list"||s!=="heightMm"),(s,E)=>(e.openBlock(),e.createElementBlock("label",{key:s},[e.createTextVNode(e.toDisplayString(y.value[E]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:s==="widthMm"||s==="heightMm"?2:0,value:e.unref(ne)(t.component)[s],disabled:t.geometryDisabled,onChange:k=>f(s,k)},null,40,Pt)]))),128))]),t.component.kind!=="list"?(e.openBlock(),e.createElementBlock("label",Ft,[e.createTextVNode(e.toDisplayString(o.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",disabled:t.geometryDisabled,onChange:u[0]||(u[0]=s=>l("patch",{pageAnchor:B(s)||void 0}))},[e.createElementVNode("option",zt,e.toDisplayString(o.value.repeatNone),1),e.createElementVNode("option",Ht,e.toDisplayString(o.value.repeatHeader),1),e.createElementVNode("option",Ot,e.toDisplayString(o.value.repeatFooter),1)],40,Gt)])):e.createCommentVNode("",!0),e.createElementVNode("h3",null,e.toDisplayString(o.value.componentContent),1),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("label",jt,[e.createTextVNode(e.toDisplayString(o.value.componentText),1),e.createElementVNode("textarea",{rows:"4",value:t.component.text,onChange:u[1]||(u[1]=s=>l("patch",{text:B(s)}))},null,40,Ut)])):e.createCommentVNode("",!0),t.component.kind==="image"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:u[2]||(u[2]=s=>l("patch",{imageData:B(s)}))},null,40,Wt)]),e.createElementVNode("label",Kt,[e.createTextVNode(e.toDisplayString(o.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg,image/webp,image/svg+xml","aria-label":o.value.imageUpload,onChange:M},null,40,qt)]),m.value?(e.openBlock(),e.createElementBlock("p",Jt,e.toDisplayString(m.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Xt,[e.createElementVNode("h3",null,e.toDisplayString(o.value.textFormat),1),e.createElementVNode("div",Yt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(ye.resolveFontSize)(t.component.style).fontSizePt,onChange:u[3]||(u[3]=s=>d("fontSize",Number(B(s))))},null,40,Qt)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:u[4]||(u[4]=s=>d("bold",s.target.checked))},null,40,Zt)])]),e.createVNode(De,{"model-value":t.component.style?.align??"left",label:o.value.bodyAlign,labels:v.value,"auto-label":o.value.autoShort,"onUpdate:modelValue":u[5]||(u[5]=s=>d("align",s))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",en,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:u[6]||(u[6]=s=>d("color",B(s)))},null,40,tn)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:u[7]||(u[7]=s=>d("backgroundColor",B(s)))},null,40,nn)])])])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",on,[e.createTextVNode(e.toDisplayString(o.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:u[8]||(u[8]=s=>l("patch",{dataset:B(s)}))},null,40,an)])):e.createCommentVNode("",!0)],8,Lt))}}),rn=W._export_sfc(ln,[["__scopeId","data-v-5f04c2ed"]]),sn={class:"mr-header-editor"},cn=["disabled"],dn=["value"],un=["value"],mn=["value"],pn=["disabled"],fn=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:i}){const a=t,l=i,o=e.computed(()=>({...fe,...a.messages})),m=e.ref(0),p=e.ref(0),y=e.ref(Math.min(1,a.list.columns.length-1));return e.watch(()=>a.list.columns.length,f=>{p.value=Math.min(p.value,f-1),y.value=Math.min(y.value,f-1)}),(f,d)=>(e.openBlock(),e.createElementBlock("details",sn,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(o.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(o.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[0]||(d[0]=v=>m.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v-1},e.toDisplayString(v),9,dn))),128))],512),[[e.vModelSelect,m.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[1]||(d[1]=v=>p.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(v,B)=>(e.openBlock(),e.createElementBlock("option",{key:B,value:B},e.toDisplayString(B+1)+" · "+e.toDisplayString(v.header),9,un))),128))],512),[[e.vModelSelect,p.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(o.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[2]||(d[2]=v=>y.value=v)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(v,B)=>(e.openBlock(),e.createElementBlock("option",{key:B,value:B},e.toDisplayString(B+1)+" · "+e.toDisplayString(v.header),9,mn))),128))],512),[[e.vModelSelect,y.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:d[3]||(d[3]=v=>l("command",{action:"add",row:m.value,first:p.value,last:y.value}))},e.toDisplayString(o.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:p.value>=y.value,onClick:d[4]||(d[4]=v=>l("command",{action:"merge",row:m.value,first:p.value,last:y.value}))},e.toDisplayString(o.value.mergeHeader),9,pn),e.createElementVNode("button",{type:"button",onClick:d[5]||(d[5]=v=>l("command",{action:"split",row:m.value,first:p.value,last:y.value}))},e.toDisplayString(o.value.splitHeader),1)])],8,cn)]))}}),vn=W._export_sfc(fn,[["__scopeId","data-v-acd607ef"]]),le=t=>`${t.pageIndex}:${t.componentIndex}`;function gn(t,i,a){const l=e.ref([]),o=e.ref(new Set);e.watch(()=>t.value.id,()=>{l.value=[],o.value=new Set});const m=M=>!!M&&o.value.has(le(M));function p(M){const S={pageIndex:M.pageIndex,componentIndex:M.componentIndex};if(M.additive&&l.value.every(u=>u.pageIndex===M.pageIndex)){const u=l.value.some(s=>le(s)===le(M));l.value=u?l.value.filter(s=>le(s)!==le(M)):[...l.value,S],i.value=u?l.value.at(-1):S}else l.value=[S],i.value=S}const y=e.computed(()=>l.value.filter(M=>!m(M)));function f(){const M=new Set(o.value),S=l.value.every(m);for(const u of l.value)S?M.delete(le(u)):M.add(le(u));o.value=M}function d(M){y.value.length<2||a(S=>{const u=y.value.map(w=>me(S,w)).filter(Boolean),s=u.map(ne),E=Math.min(...s.map(w=>w.leftMm)),k=Math.min(...s.map(w=>w.topMm)),V=Math.max(...s.map(w=>w.leftMm+w.widthMm)),g=Math.max(...s.map(w=>w.topMm+w.heightMm));u.forEach((w,N)=>{const D=s[N],T={left:E,center:(E+V-D.widthMm)/2,right:V-D.widthMm},I={top:k,middle:(k+g-D.heightMm)/2,bottom:g-D.heightMm};M in T?D.leftMm=T[M]:D.topMm=I[M],be(w,D)})})}function v(M){y.value.length<3||a(S=>{const u=M==="horizontal"?"leftMm":"topMm",s=M==="horizontal"?"widthMm":"heightMm",E=y.value.map(N=>({component:me(S,N),box:ne(me(S,N))})).sort((N,D)=>N.box[u]-D.box[u]),k=E[0].box[u],g=(Math.max(...E.map(N=>N.box[u]+N.box[s]))-k-E.reduce((N,D)=>N+D.box[s],0))/(E.length-1);let w=k;for(const N of E)N.box[u]=w,be(N.component,N.box),w+=N.box[s]+g})}function B(M,S,u){function s(E){if(E.pageIndex!==M)return E;const k=E.componentIndex;return u===void 0?k===S?void 0:{...E,componentIndex:k>S?k-1:k}:{...E,componentIndex:k===S?u:k===u?S:k}}o.value=new Set([...o.value].flatMap(E=>{const[k,V]=E.split(":").map(Number),g=s({pageIndex:k,componentIndex:V});return g?[le(g)]:[]})),l.value=l.value.flatMap(E=>{const k=s(E);return k?[k]:[]})}return{clearLocks:()=>{o.value=new Set},selections:l,locked:m,allLocked:e.computed(()=>!!l.value.length&&l.value.every(m)),toggleLock:f,align:d,distribute:v,select:p,remap:B}}function hn(t,i){const a=e.ref("preview"),l=e.ref(),o=e.ref(0),m=e.computed(()=>!!t.value.template.pages[l.value?.pageIndex??o.value]?.flow),p=gn(t,l,s=>m.value?!1:i(s)),y=e.computed(()=>me(t.value,l.value));e.watch(t,()=>{y.value||(l.value=void 0),t.value.template.pages[o.value]||(o.value=0)});function f(s){p.select(s),o.value=s.pageIndex}function d(s){const E=l.value;return!E||p.locked(E)?!1:i(k=>{const V=me(k,E);V&&s(V,k)})}function v(s){m.value||d((E,k)=>{const V=k.template.pages[l.value.pageIndex];be(E,Ce(s,V,E.kind==="list"))})}function B(s){if(t.value.template.pages[o.value]?.flow)return;let E=-1;const k=o.value;i(V=>{const g=V.template.pages[k].components;g.push(Ye(s)),E=g.length-1})&&f({pageIndex:k,componentIndex:E})}function M(){if(m.value)return;const s=l.value;s&&!p.locked(s)&&i(E=>{E.template.pages[s.pageIndex].components.splice(s.componentIndex,1)})&&(p.remap(s.pageIndex,s.componentIndex),l.value=void 0)}function S(){if(m.value)return;const s=l.value;if(!s)return;let E=-1;i(k=>{const V=k.template.pages[s.pageIndex],g=JSON.parse(JSON.stringify(me(k,s))),w=ne(g);w.leftMm+=4,w.topMm+=4,be(g,Ce(w,V,g.kind==="list")),g.kind==="list"?delete g.id:(delete g.nid,delete g.rkey),V.components.push(g),E=V.components.length-1})&&f({pageIndex:s.pageIndex,componentIndex:E})}function u(s){if(m.value)return;const E=l.value;if(!E||p.locked(E))return;const k=E.componentIndex+s;t.value.template.pages[E.pageIndex]?.components[k]&&i(V=>{const g=V.template.pages[E.pageIndex].components;g.splice(k,0,g.splice(E.componentIndex,1)[0])})&&(p.remap(E.pageIndex,E.componentIndex,k),f({pageIndex:E.pageIndex,componentIndex:k}))}return{...p,mode:a,selection:l,pageIndex:o,active:y,geometryDisabled:m,select:f,mutate:d,geometry:v,insert:B,remove:M,duplicate:S,reorder:u}}function yn(t,i,a){const{draft:l,lists:o,selected:m,activeList:p,blocked:y,jsonPending:f,error:d}=t,{section:v,activeIndex:B}=i,M=hn(l,t.transaction),{mode:S,selection:u,pageIndex:s,active:E}=M,k=e.ref("excel"),V=e.ref(new Set);e.watch([v,k],()=>{v.value==="tools"&&(V.value=new Set([...V.value,k.value]))}),e.watch(u,h=>{if(!h)return;const b=o.value.findIndex(C=>C.pageIndex===h.pageIndex&&C.componentIndex===h.componentIndex);b>=0&&(m.value=b)}),e.watch([B,m,S,v],()=>{if(S.value!=="design"||v.value!=="fields")return;const h=o.value[m.value];h&&(u.value?.pageIndex!==h.pageIndex||u.value.componentIndex!==h.componentIndex)&&M.select({pageIndex:h.pageIndex,componentIndex:h.componentIndex})});const g=e.computed(()=>t.editingReadonly.value||y.value||f.value),w=e.computed(()=>a()?.[p.value?.dataset??""]);function N(h){S.value=h,v.value==="tools"&&(v.value=h==="design"?"component":"fields")}function D(h){if(!l.value.template.pages[h.pageIndex]?.components[h.componentIndex])return;if(M.select(h),l.value.template.pages[h.pageIndex]?.components[h.componentIndex]?.kind==="list"){const C=o.value.findIndex(x=>x.pageIndex===h.pageIndex&&x.componentIndex===h.componentIndex);C>=0&&(m.value=C),v.value="fields"}else v.value="component"}function T(h){const b=h.target;b.value&&(M.insert(b.value),S.value="design",v.value="component",b.value="")}function I(h){l.value.template.pages[s.value]?.flow&&["leftMm","topMm","widthMm","heightMm","pageAnchor","grid"].some(b=>b in h)||M.mutate((b,C)=>{if(b.kind!=="list"&&h.pageAnchor!==b.pageAnchor){const _=C.template.pages[u.value.pageIndex];h.pageAnchor==="header"&&(b.topMm=_.marginTopMm??0),h.pageAnchor==="footer"&&(b.topMm=Math.max(0,_.heightMm-(_.marginBottomMm??0)-b.heightMm))}const x=b;for(const[_,P]of Object.entries(h))P===void 0?delete x[_]:x[_]=P})}function $(h){const b=o.value[m.value];b&&t.transaction(C=>{C.template.pages[b.pageIndex].components[b.componentIndex]=h})}function z(h){const b=p.value;if(!b||l.value.template.pages[o.value[m.value]?.pageIndex??-1]?.flow)return;const C=JSON.parse(JSON.stringify(b));try{Qe(C,B.value,B.value+h)&&($(C),i.activate(B.value+h))}catch(x){d.value=x instanceof Error?x.message:String(x)}}function K(h){const b=o.value[m.value];!b||l.value.template.pages[b.pageIndex]?.flow||t.transaction(C=>{const x=C.template.pages[b.pageIndex].components[b.componentIndex];x?.kind==="list"&&(h.action==="add"?Ze(x):h.action==="merge"?et(x,h.row,h.first,h.last):tt(x,h.row,h.first))})}function n(h){const b=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(h.path??""),C=h.pageIndex??(b?Number(b[1]):void 0),x=h.componentIndex??(b?Number(b[2]):void 0);if(!(C===void 0||x===void 0)&&(S.value="design",D({pageIndex:C,componentIndex:x}),h.field)){const _=p.value?.columns.findIndex(P=>P.field===h.field);_!==void 0&&_>=0&&i.activate(_)}}return{mode:S,setMode:N,canvasSelection:u,canvasPage:s,canvasActive:E,tool:k,visitedTools:V,editDisabled:g,dataSchema:w,chooseCanvas:D,insertComponent:T,patchCanvas:I,changeList:$,moveColumn:z,headerCommand:K,locateReview:n,canvas:M}}function bn(t,i,a){if(!t.length)return;const l=Math.max(0,t.indexOf(i)),m={ArrowDown:Math.min(l+1,t.length-1),ArrowUp:Math.max(l-1,0),Home:0,End:t.length-1}[a];return m===void 0?void 0:t[m]}function kn(t,i,a){const l=e.ref(!1),o=e.ref(t.activeIndex.value),m=e.ref(null),p=e.ref(null),y=e.ref(null),f=e.ref(null);function d(V=!1){const g=f.value,w=g?.querySelector(`button[data-column-index="${o.value}"]`);if(!g||!w)return;V&&w.focus({preventScroll:!0});const N=g.getBoundingClientRect(),D=w.getBoundingClientRect(),T=N.top+g.clientTop,I=T+g.clientHeight;D.top<T?g.scrollTop+=D.top-T:D.bottom>I&&(g.scrollTop+=D.bottom-I)}async function v(V=!1){l.value&&(l.value=!1,V&&(await e.nextTick(),m.value?.focus({preventScroll:!0})))}async function B(){if(l.value)return v(!0);const V=a.value.map(g=>g.index);o.value=V.includes(t.activeIndex.value)?t.activeIndex.value:V[0]??-1,l.value=!0,await e.nextTick(),y.value?.focus({preventScroll:!0}),d()}function M(V){t.activate(V),v(!0)}function S(V){l.value&&(V.preventDefault(),V.stopPropagation(),v(!0))}async function u(V){const g=bn(a.value.map(w=>w.index),o.value,V.key);g!==void 0&&(o.value=g,V.preventDefault(),await e.nextTick(),d(!0))}async function s(V){if(!["ArrowDown","ArrowUp","Enter"].includes(V.key))return;V.preventDefault(),V.stopPropagation();const g=a.value.map(w=>w.index);if(g.length){if(V.key==="Enter"){g.includes(o.value)&&M(o.value);return}V.key==="ArrowUp"&&(o.value=g.at(-1)),await e.nextTick(),d(!0)}}function E(V){const g=V.target;!l.value||p.value?.contains(g)||m.value?.contains(g)||v()}function k(V){const g=V.relatedTarget;!g||p.value?.contains(g)||m.value?.contains(g)||v()}return e.watch(a,V=>{V.some(g=>g.index===o.value)||(o.value=V[0]?.index??-1)}),e.watch(i,()=>{v()}),e.onMounted(()=>document.addEventListener("pointerdown",E)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",E)),{open:l,cursor:o,trigger:m,panel:p,search:y,list:f,toggle:B,close:v,choose:M,escape:S,navigate:u,searchKeydown:s,leave:k}}function En(t,i,a,l){const o=e.ref(0),m=e.ref(""),p=e.ref([]),y=e.computed(()=>t.value.template.pages.flatMap((g,w)=>g.components.flatMap((N,D)=>N.kind==="list"?[{component:N,pageIndex:w,componentIndex:D}]:[]))),f=e.computed(()=>y.value[o.value]?.component),d=e.computed(()=>{const g=f.value;if(!g)return[];const w=g.columns.map(N=>N.headerStyle?.align??N.headerAlign??g.headerStyle?.align??g.headerAlign??N.style?.align??"center");if(g.headerGrid&&i())for(const N of R.resolveGridLayout(g.headerGrid,g.widthMm,100).cells)for(let D=N.ci;D<N.ci+(N.cell.colSpan??1);D++)w[D]=N.cell.style?.align??"left";return w}),v=e.computed(()=>{const g=m.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(f.value?.columns??[]).flatMap((w,N)=>{const D=`${w.header} ${w.field}`.toLocaleLowerCase();return g.every(T=>D.includes(T))?[{column:w,index:N}]:[]})});function B(g,w){p.value=w?[...new Set([...p.value,g])]:p.value.filter(N=>N!==g)}function M(g){for(const w of v.value)B(w.index,g)}function S(){p.value=[]}function u(g,w,N){if(!a())return;const D=y.value[o.value];if((w==="widthMm"||w==="hidden")&&D&&t.value.template.pages[D.pageIndex]?.flow)return;const T=f.value?.columns[g];T&&(w==="hidden"&&N===!0&&!f.value?.columns.some((I,$)=>$!==g&&!I.hidden)||(Object.assign(T,{[w]:w==="widthMm"?Number(N):N}),w==="header"&&E(g,String(N)),w==="headerAlign"&&k(g,N),w==="widthMm"&&s(),l()))}function s(){const g=y.value[o.value];if(!g)return;const w=g.component,N=t.value.template.pages[g.pageIndex],D=w.columns.map(T=>T.widthMm);w.headerGrid&&(w.headerGrid.colWidthsMm=D),N.layout==="wide"&&D.every(T=>Number.isFinite(T)&&T>0)&&(w.widthMm=D.reduce((T,I)=>T+I,0),N.widthMm=Math.max(...N.components.map(T=>T.leftMm+T.widthMm))+(N.marginRightMm??0))}function E(g,w){const N=f.value;if(!N?.headerGrid)return;const T=R.resolveGridLayout(N.headerGrid,N.widthMm,100).cells.filter(({ci:I,cell:$})=>I<=g&&I+($.colSpan??1)>g).slice(-1)[0];T&&(Object.assign(T.cell,{text:w,rawText:w,value:w}),N.columns.slice(T.ci,T.ci+(T.cell.colSpan??1)).forEach(I=>{I.header=w}))}function k(g,w){const N=f.value,D=N?.columns[g];if(D?.headerStyle?.align!==void 0&&(D.headerStyle={...D.headerStyle,align:w}),!N?.headerGrid)return;const I=R.resolveGridLayout(N.headerGrid,N.widthMm,100).cells.filter(({ci:$,cell:z})=>$<=g&&$+(z.colSpan??1)>g).slice(-1)[0];I&&(I.cell.style={...I.cell.style,align:w},N.columns.slice(I.ci,I.ci+(I.cell.colSpan??1)).forEach($=>{$.headerAlign=w,$.headerStyle?.align!==void 0&&($.headerStyle={...$.headerStyle,align:w})}))}function V(g,w){if(!(!a()||g==="headerAlign"&&w==="auto")){for(const N of p.value){const D=f.value?.columns[N];D&&(Object.assign(D,{[g]:w}),g==="headerAlign"&&k(N,w))}l()}}return{selected:o,query:m,selectedColumns:p,lists:y,activeList:f,headerAlignments:d,visibleColumns:v,toggleColumn:B,selectVisible:M,clearSelection:S,setColumn:u,alignColumns:V}}function se(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function wn(t,i,a=!1){const l={kind:"snapshot",value:i};if(a)return l;let o=0;const m=Math.min(t.length,i.length);for(;o<m&&t.charCodeAt(o)===i.charCodeAt(o);)o++;let p=t.length,y=i.length;for(;p>o&&y>o&&t.charCodeAt(p-1)===i.charCodeAt(y-1);)p--,y--;const f={kind:"patch",start:o,removed:t.slice(o,p),inserted:i.slice(o,y)};return se(f)<se(l)?f:l}function he(t,i,a=!1){if(i.kind==="snapshot")return i.value;const l=a?i.inserted:i.removed,o=a?i.removed:i.inserted;return t.slice(0,i.start)+o+t.slice(i.start+l.length)}function Sn(t,i={entries:100,bytes:16*1024*1024}){if(![i.entries,i.bytes].every(u=>Number.isSafeInteger(u)&&u>0))throw new RangeError("History budgets must be positive safe integers");const a=e.shallowRef([{kind:"snapshot",value:t}]),l=e.ref(0),o=e.ref(t),m=e.computed(()=>l.value>0),p=e.computed(()=>l.value+1<a.value.length),y=e.computed(()=>o.value),f=e.computed(()=>a.value.reduce((u,s)=>u+se(s),0));function d(u){a.value=[{kind:"snapshot",value:u}],l.value=0,o.value=u}function v(u){let s=u;for(;s>0&&a.value[s].kind!=="snapshot";)s--;let E="";for(;s<=u;s++)E=he(E,a.value[s]);return E}function B(u){let s=u.reduce((E,k)=>E+se(k),0);for(;u.length>1&&(u.length>i.entries||s>i.bytes);){const E=u[0],k=u[1],V={kind:"snapshot",value:he(E.value,k)};s+=se(V)-se(E)-se(k),u.splice(0,2,V)}return u}function M(u){if(o.value===u)return;const s=a.value.slice(0,l.value+1);s.push(wn(o.value,u,s.length%20===0)),a.value=B(s),l.value=a.value.length-1,o.value=u}function S(u){if(u<0?!m.value:!p.value)return;const s=a.value[l.value];return u<0&&s.kind==="patch"?o.value=he(o.value,s,!0):u>0?o.value=he(o.value,a.value[l.value+1]):o.value=v(l.value-1),l.value+=u,o.value}return{canUndo:m,canRedo:p,current:y,retainedBytes:f,reset:d,record:M,move:S}}function Nn(t){const i=e.shallowRef(null),a=e.ref(!1);let l,o=0;function m(f){l?.(f),l=void 0,i.value=null}function p(){o++,m(!1),a.value=!1}async function y(f){p();const d=o,v=t();a.value=!0;try{const B=await new Promise((M,S)=>{if(l=M,!v){i.value=f;return}Promise.resolve().then(()=>o===d?v(f):!1).then(u=>{o===d&&m(u===!0)},u=>{o===d&&(l=void 0,i.value=null,S(u))})});return o===d&&B===!0}finally{o===d&&(a.value=!1)}}return e.onBeforeUnmount(p),{confirmation:i,pending:a,decide:m,request:y,cancel:p}}function xn(t,i){const a=e.ref(R.parseReportTemplate(t.modelValue)),l=e.ref(R.serializeReportTemplate(a.value)),o=e.ref(R.serializeReportTemplate(a.value)),m=e.ref(""),p=e.ref(!1),y=e.computed(()=>({...fe,...t.messages})),f=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}}));Ve.provideMachReportConfig({get defaults(){return f.value}});let d,v=0;const B=e.computed(()=>R.validateReportTemplateDocument(a.value)),M=e.computed(()=>{try{return R.serializeReportTemplate(a.value)!==l.value}catch{return!0}}),S=e.ref(o.value),u=e.computed(()=>o.value!==S.value),s=e.ref({}),E=e.ref(0),k=e.ref(0),V=e.computed(()=>Object.values(s.value).some(Boolean));function g(L,A){s.value={...s.value,[L]:A},E.value++}const w=e.computed(()=>M.value||o.value!==S.value||V.value),N=()=>JSON.stringify({document:a.value,json:o.value,appliedJson:S.value}),D=Sn(N()),T=Nn(()=>t.beforeDiscard),I=e.computed(()=>p.value||T.pending.value),$=()=>!t.readonly&&!I.value&&!u.value,z=En(a,()=>B.value.ok,$,X),{selected:K,lists:n,activeList:h,headerAlignments:b,setColumn:C}=z;e.watch(K,()=>z.clearSelection());const x=e.computed(()=>B.value.ok?Ve.createLocalFetcher({draft:{template:a.value.template,datasets:t.datasets??{},params:[]}}):void 0);function _(){v++,d?.abort(),d=void 0,p.value=!1}let P=0;async function j(L="replace",A){if(!w.value)return!0;const O=N(),Z=E.value;try{return await T.request({reason:L,document:JSON.parse(JSON.stringify(a.value)),replacement:A?R.parseReportTemplate(A):void 0,pendingLocalChanges:!0})&&O===N()&&Z===E.value}catch(de){return m.value=de instanceof Error?de.message:String(de),!1}}function re(L){_(),a.value=L,l.value=R.serializeReportTemplate(L),o.value=l.value,S.value=o.value,m.value="",K.value=0,z.clearSelection(),s.value={},E.value++,k.value++,D.reset(N())}e.watch(()=>t.modelValue,async L=>{let A;try{A=R.parseReportTemplate(L)}catch(Z){m.value=Z instanceof Error?Z.message:String(Z);return}try{if(R.serializeReportTemplate(A)===R.serializeReportTemplate(a.value))return}catch{}const O=++P;if(_(),!await j("replace",A)){O===P&&B.value.ok&&i("update:modelValue",R.parseReportTemplate(a.value));return}O===P&&re(A)}),e.onBeforeUnmount(()=>{P++,_()});function X(){T.cancel(),m.value="",B.value.ok&&(o.value=R.serializeReportTemplate(a.value),S.value=o.value,i("update:modelValue",R.parseReportTemplate(a.value))),D.record(N())}function ee(L){if(!$())return!1;try{const A=R.parseReportTemplate(a.value);L(A);const O=R.validateReportTemplateDocument(A);if(!O.ok)throw new Error(O.errors.map(Z=>`${Z.path}: ${Z.message}`).join(`
2
+ `));return a.value=A,X(),!0}catch(A){return m.value=A instanceof Error?A.message:String(A),!1}}async function Q(L){if(!$())return!1;try{const A=R.parseReportTemplate(L);return!await j("replace",A)||!$()?!1:(a.value=A,K.value=0,z.clearSelection(),X(),!0)}catch(A){return m.value=A instanceof Error?A.message:String(A),!1}}function q(L){$()&&(a.value.name=L,X())}function oe(L){$()&&(a.value.description=L,X())}function te(){if(!(t.readonly||I.value))try{const L=R.parseReportTemplate(o.value);if(L.id!==a.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(L.revision!==a.value.revision)throw new Error("修订号由保存服务管理,不能在 JSON 中修改");a.value=L,K.value=0,z.clearSelection(),X()}catch(L){m.value=L instanceof Error?L.message:String(L)}}async function ie(){I.value||t.readonly||!await j("reset")||(re(R.parseReportTemplate(l.value)),i("update:modelValue",R.parseReportTemplate(a.value)))}function U(L){if(I.value||t.readonly)return;D.record(N());const A=D.move(L);if(!A)return;T.cancel();const O=JSON.parse(A);a.value=O.document,o.value=O.json,S.value=O.appliedJson,m.value="",K.value=0,z.clearSelection(),B.value.ok&&i("update:modelValue",R.parseReportTemplate(a.value))}async function ce(){if(!t.save||!$()||!B.value.ok)return;if(V.value){m.value=y.value.toolsPending;return}const L=++v;d=new AbortController,p.value=!0,m.value="";const A=R.parseReportTemplate(a.value);try{const O=R.parseReportTemplate(await t.save(A,{expectedRevision:A.revision,signal:d.signal}));if(L!==v)return;if(O.id!==A.id)throw new Error("保存服务返回了其他模板的文档");a.value=O,l.value=R.serializeReportTemplate(O),o.value=l.value,S.value=o.value,D.reset(N()),i("saved",R.parseReportTemplate(O)),i("update:modelValue",R.parseReportTemplate(O))}catch(O){L===v&&(m.value=O instanceof Error?O.message:String(O))}finally{L===v&&(p.value=!1,d=void 0)}}const we=e.computed(()=>D.canUndo.value||N()!==D.current.value),ve=e.computed(()=>D.canRedo.value&&N()===D.current.value);return{...z,editingReadonly:e.computed(()=>t.readonly===!0),transaction:ee,replaceDocument:Q,originalDocument:e.computed(()=>R.parseReportTemplate(l.value)),canUndo:we,canRedo:ve,undo:()=>U(-1),redo:()=>U(1),pendingLocalChanges:w,setToolPending:g,isToolPending:L=>s.value[L]===!0,toolEpoch:k,toolPending:V,jsonPending:u,blocked:I,confirmation:T.confirmation,decideDiscard:T.decide,guardChanges:j,draft:a,json:o,selected:K,error:m,saving:p,dirty:M,validation:B,lists:n,activeList:h,headerAlignments:b,previewOptions:f,fetcher:x,messages:y,setName:q,setDescription:oe,setColumn:C,applyJson:te,reset:ie,save:ce}}function Vn(t,i){const a=e.ref("fields"),l=()=>i.value?.columns.length?0:-1,o=e.ref(l()),m=e.computed(()=>{const f=i.value?.columns[o.value];return f?{column:f,index:o.value}:void 0});e.watch(t,()=>{o.value=l()}),e.watch(i,f=>{f?.columns[o.value]||(o.value=l())});function p(f){i.value?.columns[f]&&(o.value=f)}function y(f){const d=i.value?.columns.length??0;d&&(o.value=Math.max(0,Math.min(d-1,o.value+f)))}return{section:a,activeIndex:o,activeColumn:m,activate:p,stepColumn:y}}const Mn=["aria-label","aria-busy"],Cn={class:"mr-designer-bar"},Dn={class:"mr-designer-heading"},Bn=["aria-label"],_n=["id","aria-selected","aria-controls","tabindex","onClick"],Tn=["aria-label"],In=["aria-pressed"],$n=["aria-pressed"],Rn={class:"mr-designer-actions"},Ln={class:"mr-designer-history"},An=["aria-label","title","disabled"],Pn=["aria-label","title","disabled"],Fn=["disabled"],Gn=["disabled"],zn=["aria-label"],Hn=["aria-label"],On=["aria-pressed","onClick"],jn={class:"mr-designer-tool-content"},Un={key:3,class:"mr-designer-rule-workspace"},Wn={key:0},Kn=["value"],qn=["value"],Jn={key:2,class:"mr-designer-note"},Xn={key:1,class:"mr-designer-inspector"},Yn=["id","aria-labelledby"],Qn={key:0,class:"mr-designer-flow-note"},Zn={key:0,class:"mr-designer-area"},eo=["value"],to=["value"],no={class:"mr-designer-current"},oo=["aria-expanded","aria-controls"],ao={class:"mr-designer-current-name"},lo={class:"mr-designer-directory-entry"},ro={class:"mr-designer-field-position"},io=["aria-label"],so=["aria-label","title","disabled"],co=["aria-label","title","disabled"],uo=["disabled","aria-label"],mo={class:"mr-designer-property-group"},po=["value"],fo=["value","list"],vo=["id"],go=["value"],ho={class:"mr-designer-property-group"},yo={class:"mr-designer-format-pair"},bo={class:"mr-designer-stacked"},ko=["value","disabled"],Eo={class:"mr-designer-stacked"},wo=["value"],So={value:"identifier"},No={value:"dimension"},xo={value:"measure"},Vo={value:"date"},Mo={value:"text"},Co={class:"mr-designer-control-row"},Do={class:"mr-designer-control-row"},Bo={class:"mr-designer-toggle"},_o=["checked"],To={class:"mr-designer-column-structure"},Io=["aria-label","title","disabled"],$o=["aria-label","title","disabled"],Ro=["checked","disabled"],Lo=["id","aria-label"],Ao={class:"mr-designer-directory-heading"},Po=["aria-label"],Fo={class:"mr-designer-search"},Go=["aria-label","placeholder"],zo=["aria-label","title"],Ho={class:"mr-designer-column-tools"},Oo=["disabled"],jo={key:1,role:"status"},Uo={key:2},Wo=["aria-label"],Ko=["aria-label","checked","disabled","onChange"],qo=["data-column-index","aria-pressed","tabindex","onClick"],Jo={class:"mr-designer-column-number"},Xo={class:"mr-designer-column-name"},Yo={key:0,role:"status",class:"mr-designer-empty"},Qo={key:0,class:"mr-designer-batch"},Zo=["aria-label","disabled"],ea={value:""},ta={value:"auto"},na={value:"left"},oa={value:"center"},aa={value:"right"},la={value:"justify"},ra=["aria-label","disabled"],ia={value:""},sa={value:"left"},ca={value:"center"},da={value:"right"},ua={value:"justify"},ma={key:2,role:"status",class:"mr-designer-empty"},pa={class:"mr-designer-object-tools"},fa=["aria-label","disabled"],va={value:""},ga={value:"text"},ha={value:"list"},ya={value:"image"},ba={value:"rect"},ka=["title","aria-label","disabled"],Ea=["title","aria-label","disabled"],wa={key:0},Sa=["value"],Na={class:"mr-designer-stacked"},xa=["value"],Va={value:-1,disabled:""},Ma=["value"],Ca={key:1,class:"mr-designer-arrange"},Da=["disabled"],Ba=["aria-label","disabled"],_a={value:""},Ta={value:"left"},Ia={value:"center"},$a={value:"right"},Ra={value:"top"},La={value:"middle"},Aa={value:"bottom"},Pa=["disabled"],Fa=["disabled"],Ga={key:0},za={class:"mr-designer-layer-tools"},Ha=["disabled"],Oa=["disabled"],ja={key:3,class:"mr-designer-empty"},Ua={class:"mr-designer-stacked"},Wa=["value","disabled"],Ka={class:"mr-designer-stacked"},qa=["value","disabled"],Ja={class:"mr-designer-technical"},Xa={class:"mr-designer-identity"},Ya={class:"mr-designer-stacked mr-designer-json-label"},Qa=["aria-label","disabled"],Za=["disabled"],el={key:5,role:"status",class:"mr-designer-note mr-designer-pending"},tl=["aria-label"],nl={key:0,role:"alert",class:"mr-designer-error"},ol={key:1,role:"alert",class:"mr-designer-error"},al={key:4,class:"mr-designer-note mr-designer-invalid"},ll=e.defineComponent({__name:"ReportTemplateEditor",props:{modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},preview:{},beforeDiscard:{type:Function},save:{type:Function}},emits:["update:modelValue","saved","excel-bound"],setup(t,{expose:i,emit:a}){const l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-CjIiVox-.cjs"))),o=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-D-Hf5xfO.cjs"))),m=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-C2QsOHOs.cjs"))),p=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-DwtOcLue.cjs"))),y=t,f=a,d=xn(y,(G,c)=>{f(G==="saved"?"saved":"update:modelValue",c)}),{draft:v,json:B,selected:M,error:S,saving:u,pendingLocalChanges:s,jsonPending:E,blocked:k,confirmation:V,canUndo:g,canRedo:w,validation:N,lists:D,activeList:T,visibleColumns:I,query:$,selectedColumns:z,fetcher:K,messages:n}=d;function h(G){return d.transaction(c=>{c.template.params=G})}const b=Vn(M,T),{section:C,activeIndex:x,activeColumn:_}=b,P=`mr-designer-${e.getCurrentInstance()?.uid??0}`,j=["fields","component","template","tools","advanced"],re=yn(d,b,()=>y.dataSchemas),{mode:X,setMode:ee,canvasSelection:Q,canvasPage:q,canvasActive:oe,tool:te,visitedTools:ie,editDisabled:U,dataSchema:ce,chooseCanvas:we,insertComponent:ve,patchCanvas:L,changeList:A,moveColumn:O,headerCommand:Z,locateReview:de,canvas:H}=re,Y=e.computed(()=>!!v.value.template.pages[q.value]?.flow),pe=e.computed(()=>!!v.value.template.pages[D.value[M.value]?.pageIndex??-1]?.flow);function Fe(){C.value="tools",te.value="excel"}const Ge=e.computed(()=>u.value?n.value.saving:y.readonly?n.value.readonly:s.value?n.value.dirty:n.value.ready),_e=e.ref(null),Se=e.ref(null),J=kn(b,C,I),{open:Te,cursor:ze,trigger:He,panel:Oe,search:je,list:Ue}=J;e.watch(C,async()=>{await e.nextTick(),Se.value&&(Se.value.scrollTop=0)});const Ie=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));let ge=null;e.watch(V,async G=>{G?(ge=document.activeElement,await e.nextTick(),_e.value?.focus()):(await e.nextTick(),ge?.isConnected&&ge.focus(),ge=null)}),i({get pendingLocalChanges(){return s.value},get saving(){return u.value},get blocked(){return k.value},guardChanges:d.guardChanges,reset:d.reset,save:d.save});async function We(G){const c={...G.document,id:v.value.id};if(v.value.revision===void 0?delete c.revision:c.revision=v.value.revision,!await d.replaceDocument(c))return!1;const r=R.parseReportTemplate(d.draft.value);return f("excel-bound",{...G,document:r,session:{...G.session,identity:{id:r.id,name:r.name}}}),!0}async function $e(G){const c=D.value.findIndex(r=>r.pageIndex===G.pageIndex&&r.componentIndex===G.componentIndex);c>=0&&c!==M.value&&d.isToolPending("rules")&&!await d.guardChanges()||we(G)}async function Re(G){const c=G.target,r=Number(c.value);if(d.isToolPending("rules")&&!await d.guardChanges()){c.value=String(M.value);return}M.value=r}function ae(G){return G.target.value}function Ne(G){return G.target.checked}function Le(G,c){const r=G.target;d.alignColumns(c,r.value),r.value=""}async function Ke(G){const r={ArrowRight:1,ArrowLeft:-1,Home:-j.length,End:j.length}[G.key];if(r===void 0)return;G.preventDefault();const F=j.indexOf(C.value),ue=G.key==="Home"?0:G.key==="End"?j.length-1:(F+r+j.length)%j.length;C.value=j[ue];const qe=G.currentTarget.parentElement;await e.nextTick(),qe?.querySelector(`#${P}-tab-${C.value}`)?.focus()}return(G,c)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(n).title,"aria-busy":e.unref(u)},[e.createElementVNode("header",Cn,[e.createElementVNode("div",Dn,[e.createVNode(W._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(s)})},e.toDisplayString(Ge.value),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(n).sectionsLabel},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(j,r=>e.createElementVNode("button",{id:`${P}-tab-${r}`,key:r,type:"button",role:"tab","aria-selected":e.unref(C)===r,"aria-controls":`${P}-panel-${r}`,tabindex:e.unref(C)===r?0:-1,onClick:F=>C.value=r,onKeydown:Ke},e.toDisplayString(e.unref(n)[`${r}Section`]),41,_n)),64))],8,Bn),e.createElementVNode("div",{class:"mr-designer-mode",role:"group","aria-label":e.unref(n).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(X)==="design",onClick:c[0]||(c[0]=r=>e.unref(ee)("design"))},e.toDisplayString(e.unref(n).design),9,In),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(X)==="preview",onClick:c[1]||(c[1]=r=>e.unref(ee)("preview"))},e.toDisplayString(e.unref(n).preview),9,$n)],8,Tn),e.createElementVNode("div",Rn,[e.createElementVNode("div",Ln,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).undo,title:e.unref(n).undo,disabled:t.readonly||e.unref(k)||!e.unref(g),onClick:c[2]||(c[2]=r=>{e.unref(H).clearLocks(),e.unref(d).undo()})},[...c[53]||(c[53]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)])],8,An),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).redo,title:e.unref(n).redo,disabled:t.readonly||e.unref(k)||!e.unref(w),onClick:c[3]||(c[3]=r=>{e.unref(H).clearLocks(),e.unref(d).redo()})},[...c[54]||(c[54]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)])],8,Pn)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(k)||!e.unref(s),onClick:c[4]||(c[4]=(...r)=>e.unref(d).reset&&e.unref(d).reset(...r))},e.toDisplayString(e.unref(n).reset),9,Fn),t.save?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",disabled:t.readonly||e.unref(k)||e.unref(E)||e.unref(d).toolPending.value||!e.unref(N).ok||!e.unref(s),onClick:c[5]||(c[5]=(...r)=>e.unref(d).save&&e.unref(d).save(...r))},[e.createVNode(W._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(u)?e.unref(n).saving:e.unref(n).save),1)],8,Gn)):e.createCommentVNode("",!0)])]),e.unref(V)?(e.openBlock(),e.createElementBlock("div",{key:0,role:"alertdialog","aria-label":e.unref(n).discardTitle,class:"mr-designer-confirm",onKeydown:c[8]||(c[8]=e.withKeys(e.withModifiers(r=>e.unref(d).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(n).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:_e,type:"button",onClick:c[6]||(c[6]=r=>e.unref(d).decideDiscard(!1))},e.toDisplayString(e.unref(n).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:c[7]||(c[7]=r=>e.unref(d).decideDiscard(!0))},e.toDisplayString(e.unref(n).discard),1)])],40,zn)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(C)==="tools"}])},[e.unref(ie).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:e.unref(d).toolEpoch.value,class:"mr-designer-tools"},[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(n).toolsSection},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["excel","rules","params","review"],r=>e.createElementVNode("button",{key:r,type:"button","aria-pressed":e.unref(te)===r,onClick:F=>te.value=r},e.toDisplayString(e.unref(n)[`${r}Tool`]),9,On)),64)),e.createElementVNode("span",null,e.toDisplayString(e.unref(n).toolsDescription),1)],8,Hn),e.createElementVNode("div",jn,[e.unref(ie).has("params")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(o),{key:0,document:e.unref(v),readonly:e.unref(U),accept:h,onDirty:c[9]||(c[9]=r=>e.unref(d).setToolPending("params",r))},null,8,["document","readonly"])),[[e.vShow,e.unref(te)==="params"]]):e.createCommentVNode("",!0),e.unref(ie).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(l),{key:1,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(v).id,name:e.unref(v).name},"lock-id":"",readonly:e.unref(U),accept:We,onDirty:c[10]||(c[10]=r=>e.unref(d).setToolPending("excel",r))},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(te)==="excel"]]):e.createCommentVNode("",!0),e.unref(ie).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(p),{key:2,document:e.unref(v),previous:e.unref(d).originalDocument.value,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(de)},null,8,["document","previous","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(te)==="review"]]):e.createCommentVNode("",!0),e.unref(ie).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Un,[e.unref(D).length>1?(e.openBlock(),e.createElementBlock("label",Wn,[e.createTextVNode(e.toDisplayString(e.unref(n).area),1),e.createElementVNode("select",{value:e.unref(M),onChange:Re},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(D),(r,F)=>(e.openBlock(),e.createElementBlock("option",{key:F,value:F},e.toDisplayString(r.component.title||r.component.dataset),9,qn))),128))],40,Kn)])):e.createCommentVNode("",!0),e.unref(T)?(e.openBlock(),e.createBlock(e.unref(m),{key:1,list:e.unref(T),datasets:t.datasets,"dataset-schema":e.unref(ce),"dataset-schemas":t.dataSchemas,readonly:e.unref(U),onChange:e.unref(A),onDirty:c[11]||(c[11]=r=>e.unref(d).setToolPending("rules",r))},null,8,["list","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",Jn,e.toDisplayString(e.unref(n).rulesNeedList),1))],512)),[[e.vShow,e.unref(te)==="rules"]]):e.createCommentVNode("",!0)])])),[[e.vShow,e.unref(C)==="tools"]]):e.createCommentVNode("",!0),e.unref(C)!=="tools"?(e.openBlock(),e.createElementBlock("aside",Xn,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:Se,id:`${P}-panel-${e.unref(C)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(C)==="advanced"}]),role:"tabpanel","aria-labelledby":`${P}-tab-${e.unref(C)}`},[Y.value||pe.value?(e.openBlock(),e.createElementBlock("div",Qn,[e.createElementVNode("small",null,e.toDisplayString(e.unref(n).flowLayout),1),e.createElementVNode("button",{type:"button",onClick:Fe},e.toDisplayString(e.unref(n).excelTool)+" ↗",1)])):e.createCommentVNode("",!0),e.unref(C)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(D).length>1?(e.openBlock(),e.createElementBlock("label",Zn,[e.createTextVNode(e.toDisplayString(e.unref(n).area),1),e.createElementVNode("select",{value:e.unref(M),onChange:Re},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(D),(r,F)=>(e.openBlock(),e.createElementBlock("option",{key:F,value:F},e.toDisplayString(r.pageIndex+1)+" "+e.toDisplayString(e.unref(n).page)+" · "+e.toDisplayString(r.component.title||r.component.dataset),9,to))),128))],40,eo)])):e.createCommentVNode("",!0),e.unref(T)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",no,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:He,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(Te),"aria-controls":`${P}-directory`,"aria-haspopup":"dialog",onClick:c[12]||(c[12]=(...r)=>e.unref(J).toggle&&e.unref(J).toggle(...r)),onKeydown:c[13]||(c[13]=e.withKeys((...r)=>e.unref(J).escape&&e.unref(J).escape(...r),["esc"]))},[e.createElementVNode("span",ao,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(_)?.column.header||e.unref(n).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(_)?.column.field||"—"),1)]),e.createElementVNode("span",lo,[e.createTextVNode(e.toDisplayString(e.unref(n).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(T).columns.length),1),e.createVNode(W._sfc_main,{name:"chevron-down",size:13})])],40,oo),e.createElementVNode("div",ro,[e.createElementVNode("span",{"aria-label":e.unref(n).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(x)>=0?e.unref(x)+1:0),1),c[55]||(c[55]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(T).columns.length),1)],8,io),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).previousColumn,title:e.unref(n).previousColumn,disabled:e.unref(x)<=0,onClick:c[14]||(c[14]=r=>e.unref(b).stepColumn(-1))},[e.createVNode(W._sfc_main,{name:"chevron-left",size:14})],8,so),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).nextColumn,title:e.unref(n).nextColumn,disabled:e.unref(x)>=e.unref(T).columns.length-1,onClick:c[15]||(c[15]=r=>e.unref(b).stepColumn(1))},[e.createVNode(W._sfc_main,{name:"chevron-right",size:14})],8,co)])]),e.unref(_)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(k)||e.unref(E),"aria-label":e.unref(n).columnProperties},[e.createElementVNode("div",mo,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).header),1),e.createElementVNode("input",{value:e.unref(_).column.header,onInput:c[16]||(c[16]=r=>e.unref(d).setColumn(e.unref(_).index,"header",ae(r)))},null,40,po)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).field),1),e.createElementVNode("input",{value:e.unref(_).column.field,list:e.unref(ce)?`${P}-fields`:void 0,onChange:c[17]||(c[17]=r=>e.unref(d).setColumn(e.unref(_).index,"field",ae(r)))},null,40,fo)]),e.unref(ce)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${P}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ce).fields,r=>(e.openBlock(),e.createElementBlock("option",{key:r.field,value:r.field},e.toDisplayString(r.label)+" · "+e.toDisplayString(r.type)+" "+e.toDisplayString(r.unit),9,go))),128))],8,vo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ho,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).formatGroup),1),e.createElementVNode("div",yo,[e.createElementVNode("label",bo,[e.createTextVNode(e.toDisplayString(e.unref(n).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(_).column.widthMm,disabled:pe.value,onChange:c[18]||(c[18]=r=>e.unref(d).setColumn(e.unref(_).index,"widthMm",ae(r)))},null,40,ko)]),e.createElementVNode("label",Eo,[e.createTextVNode(e.toDisplayString(e.unref(n).semantic),1),e.createElementVNode("select",{value:e.unref(_).column.semanticRole||"text",onChange:c[19]||(c[19]=r=>e.unref(d).setColumn(e.unref(_).index,"semanticRole",ae(r)))},[e.createElementVNode("option",So,e.toDisplayString(e.unref(n).identifier),1),e.createElementVNode("option",No,e.toDisplayString(e.unref(n).dimension),1),e.createElementVNode("option",xo,e.toDisplayString(e.unref(n).measure),1),e.createElementVNode("option",Vo,e.toDisplayString(e.unref(n).date),1),e.createElementVNode("option",Mo,e.toDisplayString(e.unref(n).text),1)],40,wo)])]),e.createElementVNode("div",Co,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).bodyAlign),1),e.createVNode(De,{"model-value":e.unref(_).column.align??e.unref(_).column.style?.align??e.unref(T).align??"left",label:e.unref(n).bodyAlign,labels:Ie.value,"auto-label":e.unref(n).autoShort,"allow-auto":"","onUpdate:modelValue":c[20]||(c[20]=r=>e.unref(d).setColumn(e.unref(_).index,"align",r))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",Do,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).headerAlign),1),e.createVNode(De,{"model-value":e.unref(d).headerAlignments.value[e.unref(_).index]||"left",label:e.unref(n).headerAlign,labels:Ie.value,"auto-label":e.unref(n).autoShort,"onUpdate:modelValue":c[21]||(c[21]=r=>e.unref(d).setColumn(e.unref(_).index,"headerAlign",r))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",Bo,[e.createTextVNode(e.toDisplayString(e.unref(n).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(_).column.editable===!0,onChange:c[22]||(c[22]=r=>e.unref(d).setColumn(e.unref(_).index,"editable",Ne(r)))},null,40,_o)]),e.createElementVNode("div",To,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(n).moveColumnLeft,title:e.unref(n).moveColumnLeft,disabled:pe.value||e.unref(x)<=0,onClick:c[23]||(c[23]=r=>e.unref(O)(-1))},[e.createVNode(W._sfc_main,{name:"chevron-left",size:13})],8,Io),e.createElementVNode("button",{type:"button","aria-label":e.unref(n).moveColumnRight,title:e.unref(n).moveColumnRight,disabled:pe.value||e.unref(x)>=e.unref(T).columns.length-1,onClick:c[24]||(c[24]=r=>e.unref(O)(1))},[e.createVNode(W._sfc_main,{name:"chevron-right",size:13})],8,$o),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(_).column.hidden!==!0,disabled:pe.value||e.unref(_).column.hidden!==!0&&e.unref(T).columns.filter(r=>!r.hidden).length===1,onChange:c[25]||(c[25]=r=>e.unref(d).setColumn(e.unref(_).index,"hidden",!Ne(r)))},null,40,Ro)])])],8,uo)):e.createCommentVNode("",!0),e.unref(Te)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${P}-directory`,ref_key:"directoryPanel",ref:Oe,role:"dialog","aria-label":e.unref(n).columnDirectory,class:"mr-designer-directory",onKeydown:c[35]||(c[35]=e.withKeys((...r)=>e.unref(J).escape&&e.unref(J).escape(...r),["esc"])),onFocusout:c[36]||(c[36]=(...r)=>e.unref(J).leave&&e.unref(J).leave(...r))},[e.createElementVNode("div",Ao,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(n).columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(T).columns.length),1)]),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).closeDirectory,onClick:c[26]||(c[26]=r=>e.unref(J).close(!0))},[e.createVNode(W._sfc_main,{name:"close",size:15})],8,Po)]),e.createElementVNode("div",Fo,[e.createVNode(W._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:je,"onUpdate:modelValue":c[27]||(c[27]=r=>e.isRef($)?$.value=r:null),type:"search","aria-label":e.unref(n).columnsSearch,placeholder:e.unref(n).columnsSearch,onKeydown:c[28]||(c[28]=(...r)=>e.unref(J).searchKeydown&&e.unref(J).searchKeydown(...r))},null,40,Go),[[e.vModelText,e.unref($)]]),e.unref($)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(n).clearSearch,title:e.unref(n).clearSearch,onClick:c[29]||(c[29]=r=>$.value="")},[e.createVNode(W._sfc_main,{name:"close",size:13})],8,zo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ho,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(k)||e.unref(E)||!e.unref(I).length,onClick:c[30]||(c[30]=r=>e.unref(d).selectVisible(!0))},e.toDisplayString(e.unref(n).selectVisible),9,Oo),e.unref(z).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:c[31]||(c[31]=(...r)=>e.unref(d).clearSelection&&e.unref(d).clearSelection(...r))},e.toDisplayString(e.unref(n).clearSelection),1)):e.createCommentVNode("",!0),e.unref(z).length?(e.openBlock(),e.createElementBlock("span",jo,e.toDisplayString(e.unref(n).columnsSelected)+" "+e.toDisplayString(e.unref(z).length),1)):(e.openBlock(),e.createElementBlock("span",Uo,e.toDisplayString(e.unref(I).length)+" / "+e.toDisplayString(e.unref(T).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:Ue,class:"mr-designer-column-list","aria-label":e.unref(n).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(I),({column:r,index:F})=>(e.openBlock(),e.createElementBlock("div",{key:F,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(x)===F}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(n).selectColumn} ${r.header}`,checked:e.unref(z).includes(F),disabled:t.readonly||e.unref(k)||e.unref(E),onChange:ue=>e.unref(d).toggleColumn(F,Ne(ue))},null,40,Ko),e.createElementVNode("button",{type:"button","data-column-index":F,"aria-pressed":e.unref(x)===F,tabindex:e.unref(ze)===F?0:-1,onClick:ue=>e.unref(J).choose(F),onKeydown:c[32]||(c[32]=(...ue)=>e.unref(J).navigate&&e.unref(J).navigate(...ue))},[e.createElementVNode("span",Jo,e.toDisplayString(F+1),1),e.createElementVNode("span",Xo,[e.createElementVNode("strong",null,e.toDisplayString(r.header),1),e.createElementVNode("small",null,e.toDisplayString(r.field),1)]),e.unref(x)===F?(e.openBlock(),e.createBlock(W._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,qo)],2))),128)),e.unref(I).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Yo,[e.createVNode(W._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(n).noColumns),1)]))],8,Wo),e.unref(z).length?(e.openBlock(),e.createElementBlock("div",Qo,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(n).batchBody,disabled:t.readonly||e.unref(k)||e.unref(E),onChange:c[33]||(c[33]=r=>Le(r,"align"))},[e.createElementVNode("option",ea,e.toDisplayString(e.unref(n).chooseAlignment),1),e.createElementVNode("option",ta,e.toDisplayString(e.unref(n).auto),1),e.createElementVNode("option",na,e.toDisplayString(e.unref(n).left),1),e.createElementVNode("option",oa,e.toDisplayString(e.unref(n).center),1),e.createElementVNode("option",aa,e.toDisplayString(e.unref(n).right),1),e.createElementVNode("option",la,e.toDisplayString(e.unref(n).justify),1)],40,Zo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(n).batchHeader,disabled:t.readonly||e.unref(k)||e.unref(E),onChange:c[34]||(c[34]=r=>Le(r,"headerAlign"))},[e.createElementVNode("option",ia,e.toDisplayString(e.unref(n).chooseAlignment),1),e.createElementVNode("option",sa,e.toDisplayString(e.unref(n).left),1),e.createElementVNode("option",ca,e.toDisplayString(e.unref(n).center),1),e.createElementVNode("option",da,e.toDisplayString(e.unref(n).right),1),e.createElementVNode("option",ua,e.toDisplayString(e.unref(n).justify),1)],40,ra)])])):e.createCommentVNode("",!0)],40,Lo)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",ma,e.toDisplayString(e.unref(n).noColumns),1))],64)):e.unref(C)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",pa,[e.createElementVNode("select",{"aria-label":e.unref(n).insertComponent,disabled:e.unref(U)||Y.value,onChange:c[37]||(c[37]=(...r)=>e.unref(ve)&&e.unref(ve)(...r))},[e.createElementVNode("option",va,e.toDisplayString(e.unref(n).insertComponent),1),e.createElementVNode("option",ga,e.toDisplayString(e.unref(n).insertText),1),e.createElementVNode("option",ha,e.toDisplayString(e.unref(n).insertList),1),e.createElementVNode("option",ya,e.toDisplayString(e.unref(n).insertImage),1),e.createElementVNode("option",ba,e.toDisplayString(e.unref(n).insertRect),1)],40,fa),e.createElementVNode("button",{type:"button",title:e.unref(n).duplicateComponent,"aria-label":e.unref(n).duplicateComponent,disabled:e.unref(U)||Y.value||!e.unref(oe),onClick:c[38]||(c[38]=(...r)=>e.unref(H).duplicate&&e.unref(H).duplicate(...r))}," + ",8,ka),e.createElementVNode("button",{type:"button",title:e.unref(n).removeComponent,"aria-label":e.unref(n).removeComponent,disabled:e.unref(U)||Y.value||!e.unref(oe),onClick:c[39]||(c[39]=(...r)=>e.unref(H).remove&&e.unref(H).remove(...r))},[e.createVNode(W._sfc_main,{name:"close",size:14})],8,Ea)]),e.unref(v).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",wa,[e.createTextVNode(e.toDisplayString(e.unref(n).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[40]||(c[40]=r=>e.isRef(q)?q.value=r:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).template.pages,(r,F)=>(e.openBlock(),e.createElementBlock("option",{key:F,value:F},e.toDisplayString(F+1),9,Sa))),128))],512),[[e.vModelSelect,e.unref(q),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",Na,[e.createTextVNode(e.toDisplayString(e.unref(n).components),1),e.createElementVNode("select",{value:e.unref(Q)?.pageIndex===e.unref(q)?e.unref(Q).componentIndex:-1,onChange:c[41]||(c[41]=r=>$e({pageIndex:e.unref(q),componentIndex:Number(ae(r))}))},[e.createElementVNode("option",Va,e.toDisplayString(e.unref(n).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).template.pages[e.unref(q)]?.components,(r,F)=>(e.openBlock(),e.createElementBlock("option",{key:F,value:F},e.toDisplayString(F+1)+" · "+e.toDisplayString(r.kind==="list"?r.title||r.dataset:r.text||r.kind),9,Ma))),128))],40,xa)]),e.unref(H).selections.value.length?(e.openBlock(),e.createElementBlock("div",Ca,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(H).selections.value.length)+" "+e.toDisplayString(e.unref(n).component),1),e.createElementVNode("button",{type:"button",disabled:e.unref(U),onClick:c[42]||(c[42]=(...r)=>e.unref(H).toggleLock&&e.unref(H).toggleLock(...r))},e.toDisplayString(e.unref(H).allLocked.value?e.unref(n).unlockSelection:e.unref(n).lockSelection),9,Da),e.createElementVNode("select",{"aria-label":e.unref(n).alignSelection,disabled:e.unref(U)||Y.value||e.unref(H).selections.value.length<2,onChange:c[43]||(c[43]=r=>{e.unref(H).align(ae(r)),r.target.value=""})},[e.createElementVNode("option",_a,e.toDisplayString(e.unref(n).alignSelection),1),e.createElementVNode("option",Ta,e.toDisplayString(e.unref(n).leftEdges),1),e.createElementVNode("option",Ia,e.toDisplayString(e.unref(n).centers),1),e.createElementVNode("option",$a,e.toDisplayString(e.unref(n).rightEdges),1),e.createElementVNode("option",Ra,e.toDisplayString(e.unref(n).topEdges),1),e.createElementVNode("option",La,e.toDisplayString(e.unref(n).middles),1),e.createElementVNode("option",Aa,e.toDisplayString(e.unref(n).bottomEdges),1)],40,Ba),e.createElementVNode("button",{type:"button",disabled:e.unref(U)||Y.value||e.unref(H).selections.value.length<3,onClick:c[44]||(c[44]=r=>e.unref(H).distribute("horizontal"))},e.toDisplayString(e.unref(n).horizontalSpacing),9,Pa),e.createElementVNode("button",{type:"button",disabled:e.unref(U)||Y.value||e.unref(H).selections.value.length<3,onClick:c[45]||(c[45]=r=>e.unref(H).distribute("vertical"))},e.toDisplayString(e.unref(n).verticalSpacing),9,Fa),e.unref(H).allLocked.value?(e.openBlock(),e.createElementBlock("small",Ga,e.toDisplayString(e.unref(n).sessionLock),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(oe)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",za,[e.createElementVNode("button",{type:"button",disabled:e.unref(U)||Y.value||e.unref(Q)?.componentIndex===0,onClick:c[46]||(c[46]=r=>e.unref(H).reorder(-1))},e.toDisplayString(e.unref(n).backward),9,Ha),e.createElementVNode("button",{type:"button",disabled:e.unref(U)||Y.value||e.unref(Q)?.componentIndex===(e.unref(v).template.pages[e.unref(q)]?.components.length??0)-1,onClick:c[47]||(c[47]=r=>e.unref(H).reorder(1))},e.toDisplayString(e.unref(n).forward),9,Oa)]),e.createVNode(rn,{component:e.unref(oe),"geometry-disabled":Y.value,disabled:e.unref(U)||e.unref(H).locked(e.unref(Q)),messages:e.unref(n),onGeometry:e.unref(H).geometry,onPatch:e.unref(L)},null,8,["component","geometry-disabled","disabled","messages","onGeometry","onPatch"]),e.unref(oe).kind==="list"?(e.openBlock(),e.createBlock(vn,{key:0,list:e.unref(oe),disabled:e.unref(U)||Y.value,messages:e.unref(n),onCommand:e.unref(Z)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",ja,e.toDisplayString(e.unref(n).noComponent),1))],64)):e.unref(C)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).templateDetails),1),e.createElementVNode("label",Ua,[e.createTextVNode(e.toDisplayString(e.unref(n).name),1),e.createElementVNode("input",{value:e.unref(v).name,disabled:t.readonly||e.unref(k)||e.unref(E),onInput:c[48]||(c[48]=r=>e.unref(d).setName(ae(r)))},null,40,Wa)]),e.createElementVNode("label",Ka,[e.createTextVNode(e.toDisplayString(e.unref(n).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(v).description,disabled:t.readonly||e.unref(k)||e.unref(E),onInput:c[49]||(c[49]=r=>e.unref(d).setDescription(ae(r)))},null,40,qa)]),e.createElementVNode("details",Ja,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(n).technicalDetails),1),e.createElementVNode("dl",Xa,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(n).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(v).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(n).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(v).revision||e.unref(n).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(n).advancedTitle),1),e.createElementVNode("label",Ya,[e.createTextVNode(e.toDisplayString(e.unref(n).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[50]||(c[50]=r=>e.isRef(B)?B.value=r:null),class:"mr-designer-json","aria-label":e.unref(n).json,disabled:t.readonly||e.unref(k),spellcheck:"false"},null,8,Qa),[[e.vModelText,e.unref(B)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(k),onClick:c[51]||(c[51]=(...r)=>e.unref(d).applyJson&&e.unref(d).applyJson(...r))},e.toDisplayString(e.unref(n).applyJson),9,Za)],64)),e.unref(E)?(e.openBlock(),e.createElementBlock("p",el,e.toDisplayString(e.unref(n).jsonPending),1)):e.createCommentVNode("",!0)],10,Yn)])):e.createCommentVNode("",!0),e.unref(C)!=="tools"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(n).previewTitle},[e.unref(S)?(e.openBlock(),e.createElementBlock("div",nl,e.toDisplayString(e.unref(S)),1)):e.createCommentVNode("",!0),e.unref(N).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",ol,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(N).errors,r=>(e.openBlock(),e.createElementBlock("li",{key:r.path},e.toDisplayString(r.path)+":"+e.toDisplayString(r.message),1))),128))])),e.unref(X)==="design"&&e.unref(N).ok?(e.openBlock(),e.createBlock(Vt,{key:2,document:e.unref(v),selection:e.unref(Q),selections:e.unref(H).selections.value,locked:e.unref(H).locked,"active-column-index":e.unref(x),"page-index":e.unref(q),datasets:t.datasets,disabled:e.unref(U)||Y.value||e.unref(d).isToolPending("rules"),messages:e.unref(n),onSelect:$e,onGeometry:e.unref(H).geometry,onColumn:e.unref(b).activate,onWidth:c[52]||(c[52]=(r,F)=>e.unref(d).setColumn(r,"widthMm",String(F)))},null,8,["document","selection","selections","locked","active-column-index","page-index","datasets","disabled","messages","onGeometry","onColumn"])):e.unref(K)&&e.unref(N).ok?(e.openBlock(),e.createBlock(e.unref(Ve.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(K),messages:{title:e.unref(n).previewTitle,columnDirectory:e.unref(n).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",al,e.toDisplayString(e.unref(n).invalid),1))],8,tl)):e.createCommentVNode("",!0)],2)],8,Mn))}}),rl=W._export_sfc(ll,[["__scopeId","data-v-b0c623cb"]]),il={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:"调序"}},sl={tableMode:"传统整表",multiRegions:"多区域绑定",multiHint:"点击单元格选择起点,Shift 点击选择终点;每个动态区域选择一行原型。",addRegion:"创建区域",removeRegion:"删除区域",regionProperties:"当前区域",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:"契约字段,不执行接口查询"},cl={restoreDraft:"恢复工具草稿",catalog:"规则与字段",searchFields:"搜索字段、类型或单位",useField:"使用此字段",shown:"显示",explanation:"计算解释",sourceValues:"源值",expression:"表达式",result:"结果",notChecked:"修改后请重新验算",nullReason:"空值依规则保留;空值传播与除零策略见计算边界。",sourceHint:"最多展示 5 条明细;分组和全量聚合以当前验算范围为准。",pending:"未应用配置",detail:"主从",matrix:"矩阵",tree:"树形",treeInput:"输入结构",treeFlat:"扁平父子表",treeNested:"嵌套子节点",treeId:"节点业务键",treeParent:"父节点键",treeChildren:"子节点数组字段",treeLabel:"层级标签列",treeIndent:"每级缩进 · mm",treeOrphan:"孤儿节点",treeAsRoot:"作为根节点",treeValues:"父级数值来源",treeSource:"保留来源值",treeLeaves:"按后代叶子聚合",treeRows:"最多节点",treeDepth:"最多层级",treeHint:"全量树展示与导出。总计只统计叶子,避免父子重复。应用将替换普通分组、主从、矩阵和行可见条件;可撤销恢复。",treeReadonly:"嵌套输入首版只读;扁平输入的结构键和派生父级聚合只读。",treeBudget:"树形样例最多 1000 个节点,请提供完整关系样例。",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},dl={paramsTool:"查询参数",paramsDescription:"配置一次,预览与服务端使用同一份校验规则。",paramsDirectory:"参数目录",paramAdd:"添加参数",paramEmpty:"尚未配置查询参数",paramEmptyHint:"添加日期、厂别等条件,报表预览会自动生成查询面板。",paramField:"参数标识",paramLabel:"显示名称",paramType:"控件类型",paramRequired:"必填",paramPlaceholder:"输入提示",paramDefaultEnabled:"设置默认值",paramDefault:"默认值",paramMinimum:"最小值(含边界)",paramMaximum:"最大值(含边界)",paramMinLength:"最少字符数",paramMaxLength:"最多字符数",paramOptions:"静态下拉选项",paramOptionValue:"接口值",paramOptionLabel:"显示文字",paramOptionAdd:"添加选项",paramRemove:"删除参数",paramOptionRemove:"删除选项",paramMoveUp:"上移参数",paramMoveDown:"下移参数",paramApply:"校验并应用参数",paramRestore:"恢复参数草稿",paramPending:"尚未应用",paramReady:"规则有效",paramInvalid:"规则待修正",paramConflict:"模板参数已在其他操作中变更。请先恢复参数草稿,再继续编辑。",paramApplyFailed:"参数未应用,请检查模板校验信息。",paramRenameHint:"参数标识决定接口取数键。新增、删除或改名后,请同步检查接入方的数据查询;插件不会修改外部接口。",paramChanges:"接口参数键变更",paramAdded:"新增",paramRemoved:"移除",paramWire:"接口值格式",paramNoDefault:"未设置默认值",paramRangeHint:"两端均须填写,开始日期不能晚于结束日期;边界约束作用于整个范围。",paramText:"文本",paramNumber:"数字",paramDate:"日期",paramMonth:"月份",paramYear:"年份",paramDateRange:"日期范围",paramSelect:"下拉选择"},ul={batchTitle:"批量生成",batchDescription:"每组参数独立生成;成功结果由接入方保存,当前页面仅保留回执。",batchAdd:"添加一组",batchDuplicate:"复制参数",batchRemove:"删除参数组",batchRun:"生成全部",batchRunning:"正在生成",batchRetry:"仅重试失败项",batchCancel:"取消剩余任务",batchCancelling:"正在取消…",batchPending:"待生成",batchCompleted:"已完成",batchFailed:"失败",batchCancelled:"已取消",batchCase:"参数组",batchProgress:"已结束 {completed}/{total} · 失败 {failed} · 取消 {cancelled}",batchInvalid:"请修正参数错误后再生成;本次未启动任何任务。",batchEmpty:"添加一组参数开始批量生成",batchNoInstance:"已完成,接入方未返回可打开的实例标识。",batchOpen:"打开报表实例",batchLimit:"当前最多支持 {count} 组参数。",batchChanged:"参数定义或执行配置已变更,已请求取消当前批次,请核对后重新生成。",batchPages:"参数组分页",batchPrevious:"上一页",batchNext:"下一页",batchPage:"第 {page}/{pages} 页 · 共 {total} 组"},ml={title:"模板库",subtitle:"按业务分类查找、打开或复制模板",search:"搜索名称、编号或标签",all:"全部模板",refresh:"刷新",open:"打开设计器",copy:"复制模板",empty:"没有匹配的模板",emptyHint:"调整关键词或分类后重试",loadMore:"下一页",previous:"上一页",page:"页",loading:"正在加载…",retry:"重试",revision:"修订",copyTitle:"复制为新模板",newId:"新模板编号",newName:"新模板名称",create:"创建副本",cancel:"取消",count:"项",missing:"模板不存在或已不可访问",stale:"目录返回了重复项或无效分页游标",invalid:"模板目录响应格式无效"},pl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-DwtOcLue.cjs"))),fl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-CjIiVox-.cjs"))),vl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-C2QsOHOs.cjs"))),gl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-D-Hf5xfO.cjs"))),hl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportBatchPanel-BYgg0EDB.cjs"))),yl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportTemplateLibrary-C6CO7YCT.cjs")));exports.EXCEL_BINDING_MESSAGES=sl;exports.ExcelBindingWizard=fl;exports.PARAM_EDITOR_MESSAGES=dl;exports.ParamEditor=gl;exports.REPORT_BATCH_MESSAGES=ul;exports.RULE_EDITOR_MESSAGES=cl;exports.ReportBatchPanel=hl;exports.ReportTemplateEditor=rl;exports.ReportTemplateLibrary=yl;exports.RuleEditor=vl;exports.TEMPLATE_EDITOR_MESSAGES=fe;exports.TEMPLATE_LIBRARY_MESSAGES=ml;exports.TEMPLATE_REVIEW_MESSAGES=il;exports.TemplateReviewPanel=pl;