@agile-team/mach-report 2.19.0 → 2.20.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 (54) hide show
  1. package/README.md +19 -4
  2. package/dist/ExcelBindingWizard-B7aeRg46.cjs +1 -0
  3. package/dist/{ExcelBindingWizard-xJIYmnZ_.js → ExcelBindingWizard-Chn6ZC2-.js} +350 -350
  4. package/dist/ParamEditor-BdFMa1CX.cjs +1 -0
  5. package/dist/{ParamEditor-D1wWemaf.js → ParamEditor-o-7E7WZZ.js} +10 -10
  6. package/dist/{ReportBatchPanel-B88R-fME.js → ReportBatchPanel-CNJ4Useq.js} +2 -2
  7. package/dist/{ReportBatchPanel-BkJFqeEW.cjs → ReportBatchPanel-DVpmB7tG.cjs} +1 -1
  8. package/dist/ReportLabelStudio-Drsm9sAS.cjs +1 -0
  9. package/dist/ReportLabelStudio-r8VFnhGQ.js +589 -0
  10. package/dist/ReportParamPanel-CVpK8mFc.cjs +1 -0
  11. package/dist/{ReportParamPanel-mQkeN70Q.js → ReportParamPanel-peB-KEmm.js} +10 -2
  12. package/dist/{ReportPreview-BUr8GQUW.js → ReportPreview-CGcxwkAn.js} +2255 -2133
  13. package/dist/ReportPreview-hlwvZ1wf.cjs +6 -0
  14. package/dist/{ReportTemplateLibrary-BOh2MgjQ.cjs → ReportTemplateLibrary-DjjyZnZB.cjs} +1 -1
  15. package/dist/{ReportTemplateLibrary-BGELmgd3.js → ReportTemplateLibrary-DyIJhJjX.js} +1 -1
  16. package/dist/RuleEditor-BVuRn_OQ.cjs +1 -0
  17. package/dist/{RuleEditor-CoLqgehG.js → RuleEditor-BeknHHOD.js} +176 -172
  18. package/dist/{TemplateOutlinePanel-DU95loB-.js → TemplateOutlinePanel-Bv8CxbXS.js} +1 -1
  19. package/dist/{TemplateOutlinePanel-DiG8tRRe.cjs → TemplateOutlinePanel-D6TXg1aV.cjs} +1 -1
  20. package/dist/{TemplateReusePanel-DE1KSD6c.js → TemplateReusePanel-CfousvPY.js} +1 -1
  21. package/dist/{TemplateReusePanel-G-Y299wc.cjs → TemplateReusePanel-wrSbd_mr.cjs} +1 -1
  22. package/dist/{TemplateReviewPanel-KQx9ts0D.cjs → TemplateReviewPanel-BKFcSbTh.cjs} +1 -1
  23. package/dist/{TemplateReviewPanel-vqFJ_Y9o.js → TemplateReviewPanel-F2tqWNLO.js} +1 -1
  24. package/dist/artifact-integrity.json +36 -36
  25. package/dist/designer-B52ddmHO.js +6676 -0
  26. package/dist/designer-Dtsw_rh7.cjs +2 -0
  27. package/dist/designer.cjs +1 -1
  28. package/dist/designer.d.cts +142 -5
  29. package/dist/designer.d.ts +142 -5
  30. package/dist/designer.js +1 -1
  31. package/dist/{plugin-4VuL38Nc.cjs → plugin-BMsIIJDh.cjs} +1 -1
  32. package/dist/{plugin-YWHcI3t4.js → plugin-Co1oKD7T.js} +1 -1
  33. package/dist/sbom.cdx.json +1 -1
  34. package/dist/server.cjs +1 -1
  35. package/dist/server.js +1 -1
  36. package/dist/style.css +1 -1
  37. package/dist/vue/async.d.cts +8 -0
  38. package/dist/vue/async.d.ts +8 -0
  39. package/dist/vue/index.d.cts +10 -2
  40. package/dist/vue/index.d.ts +10 -2
  41. package/dist/vue-async.cjs +1 -1
  42. package/dist/vue-async.js +3 -3
  43. package/dist/vue.cjs +1 -1
  44. package/dist/vue.js +5 -5
  45. package/package.json +1 -1
  46. package/dist/ExcelBindingWizard-UHSApSG9.cjs +0 -1
  47. package/dist/ParamEditor-BZb-okUd.cjs +0 -1
  48. package/dist/ReportLabelStudio-B4WZ2XNN.js +0 -239
  49. package/dist/ReportLabelStudio-BN-fYNCr.cjs +0 -1
  50. package/dist/ReportParamPanel-sOANVRz-.cjs +0 -1
  51. package/dist/ReportPreview-D7PvKzs3.cjs +0 -6
  52. package/dist/RuleEditor-XaLcCdTb.cjs +0 -1
  53. package/dist/designer-CyKXBhQg.cjs +0 -2
  54. package/dist/designer-fVvpYg8H.js +0 -5824
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("vue"),rt=require("@agile-team/mach-report/vue"),P=require("@agile-team/mach-report"),Y=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Dt=require("./template-outline-DWkzZXVC.cjs"),$e=require("./record-bindings-ehjnCDHt.cjs"),$t=require("./column-visual-CtYxnBCP.cjs"),Ke=require("./style-C22Pbv3T.cjs"),Tt={title:"操作指引",prompt:"这次想调整什么?",close:"关闭操作指引",fields:"改字段、对齐和颜色",fieldsHint:"选中一列,再修改属性;支持数据条与色阶",components:"加图表、二维码或条码",componentsHint:"进入画布,添加组件并绑定真实字段",layout:"改纸张、页数和份数",layoutHint:"设置毫米尺寸、标准纸型及逐记录输出",excel:"从 Excel 还原模板",excelHint:"导入工作簿,再明确字段和区域绑定",rules:"配计算和条件样式",rulesHint:"先配置,再应用到模板;不会修改接口实绩",review:"检查并定位问题",reviewHint:"校验字段依赖、样例结果与输出限制",result:"预览确认效果后保存模板;高级 JSON 保留给需要时使用。"},Yt=["onKeydown"],Qt=["aria-expanded","disabled"],Xt=["aria-label"],Zt=["aria-label"],en=["onClick"],tn=e.defineComponent({__name:"DesignerTaskGuide",props:{fields:{type:Boolean},available:{},disabled:{type:Boolean},messages:{}},emits:["choose"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...Tt,...a.messages})),l=e.ref(!1),i=e.ref(),s=e.ref();function p(M){M.target instanceof Node&&!s.value?.contains(M.target)&&(l.value=!1)}function b(M){(!(M.relatedTarget instanceof Node)||!s.value?.contains(M.relatedTarget))&&(l.value=!1)}e.onMounted(()=>window.document.addEventListener("pointerdown",p)),e.onBeforeUnmount(()=>window.document.removeEventListener("pointerdown",p));const x=e.computed(()=>[...a.fields?["fields"]:[],"components","layout","excel","rules","review"].filter(M=>!a.available||a.available.includes(M)));function m(M){r("choose",M),l.value=!1,i.value?.focus()}function h(){l.value=!1,i.value?.focus()}return(M,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:s,class:"mr-designer-guide",onKeydown:e.withKeys(e.withModifiers(h,["stop","prevent"]),["esc"]),onFocusout:b},[e.createElementVNode("button",{ref_key:"trigger",ref:i,type:"button","aria-expanded":l.value,disabled:t.disabled,onClick:E[0]||(E[0]=y=>l.value=!l.value)},[e.createTextVNode(e.toDisplayString(n.value.title),1),E[1]||(E[1]=e.createElementVNode("span",{"aria-hidden":"true"},"⌄",-1))],8,Qt),l.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-designer-guide-panel",role:"region","aria-label":n.value.title},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.prompt),1),e.createElementVNode("button",{type:"button","aria-label":n.value.close,onClick:h},"×",8,Zt)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,y=>(e.openBlock(),e.createElementBlock("button",{key:y,type:"button",onClick:N=>m(y)},[e.createElementVNode("strong",null,e.toDisplayString(n.value[y]),1),e.createElementVNode("span",null,e.toDisplayString(n.value[`${y}Hint`]),1),E[2]||(E[2]=e.createElementVNode("i",{"aria-hidden":"true"},"→",-1))],8,en))),128)),e.createElementVNode("p",null,e.toDisplayString(n.value.result),1)],8,Xt)):e.createCommentVNode("",!0)],40,Yt))}}),nn=Y._export_sfc(tn,[["__scopeId","data-v-baa18a0c"]]),_t={add:"添加内容",title:"添加到当前版面",text:"说明文字",textHint:"添加标题、备注或说明",field:"业务字段",columnField:"添加表格字段",fieldHint:"选择字段后立即显示真实内容",image:"图片或 Logo",imageHint:"使用 PNG 或 JPEG 图片",qrcode:"二维码",barcode:"条形码",codeHint:"绑定记录编号或填写编码内容",list:"明细表",listHint:"从当前字段契约建立表格",chart:"图表",recordCount:"记录数",chartHint:"选择分类与数值字段",rect:"装饰色块",rectHint:"辅助分区与突出信息",search:"搜索业务字段",noFields:"没有匹配的字段",close:"关闭添加内容",back:"返回内容类型",duplicate:"复制组件",newPage:"当前版面空间不足或含动态明细,内容已放到新增版面,可撤销恢复。",addColumn:"添加字段列",removeColumn:"删除当前列",removeLast:"至少保留一列",dependentColumn:"此字段仍被合计、规则或表头引用,请先调整相关配置。",assetPending:"请完成图片或编码内容配置,再预览或保存。",fieldsUnavailable:"当前模板尚无可绑定的数据字段。"},an=["onKeydown"],on=["disabled","aria-expanded"],ln=["aria-label"],rn=["aria-label"],sn=["aria-label","placeholder"],cn={class:"mr-insert-fields"},dn=["disabled","onClick"],un={key:0},mn={key:1,class:"mr-insert-grid"},pn=["onClick"],fn=e.defineComponent({__name:"DesignerInsertMenu",props:{disabled:{type:Boolean},repeat:{type:Boolean},fields:{},columns:{type:Boolean},usedFields:{},messages:{}},emits:["insert","field"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({..._t,...a.messages})),l=e.ref(!1),i=e.ref(!1),s=e.ref(""),p=e.ref(),b=e.ref(),x=e.computed(()=>["text","qrcode","barcode","image","list","chart","rect"].filter(w=>!a.repeat||!["list","chart"].includes(w))),m=e.computed(()=>(a.fields??[]).filter(w=>`${w.label??""} ${w.field}`.toLowerCase().includes(s.value.toLowerCase())).slice(0,100)),h=e.computed(()=>({text:n.value.textHint,qrcode:n.value.codeHint,barcode:n.value.codeHint,image:n.value.imageHint,list:n.value.listHint,chart:n.value.chartHint,rect:n.value.rectHint}));function M(){l.value=!1,i.value=!1,s.value="",p.value?.focus()}function E(w){r("insert",w),M()}async function y(){i.value=!0,await e.nextTick(),b.value?.focus()}function N(w){r("field",w),M()}let u;function S(){l.value=!1,i.value=!1,s.value=""}function V(w){const v=w.currentTarget;if(!v.contains(w.relatedTarget)){if(w.relatedTarget){S();return}u!==void 0&&cancelAnimationFrame(u),u=requestAnimationFrame(()=>{u=void 0,v.isConnected&&!v.contains(document.activeElement)&&S()})}}return e.onBeforeUnmount(()=>{u!==void 0&&cancelAnimationFrame(u)}),(w,v)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-insert",onKeydown:e.withKeys(e.withModifiers(M,["prevent","stop"]),["esc"]),onFocusout:V},[e.createElementVNode("button",{ref_key:"trigger",ref:p,class:"mr-insert-trigger",type:"button",disabled:t.disabled,"aria-expanded":l.value,"aria-haspopup":"dialog",onClick:v[0]||(v[0]=c=>l.value=!l.value)},[v[3]||(v[3]=e.createElementVNode("span",{"aria-hidden":"true"},"+",-1)),e.createTextVNode(e.toDisplayString(n.value.add),1)],8,on),l.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-insert-panel",role:"dialog","aria-label":n.value.title},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(i.value?t.columns?n.value.columnField:n.value.field:n.value.title),1),e.createElementVNode("button",{type:"button","aria-label":n.value.close,onClick:M},"×",8,rn)]),i.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("button",{type:"button",class:"mr-insert-back",onClick:v[1]||(v[1]=c=>i.value=!1)}," ‹ "+e.toDisplayString(n.value.back),1),e.withDirectives(e.createElementVNode("input",{ref_key:"search",ref:b,"onUpdate:modelValue":v[2]||(v[2]=c=>s.value=c),"aria-label":n.value.search,placeholder:n.value.search},null,8,sn),[[e.vModelText,s.value]]),e.createElementVNode("div",cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,c=>(e.openBlock(),e.createElementBlock("button",{key:c.field,type:"button",disabled:t.columns&&t.usedFields?.includes(c.field),onClick:f=>N(c.field)},[e.createElementVNode("strong",null,e.toDisplayString(c.label||c.field),1),e.createElementVNode("small",null,e.toDisplayString(c.field),1)],8,dn))),128)),m.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",un,e.toDisplayString(n.value.noFields),1))])],64)):(e.openBlock(),e.createElementBlock("div",mn,[t.fields?.length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-insert-field",onClick:y},[e.createElementVNode("strong",null,e.toDisplayString(t.columns?n.value.columnField:n.value.field),1),e.createElementVNode("small",null,e.toDisplayString(n.value.fieldHint),1)])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,c=>(e.openBlock(),e.createElementBlock("button",{key:c,type:"button",onClick:f=>E(c)},[e.createElementVNode("strong",null,e.toDisplayString(n.value[c]),1),e.createElementVNode("small",null,e.toDisplayString(h.value[c]),1)],8,pn))),128))]))],8,ln)):e.createCommentVNode("",!0)],40,an))}}),vn=Y._export_sfc(fn,[["__scopeId","data-v-a0649809"]]),gn={title:"总计与小计",field:"汇总字段",operation:"计算方式",position:"显示位置",tableEnd:"表尾总计",groupEnd:"分组尾小计",add:"添加汇总",remove:"移除汇总",sum:"求和",avg:"平均值",count:"非空计数",noFields:"请先声明可汇总的数值字段。",scope:"范围为当前明细表全部符合显示条件的记录,跨页时继续累计。",groupScope:"范围为所选层级的每个分组,汇总各组内符合显示条件的记录。",saved:"汇总随模板保存,并进入预览、打印和导出。",empty:"选择数值字段与计算方式,即可在表格中加入汇总。",advanced:"此汇总包含高级配置,请在计算与规则中维护。",complex:"此表采用矩阵、树形、主从或单记录布局,请在对应结构规则中维护汇总。",unconfigured:"未设置",configured:"{count} 项汇总",update:"更新汇总"};function hn(t,o,a){if(a)return a.numeric??"number";if(o)return o.type==="number"||o.type==="decimal"?o.type:void 0;if(t.valueType==="number"||t.format?.kind==="number")return"number"}function Re(t){return t.groups??(t.groupBy?[t.groupBy]:[])}function qe(t,o){if(o.group!==void 0){const r=Re(t)[o.group];return{fields:r?.subtotal??[],aggregates:r?.aggregates??[]}}if(!t.grandTotal)return{fields:[],aggregates:[]};const a=typeof t.grandTotal=="object"?t.grandTotal:void 0;return{fields:a?.fields??Re(t)[0]?.subtotal??[],aggregates:a?.aggregates??Re(t)[0]?.aggregates??[]}}function yn(t){return["sum","avg","count"].includes(t.op)&&(!t.valueField||t.valueField===t.field)&&!t.weightField}function kt(t,o,a,r){if(o.group!==void 0){const n=Re(t)[o.group];n.subtotal=a,n.aggregates=r}else a.length||r.length?t.grandTotal={...typeof t.grandTotal=="object"?t.grandTotal:{},fields:a,aggregates:r}:delete t.grandTotal}function bn(t,o){const a=e.computed(()=>({...gn,...t.messages})),r=e.ref("sum"),n=e.ref(""),l=e.ref("total"),i=e.computed(()=>!!(t.list.matrix||t.list.tree||t.list.detail||t.list.cardinality==="record")),s=e.computed(()=>new Map(t.schema?.fields.map(c=>[c.field,c]))),p=e.computed(()=>new Map(t.list.computed?.map(c=>[c.field,c]))),b=e.computed(()=>new Map(t.list.columns.map(c=>[c.field,hn(c,s.value.get(c.field),p.value.get(c.field))]))),x=e.computed(()=>new Map(t.list.columns.map(c=>[c.field,c.header]))),m=e.computed(()=>t.list.columns.filter(c=>{const f=s.value.get(c.field);return c.hidden||c.field===t.schema?.rowKey||c.field===t.list.rowKey||f?.aggregation==="none"||["identifier","dimension","date","text"].includes(f?.semanticRole??c.semanticRole??"")?!1:b.value.get(c.field)!==void 0})),h=e.computed(()=>[{key:"total",label:a.value.tableEnd},...Re(t.list).map((c,f)=>({key:`group-${f}`,group:f,label:`${a.value.groupEnd} · ${x.value.get(c.field)??c.field}`}))]),M=e.computed(()=>h.value.find(c=>c.key===l.value)??h.value[0]),E=e.computed(()=>{const c=qe(t.list,M.value),f=new Map;for(const k of c.aggregates){const B=f.get(k.field)??[];B.push(k),f.set(k.field,B)}return[...new Set([...c.fields,...c.aggregates.map(k=>k.field)])].map(k=>{const B=f.get(k)??[],I=B[0];return{field:k,label:x.value.get(k)??k,op:I?.op??"sum",editable:B.length<=1&&(!I||yn(I))}})}),y=e.computed(()=>!!t.readonly||i.value),N=e.computed(()=>!y.value&&m.value.some(c=>c.field===n.value)&&!E.value.some(c=>c.field===n.value&&!c.editable)),u=e.computed(()=>M.value.group===void 0?a.value.scope:a.value.groupScope),S=e.computed(()=>h.value.reduce((c,f)=>{const k=qe(t.list,f);return c+new Set([...k.fields,...k.aggregates.map(B=>B.field)]).size},0)),V=e.computed(()=>E.value.some(c=>c.field===n.value));e.watch(m,c=>{c.some(f=>f.field===n.value)||(n.value=c[0]?.field??"")},{immediate:!0}),e.watch(h,c=>{c.some(f=>f.key===l.value)||(l.value="total")});function w(){if(!N.value)return;const c=JSON.parse(JSON.stringify(t.list)),f=qe(c,M.value),k=f.aggregates.find(I=>I.field===n.value),B={...k,field:n.value,op:r.value,numeric:k?.numeric??b.value.get(n.value)};kt(c,M.value,[...f.fields],[...f.aggregates.filter(I=>I.field!==n.value),B]),o(c)}function v(c){if(y.value||!E.value.find(B=>B.field===c)?.editable)return;const f=JSON.parse(JSON.stringify(t.list)),k=qe(f,M.value);kt(f,M.value,k.fields.filter(B=>B!==c),k.aggregates.filter(B=>B.field!==c)),o(f)}return{m:a,operation:r,field:n,position:l,fields:m,targets:h,entries:E,complex:i,blocked:y,canAdd:N,scope:u,configuredCount:S,updating:V,add:w,remove:v}}const kn=["aria-label"],En={class:"mr-totals-entry"},Sn={class:"mr-totals-content"},Nn={key:0,role:"status"},wn=["aria-label","disabled"],Vn=["value"],Cn={class:"mr-totals-fields"},xn=["aria-label","disabled"],Mn=["value"],Bn=["aria-label","disabled"],Dn={value:"sum"},$n={value:"avg"},Tn={value:"count"},_n=["disabled"],In={class:"mr-totals-scope"},Rn={key:0},Ln=["aria-label","disabled","onClick"],An={key:1},Pn=e.defineComponent({__name:"TemplateTotalsEditor",props:{list:{},schema:{},readonly:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,r=o,{m:n,operation:l,field:i,position:s,fields:p,targets:b,entries:x,complex:m,blocked:h,canAdd:M,scope:E,configuredCount:y,updating:N,add:u,remove:S}=bn(a,V=>r("change",V));return(V,w)=>(e.openBlock(),e.createElementBlock("details",{class:"mr-totals-editor","aria-label":e.unref(n).title},[e.createElementVNode("summary",null,[w[5]||(w[5]=e.createElementVNode("span",{class:"mr-totals-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).title),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(y)?e.unref(n).configured.replace("{count}",String(e.unref(y))):e.unref(n).unconfigured),1),e.createElementVNode("span",En,[e.createTextVNode(e.toDisplayString(e.unref(n).add)+" ",1),w[4]||(w[4]=e.createElementVNode("i",{"aria-hidden":"true"},"+",-1))])]),e.createElementVNode("div",Sn,[e.createElementVNode("small",null,e.toDisplayString(e.unref(n).saved),1),e.unref(m)?(e.openBlock(),e.createElementBlock("p",Nn,e.toDisplayString(e.unref(n).complex),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).position),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[0]||(w[0]=v=>e.isRef(s)?s.value=v:null),"aria-label":e.unref(n).position,disabled:e.unref(h)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),v=>(e.openBlock(),e.createElementBlock("option",{key:v.key,value:v.key},e.toDisplayString(v.label),9,Vn))),128))],8,wn),[[e.vModelSelect,e.unref(s)]])]),e.createElementVNode("div",Cn,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).field),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[1]||(w[1]=v=>e.isRef(i)?i.value=v:null),"aria-label":e.unref(n).field,disabled:e.unref(h)||!e.unref(p).length},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p),v=>(e.openBlock(),e.createElementBlock("option",{key:v.field,value:v.field},e.toDisplayString(v.header),9,Mn))),128))],8,xn),[[e.vModelSelect,e.unref(i)]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).operation),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[2]||(w[2]=v=>e.isRef(l)?l.value=v:null),"aria-label":e.unref(n).operation,disabled:e.unref(h)},[e.createElementVNode("option",Dn,e.toDisplayString(e.unref(n).sum),1),e.createElementVNode("option",$n,e.toDisplayString(e.unref(n).avg),1),e.createElementVNode("option",Tn,e.toDisplayString(e.unref(n).count),1)],8,Bn),[[e.vModelSelect,e.unref(l)]])])]),e.createElementVNode("button",{class:"mr-totals-add",type:"button",disabled:!e.unref(M),onClick:w[3]||(w[3]=(...v)=>e.unref(u)&&e.unref(u)(...v))},e.toDisplayString(e.unref(N)?e.unref(n).update:e.unref(n).add),9,_n),e.createElementVNode("p",In,e.toDisplayString(e.unref(E)),1),e.unref(x).length?(e.openBlock(),e.createElementBlock("ul",Rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(x),v=>(e.openBlock(),e.createElementBlock("li",{key:v.field},[e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(v.label),1),e.createElementVNode("small",null,e.toDisplayString(v.editable?e.unref(n)[v.op]:e.unref(n).advanced),1)]),v.editable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${e.unref(n).remove} ${v.label}`,disabled:e.unref(h),onClick:c=>e.unref(S)(v.field)}," × ",8,Ln)):e.createCommentVNode("",!0)]))),128))])):(e.openBlock(),e.createElementBlock("p",An,e.toDisplayString(e.unref(p).length?e.unref(n).empty:e.unref(n).noFields),1))],64))])],8,kn))}}),Fn=Y._export_sfc(Pn,[["__scopeId","data-v-a0423996"]]);function Et(t,o){return{...P.columnsFromContract({fields:[t]})[0],widthMm:o,valueType:t.type==="number"?"number":t.type==="boolean"?"boolean":"text"}}function Hn(t,o,a){const r=t.fields.filter(i=>i.field!==t.rowKey),n=r.find(i=>i.semanticRole==="dimension")??r.find(i=>i.type==="text"||i.type==="date")??r[0];if(!n)return;const l=r.find(i=>(i.type==="number"||i.type==="decimal")&&i.semanticRole!=="identifier"&&i.aggregation!=="none");return{dataset:o,categoryField:n.field,type:"bar",measures:[l?{op:"sum",field:l.field,numeric:l.type==="decimal"?"decimal":"number",label:l.label||l.field}:{op:"count",label:a}]}}const at=96/25.4;function Je(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((o,a)=>o+a,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function re(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:Je(t)}}function Ve(t,o){return o?t.template.pages[o.pageIndex]?.components[o.componentIndex]:void 0}function it(t,o="detail"){const a={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="chart"?{...a,kind:t,widthMm:110,heightMm:60,chartBinding:{dataset:o,categoryField:"field",measures:[{op:"sum",field:"value"}],type:"bar"}}:t==="qrcode"?{...a,kind:t,widthMm:22,heightMm:22,code:{errorCorrection:"M",quietZoneModules:4}}:t==="barcode"?{...a,kind:t,widthMm:50,heightMm:16,code:{symbology:"code128",quietZoneModules:10,showText:!0}}:t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:o,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...a,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...a,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...a,kind:t,widthMm:48,heightMm:24,imageData:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAYCAYAAAC8/X7cAAAAQ0lEQVR4nO3PsQkAIADAMP//1NVZ0CMcgtChezrm2ufnhgY0oAENaEADGtCABjSgAQ1oQAMa0IAGNKABDWhAAxrw2gWyBkQAzw4dBAAAAABJRU5ErkJggg==",meta:{designerPlaceholder:!0}}}function Le(t,o,a=!1){const r=Math.max(2,Math.min(o.widthMm,t.widthMm)),n=Math.max(2,Math.min(o.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(o.widthMm-r,t.leftMm)),topMm:Math.max(0,Math.min(o.heightMm-(a?2:n),t.topMm)),widthMm:r,heightMm:n}}function ye(t,o){const a=t.widthMm;if(Object.assign(t,{leftMm:o.leftMm,topMm:o.topMm,widthMm:o.widthMm}),t.kind!=="list")t.heightMm=o.heightMm;else if(a>0&&o.widthMm!==a){const r=o.widthMm/a;t.columns.forEach(n=>{n.widthMm=Math.round(n.widthMm*r*100)/100}),t.widthMm=t.columns.reduce((n,l)=>n+l.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(n=>n.widthMm))}}function On(t,o,a){if(o===a||!t.columns[o]||!t.columns[a])return!1;if(t.headerGrid){if(P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:l})=>(l.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const n=Te(t);n.forEach(l=>{l.splice(a,0,l.splice(o,1)[0])}),t.headerGrid=_e(n,t.columns.map(l=>l.widthMm),t.headerGrid.rowHeightsMm??n.map(()=>8))}return t.columns.splice(a,0,t.columns.splice(o,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(r=>r.widthMm)),!0}function Te(t){if(!t.headerGrid)return[t.columns.map(a=>({text:a.header}))];const o=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:a,ri:r,ci:n}of P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)o[r][n]=a;return o}function _e(t,o,a){const r=new Set;return{cells:t.map((l,i)=>l.flatMap((s,p)=>{if(r.has(`${i}:${p}`))return[];if(!s)return[null];for(let b=i;b<i+(s.rowSpan??1);b++)for(let x=p;x<p+(s.colSpan??1);x++)(b!==i||x!==p)&&r.add(`${b}:${x}`);return[s]})),colWidthsMm:o,rowHeightsMm:a}}function Gn(t){const o=Te(t),a=t.headerGrid?.rowHeightsMm??o.map(()=>8);o.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=_e(o,t.columns.map(r=>r.widthMm),[8,...a])}function zn(t,o,a,r){if(a>=r||a<0||r>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const n=Te(t),l=n[o];if(!l)throw new Error("表头行不存在。");const i=l.slice(a,r+1);if(i.some(p=>!p||(p.colSpan??1)!==1||(p.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const s=i[0];l[a]={...s,colSpan:r-a+1};for(let p=a+1;p<=r;p++)l[p]=null;t.headerGrid=_e(n,t.columns.map(p=>p.widthMm),t.headerGrid?.rowHeightsMm??[8])}function Un(t,o,a){if(!t.headerGrid)return;const n=P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:b,ci:x,cell:m})=>o>=b&&o<b+(m.rowSpan??1)&&a>=x&&a<x+(m.colSpan??1));if(!n)return;const l=Te(t),{ri:i,ci:s,cell:p}=n;for(let b=i;b<i+(p.rowSpan??1);b++)for(let x=s;x<s+(p.colSpan??1);x++){const m={...p,text:b===l.length-1?t.columns[x].header:p.text};delete m.colSpan,delete m.rowSpan,l[b][x]=m}t.headerGrid=_e(l,t.columns.map(b=>b.widthMm),t.headerGrid.rowHeightsMm??l.map(()=>8))}function jn(t,o,a=!1){const r=Te(t),n=t.widthMm;t.columns.push(o);for(let i=0;i<r.length;i++)r[i].push({text:i===r.length-1?o.header:"",style:{...t.headerStyle,align:"center"}});const l=t.columns.reduce((i,s)=>i+s.widthMm,0);if(a)t.widthMm=l;else for(const i of t.columns)i.widthMm*=n/l;t.headerGrid&&(t.headerGrid=_e(r,t.columns.map(i=>i.widthMm),t.headerGrid.rowHeightsMm??r.map(()=>8)))}function qn(t,o,a=!1){if(t.columns.length<2||!t.columns[o])return;const r=Te(t),n=t.widthMm;if(t.headerGrid)for(const i of P.resolveGridLayout(t.headerGrid,t.widthMm,100).cells){if(o<i.ci||o>=i.ci+(i.cell.colSpan??1)||(i.cell.colSpan??1)<2)continue;const s={...i.cell,colSpan:(i.cell.colSpan??1)-1};r[i.ri][i.ci===o?o+1:i.ci]=s}r.forEach(i=>i.splice(o,1)),t.columns.splice(o,1);const l=t.columns.reduce((i,s)=>i+s.widthMm,0);if(a)t.widthMm=l;else for(const i of t.columns)i.widthMm*=n/l;t.headerGrid&&(t.headerGrid=_e(r,t.columns.map(i=>i.widthMm),t.headerGrid.rowHeightsMm??r.map(()=>8)))}function Wn(t,o,a,r,n,l){const i=e.computed(()=>({..._t,...l()})),s=e.ref(""),p=e.computed(()=>t.draft.value.template.repeat?.dataset??t.activeList.value?.dataset??Object.keys(r()??{})[0]??Object.keys(n()??{})[0]??"detail"),b=e.computed(()=>{const E=r()?.[p.value];if(E)return E;const y=t.activeList.value;return y?.dataset===p.value?{fields:y.columns.map(N=>({field:N.field,label:N.header,type:N.valueType==="number"?"number":"text",semanticRole:N.semanticRole}))}:{fields:Object.keys(n()?.[p.value]?.[0]??{}).map(N=>({field:N,type:"text"}))}}),x=e.computed(()=>b.value.fields.filter(E=>E.field!==b.value.rowKey));function m(E){if(o.editDisabled.value)return;const y=it(E,p.value);if(y.kind==="chart"){const u=Hn(b.value,p.value,i.value.recordCount);if(!u){s.value=i.value.fieldsUnavailable;return}y.chartBinding=u}if(y.kind==="list"&&!x.value.length){s.value=i.value.fieldsUnavailable;return}if(y.kind==="text"&&t.draft.value.template.repeat){const u=t.draft.value.template.pages[o.canvasPage.value];y.widthMm=Math.min(60,u.widthMm/2),y.heightMm=6}y.kind==="list"&&x.value.length&&(y.columns=x.value.slice(0,4).map(u=>Et(u,22.5))),y.kind==="list"&&(y.widthMm=y.columns.reduce((u,S)=>u+S.widthMm,0));const N=b.value.fields.find(u=>u.semanticRole==="identifier"&&u.field!==b.value.rowKey)?.field??b.value.rowKey;t.draft.value.template.repeat&&N&&(y.kind==="qrcode"||y.kind==="barcode")&&(y.binding={field:N}),o.canvas.insertPlaced(y)&&(s.value=o.canvas.insertedOnNewPage.value?i.value.newPage:"",o.setMode("design"),a.section.value="component")}function h(E){if(o.editDisabled.value)return;const y=x.value.find(u=>u.field===E);if(!y)return;if(t.draft.value.template.repeat){const u=it("text");if(u.kind==="list")return;u.widthMm=42,u.heightMm=5,u.text="",u.style={fontSize:8,lineHeight:1.1,verticalAlign:"middle"},u.binding={field:E,prefix:`${y.label||E} `,...y.format?{format:y.format}:{}},o.canvas.insertPlaced(u),o.setMode("design"),a.section.value="component",s.value=o.canvas.insertedOnNewPage.value?i.value.newPage:"";return}const N=t.lists.value[t.selected.value];!N||t.activeList.value?.columns.some(u=>u.field===E)||t.transaction(u=>{const S=u.template.pages[N.pageIndex],V=S.components[N.componentIndex];V?.kind!=="list"||S.flow||(jn(V,Et(y,28),S.layout==="wide"),S.layout==="wide"&&(S.widthMm=Math.max(S.widthMm,V.leftMm+V.widthMm+(S.marginRightMm??0))))})&&(a.section.value="fields",a.activate(t.activeList.value.columns.length-1))}function M(){if(o.editDisabled.value)return;const E=t.lists.value[t.selected.value],y=t.activeList.value,N=a.activeIndex.value,u=y?.columns[N];if(!E||!y||!u||y.columns.length<2){s.value=i.value.removeLast;return}const S=`$.template.pages[${E.pageIndex}].components[${E.componentIndex}]`;if(Dt.inspectTemplateFieldUsage(t.draft.value.template,y.dataset,u.field).filter(w=>w.path.startsWith(S)&&w.path!==`${S}.columns[${N}].field`).length){s.value=i.value.dependentColumn;return}t.transaction(w=>{const v=w.template.pages[E.pageIndex],c=v.components[E.componentIndex];c?.kind==="list"&&!v.flow&&qn(c,N,v.layout==="wide")})&&(s.value="",a.activate(Math.min(N,t.activeList.value.columns.length-1)))}return{fields:x,schema:b,insert:m,addField:h,removeColumn:M,notice:s,messages:i}}function Kn(t){function o(a){if(a.defaultPrevented||a.isComposing||a.keyCode===229||a.altKey||!(a.metaKey||a.ctrlKey))return!1;const r=a.target;if(r instanceof Element&&r.closest('input,textarea,select,[contenteditable=""],[contenteditable="true"],[role="textbox"]'))return!1;const n=a.key.toLowerCase(),l=n==="z"&&a.shiftKey||n==="y";if(n!=="z"&&n!=="y")return!1;const i=t();if(i.blocked)return!1;const s=l?i.redo:i.undo;return!s||!(l?i.canRedo:i.canUndo)?!1:(a.preventDefault(),a.stopPropagation(),s(),!0)}return{keydown:o}}function Jn(t,o,a=3){if(!t.tree)return o.slice(0,a).map(r=>t.columns.map(n=>$e.resolveListSampleCell(t,n,r)));if(o.length>200)return[];try{return $t.createTreeTable(o,{...t.tree,maxRows:Math.min(200,t.tree.maxRows??200),maxAggregationVisits:Math.min(2e3,t.tree.maxAggregationVisits??2e3)},{computed:t.computed?.length?{fields:t.computed,maxRows:200,maxCells:4096}:void 0}).entries.slice(0,a).map(n=>t.columns.map(l=>$e.resolveTreeListSampleCell(t,l,n)))}catch{return[]}}function Yn(t){const o=e.ref(),a=e.ref(.8),r=e.ref(0),n=e.ref(0),l=e.computed(()=>a.value*at),i=e.computed(()=>t.document.template.pages[t.pageIndex]),s=e.computed(()=>i.value.widthMm*l.value>n.value-40);let p,b=!!t.document.template.repeat;function x(u){const S=o.value;if(!S||S.clientWidth<=40||S.clientHeight<=40)return;let V={leftMm:0,topMm:0,widthMm:i.value.widthMm,heightMm:i.value.heightMm};const w=t.selection?.pageIndex===t.pageIndex?i.value.components[t.selection.componentIndex]:void 0;u==="selection"&&w&&(V=re(w));const v=(S.clientWidth-40)/(V.widthMm*at),c=(S.clientHeight-40)/(V.heightMm*at);a.value=Math.max(.05,Math.min(2,u==="width"?v:Math.min(v,c))),e.nextTick(()=>{S.scrollLeft=V.leftMm*l.value,S.scrollTop=V.topMm*l.value})}function m(u){b=!1,x(u)}function h(u){Number.isFinite(u)&&(b=!1,a.value=Math.max(.05,Math.min(2,u)))}function M(){const u=o.value;u&&(n.value=u.clientWidth,r.value=u.scrollWidth>u.clientWidth?Math.round(u.scrollLeft/(u.scrollWidth-u.clientWidth)*100):0)}function E(u){const S=o.value;S&&(S.scrollLeft=(S.scrollWidth-S.clientWidth)*u/100),r.value=u}function y(){M(),b&&t.document.template.repeat&&x("page")}async function N(){await e.nextTick();const u=o.value,S=t.selection;if(!u||S?.pageIndex!==t.pageIndex)return;const V=i.value.components[S.componentIndex];if(!V)return;const w=re(V);if(V.kind==="list"&&t.columnIndex!==void 0&&t.columnIndex>=0){const B=V;w.leftMm+=B.columns.slice(0,t.columnIndex).reduce((I,A)=>I+A.widthMm,0),w.widthMm=B.columns[t.columnIndex]?.widthMm??w.widthMm}const v=w.leftMm*l.value,c=w.topMm*l.value,f=v+w.widthMm*l.value,k=c+w.heightMm*l.value;v<u.scrollLeft?u.scrollLeft=v:f>u.scrollLeft+u.clientWidth-40&&(u.scrollLeft=Math.max(0,Math.min(v,f-u.clientWidth+40))),c<u.scrollTop?u.scrollTop=c:k>u.scrollTop+u.clientHeight-40&&(u.scrollTop=Math.max(0,Math.min(c,k-u.clientHeight+40))),M()}return e.watch(()=>[t.selection,t.columnIndex,t.pageIndex],()=>{N()}),e.watch(()=>t.document.id,()=>{b=!!t.document.template.repeat,e.nextTick(y)}),e.watch(()=>[!!t.document.template.repeat,t.pageIndex,i.value.widthMm,i.value.heightMm],()=>{e.nextTick(y)}),e.onMounted(()=>{y(),typeof ResizeObserver<"u"&&o.value&&(p=new ResizeObserver(y),p.observe(o.value))}),e.onBeforeUnmount(()=>p?.disconnect()),{viewport:o,zoom:a,scale:l,page:i,wide:s,fraction:r,fit:m,setZoom:h,sync:M,navigate:E}}function Qn(t,o,a){if(t.kind==="list")return{text:t.dataset};const r=t.kind==="barcode"||t.kind==="qrcode"?t.code?.value??t.fallbackText??t.text??"":t.text??t.fallbackText??"";return t.binding?Xn(t,o,a):{text:r,...t.imageData?{image:t.imageData}:{}}}function Xn(t,o,a){const r=t.binding,n=o.template.repeat,l=n?a?.[n.dataset]?.[0]:void 0;if(!l)return{text:r.field,bound:!0};try{const i=$e.resolveComponentBinding(r,l,{dataset:n?.dataset,rowIndex:0});return t.kind==="image"&&i&&!$e.isLabelImageData(i)?{text:r.field,bound:!0,error:"image-binding"}:{text:i,bound:!0,...t.kind==="image"&&$e.isLabelImageData(i)?{image:i}:{}}}catch(i){return{text:r.field,bound:!0,error:i instanceof Error?i.message:String(i)}}}function St(t,o){const r=[1,2,5,10,20,50,100,200,500,1e3].find(l=>l*o>=36)??Math.max(1e3,Math.ceil(t/200));return Array.from({length:Math.min(201,Math.floor(t/r)+1)},(l,i)=>({mm:i*r,position:i*r*o}))}const ot=[{id:"label-80-55",widthMm:80,heightMm:55},{id:"label-80-50",widthMm:80,heightMm:50},{id:"label-100-60",widthMm:100,heightMm:60},{id:"a4",widthMm:210,heightMm:297},{id:"a3",widthMm:297,heightMm:420}];function Ae(t,o,a){return typeof t.meta?.title=="string"&&t.meta.title.trim()?t.meta.title:`${a} ${o+1}`}function It(t){return t.components.flatMap((o,a)=>{const r=o.kind==="list"?o.rowHeightMm??Je(o):o.heightMm;return o.leftMm<0||o.topMm<0||o.leftMm+o.widthMm>t.widthMm+.001||o.topMm+r>t.heightMm+.001?[a]:[]})}function Zn(t,o){const a=JSON.parse(JSON.stringify(t)),r=new Set(o.flatMap(i=>i.components.map(s=>s.kind==="list"?s.id:s.nid)).filter(Boolean)),n=new Map;let l=0;for(const i of a.components){const s=i.kind==="list"?i.id:i.nid;if(!s)continue;let p;do p=`page-copy-${++l}`;while(r.has(p));r.add(p),n.set(s,p),i.kind==="list"?i.id=p:(i.nid=p,delete i.rkey)}return a.flow?.bands.forEach(i=>{i.componentIds=i.componentIds.map(s=>n.get(s)??s)}),a}function ea(t,o,a){const r=t.template.pages,n=r[o];if(!n)return 0;if(a.type==="patch")return Object.assign(n,a.patch),o;if(a.type==="remove")return r.length<=1?o:(r.splice(o,1),Math.min(o,r.length-1));const l=a.type==="duplicate"?Zn(n,r):JSON.parse(JSON.stringify(n));return a.type==="add"&&(l.components=[],delete l.flow,delete l.meta),r.splice(o+1,0,l),o+1}function Nt(t,o,a){const r=t.filter(n=>n!==o).flatMap(n=>{const l=n[a],i=a==="leftMm"?n.widthMm:Je(n);return[l,l+i/2,l+i]});return[...new Set(r)].sort((n,l)=>n-l)}function ta(t,o){if(!t.length)return;let a=0,r=t.length;for(;a<r;){const i=a+r>>>1;t[i]<o?a=i+1:r=i}const n=t[Math.max(0,a-1)],l=t[Math.min(t.length-1,a)];return Math.abs(n-o)<Math.abs(l-o)?n:l}function wt(t,o,a,r){let n=1/0,l={value:Math.round(t*2)/2};for(const i of[0,o/2,o]){const s=ta(a,t+i);if(s===void 0)continue;const p=Math.abs(s-t-i);p<=r&&p<n&&(n=p,l={value:s-i,guide:s})}return l}function na(t,o,a,r){if(r){const n=Math.abs(o)>=Math.abs(a)?o:a,l=Math.round((t.widthMm+n)*2)/2;return{...t,widthMm:l,heightMm:l}}return{...t,widthMm:Math.round((t.widthMm+o)*2)/2,heightMm:Math.round((t.heightMm+a)*2)/2}}function aa(t){let o;function a(r,n,l=!1){if(t.disabled()||r.button!==0)return;r.preventDefault(),r.stopPropagation(),o?.();const i=r.currentTarget.closest("[data-canvas-component]"),s=re(n),p=r.clientX,b=r.clientY;let x=s,m=0;const h=t.scale.value,M=i.parentElement;let E,y;const N=()=>{for(const[k,B]of[["x",E],["y",y]])M.style.setProperty(`--mr-canvas-guide-${k}-display`,B===void 0?"none":"block"),B!==void 0&&M.style.setProperty(`--mr-canvas-guide-${k}`,`${B*h}px`)},u=()=>{m=0,N(),i.style.left=`${x.leftMm*h}px`,i.style.top=`${x.topMm*h}px`,i.style.width=`${x.widthMm*h}px`,i.style.height=`${x.heightMm*h}px`},S={leftMm:Nt(t.page().components,n,"leftMm"),topMm:Nt(t.page().components,n,"topMm")},V=k=>{const B=(k.clientX-p)/h,I=(k.clientY-b)/h,A=wt(s.leftMm+B,s.widthMm,S.leftMm,5/h),U=wt(s.topMm+I,s.heightMm,S.topMm,5/h);E=l?void 0:A.guide,y=l?void 0:U.guide,x=Le(l?na(s,B,I,n.kind==="qrcode"):{...s,leftMm:A.value,topMm:U.value},t.page(),n.kind==="list"),l&&n.kind==="qrcode"&&(x.widthMm=x.heightMm=Math.min(x.widthMm,x.heightMm)),m||(m=requestAnimationFrame(u))},w=k=>{window.removeEventListener("pointermove",V),window.removeEventListener("pointerup",v),window.removeEventListener("pointercancel",c),window.removeEventListener("keydown",f),m&&cancelAnimationFrame(m),x=k?x:s,E=void 0,y=void 0,u(),o=void 0,k&&JSON.stringify(x)!==JSON.stringify(s)&&t.commit(x)},v=()=>w(!0),c=()=>w(!1),f=k=>{k.key==="Escape"&&(k.preventDefault(),c())};window.addEventListener("pointermove",V),window.addEventListener("pointerup",v),window.addEventListener("pointercancel",c),window.addEventListener("keydown",f),o=c}return e.watch(t.disabled,r=>{r&&o?.()}),e.watch(t.page,()=>o?.()),e.onBeforeUnmount(()=>o?.()),{start:a}}const oa={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:"请先修正模板错误,再预览或保存。"},la={chartNumeric:"数值口径",chartNumber:"真实数字",chartDecimal:"精确小数文本",chartDigits:"小数位",chartWeight:"权重字段",chartWeightedAverage:"加权平均",chartNumberOptions:"数值与精度",chartStacked:"堆叠柱形",chartPercent:"占比柱形",chartDataset:"数据集",chartCategory:"分类字段",chartMeasure:"度量与聚合",chartAggregation:"聚合方式",chartSeries:"系列名称(可选)",chartAddSeries:"添加系列",chartRemoveSeries:"移除系列",chartRecordCount:"计数",chartSum:"求和",chartAverage:"平均",chartMinimum:"最小值",chartMaximum:"最大值",chartType:"图表",chartBar:"柱形",chartLine:"折线",chartSort:"分类顺序",chartNatural:"数据顺序",chartAscending:"升序",chartDescending:"降序",chartTitle:"图表标题",chartValues:"显示数值",chartBindingNote:"复用本次查询的数据,先聚合再绘图;不改变原始数值。Excel 图形输出限制会在导出检查中提示。",toolTarget:"当前目标",toolPreview:"显示画布",toolPreviewHide:"收起画布",toolChooseComponent:"选择组件",previousColumns:"上一组字段",nextColumns:"下一组字段",columnWindow:"{start}–{end} / {total}",paperAndPages:"纸张与版面",pageDirectory:"版面目录",pageName:"版面名称",addPage:"新增版面",duplicatePage:"复制版面",removePage:"删除版面",removePageConfirm:"此版面包含组件,删除后可通过撤销恢复。",confirmRemovePage:"确认删除",paperPreset:"纸张规格",labelPaper:"标签",customPaper:"自定义尺寸",paperWidth:"纸宽(mm)",paperHeight:"纸高(mm)",pageLayout:"展示方式",fixedPaper:"固定纸张",completeWide:"完整宽表",pageMargins:"页边距 · mm",marginTop:"上边距",marginRight:"右边距",marginBottom:"下边距",marginLeft:"左边距",pageOverflow:"{count} 个组件超出纸张",pageOverflowHint:"内容位置和尺寸已保留,请调整组件或纸张后核对打印预览。",locateOverflow:"定位超界组件",repeatRecords:"按记录生成标签",repeatRecordsHint:"每条记录按版面顺序生成,支持多版与多份。",recordDataset:"记录数据集",recordRowKey:"记录主键字段(可选)",labelCopies:"份数来源",fixedCopies:"固定份数",fieldCopies:"记录字段",copiesPerRecord:"每条记录份数",copiesField:"份数字段",repeatBoundHint:"已有组件绑定此记录;移除全部字段绑定后可关闭。",repeatOrderHint:"生成顺序:记录 → 份数 → 版面;预览会使用提供的真实样例。",repeatNeedsFixed:"先使用固定纸张、将组件置于纸内,并移除明细表或流式区域。",dataBinding:"记录绑定",contentSource:"内容来源",staticContent:"固定内容",recordField:"记录字段",bindingField:"绑定字段",bindingNeedsRepeat:"先在“模板”开启按记录生成,再选择字段。",bindingRecordHint:"字段随当前记录变化,空值与真实的 0 分开处理。",bindingImageHint:"图片字段使用 PNG/JPEG base64 data URL;空值不显示,业务 URL 由接入方安全加载。",valueFormat:"值格式",naturalFormat:"原始显示",numberFormat:"数值",percentFormat:"百分比",dateFormat:"日期",decimalPlaces:"小数位",datePattern:"日期格式",bindingDecoration:"前后缀与空值",valuePrefix:"前缀",valueSuffix:"后缀",emptyValueText:"空值显示",insertQrcode:"二维码",insertBarcode:"条形码",codeSettings:"编码设置",codeAdvancedSettings:"纠错、留白与使用说明",codeValue:"固定编码内容",codeSymbology:"条码制式",codeCorrection:"二维码纠错",codeQuietZone:"留白(模块)",codeShowText:"显示条码文字",eanContentHint:"使用完整的 8 / 13 位数字,包含有效校验位;切换制式不会改写内容。",code39ContentHint:"支持大写字母、数字、空格与 - . $ / + %;内容不会自动转换。",code128ContentHint:"支持可打印 ASCII 内容;中文请使用二维码。",codePlaceholder:"编码区域",codePreviewHint:"设计中显示内容标识;切换预览核对实际编码。",boundImagePlaceholder:"记录图片",rulerLabel:"毫米标尺",rulerToggle:"标尺",designSample:"样例",repeatPage:"每页重复",repeatNone:"不重复",repeatHeader:"页眉",repeatFooter:"页脚",textFormat:"文字样式",fontSize:"字号(pt)",fontBold:"加粗",textColor:"文字颜色",backgroundColor:"背景颜色",canvasGridLimited:"设计窗口仅显示前 2000 个单元格;最终预览与导出保留完整内容。",design:"设计",preview:"预览",componentSection:"组件",toolsSection:"工具",component:"组件",components:"组件目录",canvasHint:"点击选择 · 拖动移动 · 方向键微调 · Shift 加速 · Esc 取消",zoom:"缩放",sampleRows:"数据预览区域",treeSampleHint:"树形样例需完整且有界,请在报表预览中验证",resizeComponent:"调整组件尺寸",resizeColumn:"调整列宽",insertComponent:"添加组件",insertText:"文本",insertList:"明细表",insertImage:"图片",insertRect:"矩形",chartComponent:"图表",lineComponent:"线条",ellipseComponent:"椭圆",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,上传 PNG/JPEG 可供预览与文件输出共用",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",flowLayout:"区域版式由 Excel 绑定向导管理;可编辑字段、格式与业务规则。",paramsTool:"查询参数",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",unapplied:"待应用",pendingToolsLabel:"待处理配置",pendingToolsHint:"应用或恢复后可保存",saveReadonly:"当前为只读,无法保存",saveConfirmation:"请先处理修改确认",saveUnchanged:"没有需要保存的修改",saveInvalid:"模板有错误,请先修正",saveJsonPending:"完整 JSON 待应用",returnToConfiguration:"返回配置",rulesNeedList:"请先在字段区域选择明细表。",undo:"撤销",redo:"重做",columnsSearch:"搜索列名或字段",columnsSelected:"已选列",selectVisible:"选择当前结果",clearSelection:"清除选择",noColumns:"没有匹配的列",batchBody:"批量正文对齐",batchHeader:"批量表头对齐",chooseAlignment:"选择对齐方式",discardTitle:"保留当前修改?",discardDescription:"当前包含未保存的属性或尚未应用的 JSON,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃修改并继续",jsonPending:"JSON 尚未应用。请先校验并应用,或撤销 JSON 修改后继续属性编辑与保存。",fieldsSection:"字段",templateSection:"模板",advancedSection:"高级",sectionsLabel:"模板设置分区",columnDirectory:"字段目录",columnProperties:"字段属性",selectColumn:"选择字段",clearSearch:"清除搜索",fieldsCount:"个字段",templateDetails:"模板信息",advancedTitle:"完整配置",advancedDescription:"用于批量迁移或配置复杂模板。应用前会校验;未应用的内容会受到草稿保护。",templateIdentity:"模板标识",templateRevision:"当前修订",readonly:"只读",ready:"可编辑",previewTitle:"实时预览",contentGroup:"内容",formatGroup:"格式",autoShort:"自动",previousColumn:"上一字段",nextColumn:"下一字段",closeDirectory:"关闭字段目录",technicalDetails:"标识与修订",fieldPosition:"当前字段",previewFieldDirectory:"定位字段"},ue={outlineTool:"结构大纲",reuseTool:"片段与样式",fitWidth:"适宽",fitPage:"适页",fitSelection:"选区",wideNavigation:"宽表导航",alignSelection:"对齐选区",leftEdges:"左对齐",centers:"水平居中",rightEdges:"右对齐",topEdges:"顶对齐",middles:"垂直居中",bottomEdges:"底对齐",horizontalSpacing:"水平等距",verticalSpacing:"垂直等距",lockSelection:"锁定位置",unlockSelection:"解锁位置",sessionLock:"位置锁定仅当前设计会话有效。",toolsPending:"工具中还有未应用的配置,请先应用或恢复后再保存模板。",...oa,...la},ra={class:"mr-canvas"},ia={class:"mr-canvas-heading"},sa={class:"mr-canvas-sheet-info"},ca=["title"],da=["title"],ua={class:"mr-canvas-gesture-hint"},ma={class:"mr-canvas-toolbar"},pa={class:"mr-canvas-view-tools"},fa=["aria-pressed"],va=["disabled"],ga=["value","aria-label"],ha=["value"],ya=["width","aria-label"],ba=["transform"],ka={x:"3",y:"9"},Ea=["height"],Sa=["transform"],Na={x:"3",y:"10"},wa=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],Va={class:"mr-canvas-table"},Ca={key:1,class:"mr-canvas-table-row is-header"},xa=["onPointerdown"],Ma={key:2,class:"mr-canvas-placeholder"},Ba=["aria-label","onPointerdown"],Da={key:1,class:"mr-canvas-static-grid"},$a={key:0,class:"mr-canvas-grid-limit"},Ta=["title"],_a={key:0},Ia=["src"],Ra=["title"],La=["aria-label","onPointerdown"],Aa={key:0,class:"mr-canvas-navigator"},Pa=["value","aria-label"],Fa=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:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),{viewport:l,zoom:i,scale:s,page:p,wide:b,fraction:x,fit:m,setZoom:h,sync:M,navigate:E}=Yn({get document(){return a.document},get pageIndex(){return a.pageIndex},get selection(){return a.selection},get columnIndex(){return a.activeColumnIndex}}),y=e.computed(()=>a.disabled===!0||a.geometryDisabled===!0||!!p.value.flow),N=e.computed(()=>p.value.components.map(T=>T.kind==="list"?Jn(T,a.datasets?.[T.dataset]??[],p.value.flow||T.cardinality==="record"?1:3):[])),u=e.computed(()=>p.value.components.map(T=>Qn(T,a.document,a.datasets))),S=e.ref(!0),V=e.computed(()=>St(p.value.widthMm,s.value)),w=e.computed(()=>St(p.value.heightMm,s.value));function v(T,_,D){return{width:`${_*s.value}px`,opacity:D?.35:1,textAlign:T.style?.align,paddingLeft:T.indentMm?`${T.indentMm*s.value}px`:void 0,color:T.style?.color,backgroundColor:T.style?.backgroundColor,fontWeight:T.style?.bold?"700":"400",fontSize:`${Ke.resolveFontSize(T.style).fontSizePx*i.value}px`}}function c(T){return a.locked?.({pageIndex:a.pageIndex,componentIndex:T})===!0}function f(T,_){r("select",{pageIndex:a.pageIndex,componentIndex:_,additive:T.ctrlKey||T.metaKey||T.shiftKey}),!T.ctrlKey&&!T.metaKey&&!T.shiftKey&&!c(_)&&k.start(T,p.value.components[_])}const k=aa({scale:s,page:()=>p.value,disabled:()=>y.value,commit:T=>r("geometry",T)});function B(T){return(a.selections??(a.selection?[a.selection]:[])).some(_=>_.pageIndex===a.pageIndex&&_.componentIndex===T)}function I(T){const _=p.value.components[T],D=_.kind==="list"?_.id:_.nid,$=p.value.flow?.bands.find(G=>G.componentIds.includes(D??"")),R=$&&_.kind==="list"?$.topMm+$.heightMm-_.topMm:Je(_);return{left:`${_.leftMm*s.value}px`,top:`${_.topMm*s.value}px`,width:`${_.widthMm*s.value}px`,height:`${R*s.value}px`}}function A(T,_){const D=p.value.components[_];if(y.value||c(_)||!B(_))return;const $={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},R=$[T.key];if(!R)return;T.preventDefault(),T.stopPropagation();const G=re(D),j=T.shiftKey?5:.5;G.leftMm+=R[0]*j,G.topMm+=R[1]*j,r("geometry",G)}function U(T){let _=0;return T.columns.map(D=>(_+=D.widthMm,_))}function Q(T){return T.grid?P.resolveGridLayout(T.grid,T.widthMm,T.heightMm).cells.slice(0,2e3):[]}function d(T){return T.headerGrid?P.resolveGridLayout(T.headerGrid,T.widthMm,T.headerGrid.rowHeightsMm?.reduce((_,D)=>_+D,0)??T.headerGrid.cells.length*8).cells:[]}let F;e.watch(()=>y.value,T=>{T&&F?.()}),e.watch(()=>a.document,()=>F?.()),e.onBeforeUnmount(()=>F?.());function z(T,_,D){if(y.value||T.button!==0)return;T.preventDefault(),T.stopPropagation(),F?.();const $=T.clientX,R=_.columns[D].widthMm;let G=R;const j=T.currentTarget,K=le=>{G=Math.max(2,Math.round((R+(le.clientX-$)/s.value)*2)/2),j.style.transform=`translateX(${(G-R)*s.value}px)`},oe=()=>{window.removeEventListener("pointermove",K),window.removeEventListener("pointerup",ee),window.removeEventListener("pointercancel",ae),window.removeEventListener("keydown",X),j.style.transform="",F=void 0},ee=()=>{oe(),G!==R&&r("width",D,G)},ae=()=>oe(),X=le=>{le.key==="Escape"&&(le.preventDefault(),ae())};window.addEventListener("pointermove",K),window.addEventListener("pointerup",ee),window.addEventListener("pointercancel",ae),window.addEventListener("keydown",X),F=ae}return(T,_)=>(e.openBlock(),e.createElementBlock("div",ra,[e.createElementVNode("div",ia,[e.createElementVNode("div",sa,[e.createElementVNode("strong",{title:e.unref(Ae)(e.unref(p),t.pageIndex,n.value.page)},e.toDisplayString(e.unref(Ae)(e.unref(p),t.pageIndex,n.value.page)),9,ca),e.createElementVNode("span",null,e.toDisplayString(e.unref(p).widthMm)+" × "+e.toDisplayString(e.unref(p).heightMm)+" mm",1),t.document.template.repeat?(e.openBlock(),e.createElementBlock("small",{key:0,title:t.document.template.repeat.dataset},e.toDisplayString(n.value.designSample)+" · "+e.toDisplayString(t.document.template.repeat.dataset),9,da)):e.createCommentVNode("",!0)]),e.createElementVNode("span",ua,e.toDisplayString(n.value.canvasHint),1),e.createElementVNode("div",ma,[e.createElementVNode("nav",pa,[e.createElementVNode("button",{type:"button","aria-pressed":S.value,onClick:_[0]||(_[0]=D=>S.value=!S.value)},e.toDisplayString(n.value.rulerToggle),9,fa),e.createElementVNode("button",{type:"button",onClick:_[1]||(_[1]=D=>e.unref(m)("width"))},e.toDisplayString(n.value.fitWidth),1),e.createElementVNode("button",{type:"button",onClick:_[2]||(_[2]=D=>e.unref(m)("page"))},e.toDisplayString(n.value.fitPage),1),e.createElementVNode("button",{type:"button",disabled:!t.selection,onClick:_[3]||(_[3]=D=>e.unref(m)("selection"))},e.toDisplayString(n.value.fitSelection),9,va)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.zoom),1),e.createElementVNode("select",{value:e.unref(i),"aria-label":n.value.zoom,onChange:_[4]||(_[4]=D=>e.unref(h)(Number(D.target.value)))},[[.5,.8,1,1.25].includes(e.unref(i))?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("option",{key:0,value:e.unref(i)},e.toDisplayString(Math.round(e.unref(i)*100))+"%",9,ha)),_[7]||(_[7]=e.createElementVNode("option",{value:.5},"50%",-1)),_[8]||(_[8]=e.createElementVNode("option",{value:.8},"80%",-1)),_[9]||(_[9]=e.createElementVNode("option",{value:1},"100%",-1)),_[10]||(_[10]=e.createElementVNode("option",{value:1.25},"125%",-1))],40,ga)])])]),e.createElementVNode("div",{ref_key:"viewport",ref:l,class:"mr-canvas-scroll",onScrollPassive:_[5]||(_[5]=(...D)=>e.unref(M)&&e.unref(M)(...D))},[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${e.unref(p).widthMm*e.unref(s)}px`,height:`${e.unref(p).heightMm*e.unref(s)}px`})},[S.value?(e.openBlock(),e.createElementBlock("svg",{key:0,class:"mr-canvas-ruler is-horizontal",width:e.unref(p).widthMm*e.unref(s),height:"17","aria-label":n.value.rulerLabel,role:"img"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,D=>(e.openBlock(),e.createElementBlock("g",{key:D.mm,transform:`translate(${D.position}, 0)`},[_[11]||(_[11]=e.createElementVNode("line",{y1:"12",y2:"17"},null,-1)),e.createElementVNode("text",ka,e.toDisplayString(D.mm),1)],8,ba))),128))],8,ya)):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("svg",{key:1,class:"mr-canvas-ruler is-vertical",width:"17",height:e.unref(p).heightMm*e.unref(s),"aria-hidden":"true"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,D=>(e.openBlock(),e.createElementBlock("g",{key:D.mm,transform:`translate(0, ${D.position})`},[_[12]||(_[12]=e.createElementVNode("line",{x1:"12",x2:"17"},null,-1)),e.createElementVNode("text",Na,e.toDisplayString(D.mm),1)],8,Sa))),128))],8,Ea)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p).components,(D,$)=>(e.openBlock(),e.createElementBlock("div",{key:$,class:e.normalizeClass(["mr-canvas-component",{"is-selected":B($),"is-locked":c($)}]),"data-canvas-component":$,style:e.normalizeStyle(I($)),role:"button","aria-label":`${n.value.component} ${$+1} ${D.kind}`,"aria-pressed":B($),tabindex:B($)?0:-1,onFocus:R=>!B($)&&r("select",{pageIndex:t.pageIndex,componentIndex:$}),onPointerdown:R=>f(R,$),onClick:R=>R.detail===0&&!B($)&&r("select",{pageIndex:t.pageIndex,componentIndex:$}),onKeydown:R=>A(R,$)},[D.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Va,[D.header!==!1&&D.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(D.headerGrid.rowHeightsMm?.reduce((R,G)=>R+G,0)??D.headerGrid.cells.length*8)*e.unref(s)}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d(D),(R,G)=>(e.openBlock(),e.createElementBlock("div",{key:G,style:e.normalizeStyle({left:`${R.xMm*e.unref(s)}px`,top:`${R.yMm*e.unref(s)}px`,width:`${R.widthMm*e.unref(s)}px`,height:`${R.heightMm*e.unref(s)}px`,textAlign:R.cell.style?.align??"center"})},e.toDisplayString(R.cell.text),5))),128))],4)):D.header!==!1?(e.openBlock(),e.createElementBlock("div",Ca,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.columns,(R,G)=>(e.openBlock(),e.createElementBlock("div",{key:G,style:e.normalizeStyle(v({text:R.header,style:e.unref($e.resolveListHeaderStyle)(D,R)},R.widthMm,R.hidden)),onPointerdown:e.withModifiers(j=>{r("select",{pageIndex:t.pageIndex,componentIndex:$}),r("column",G)},["stop"])},e.toDisplayString(R.header),45,xa))),128))])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value[$],(R,G)=>(e.openBlock(),e.createElementBlock("div",{key:G,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.columns,(j,K)=>(e.openBlock(),e.createElementBlock("div",{key:K,style:e.normalizeStyle(v(R[K],j.widthMm,j.hidden))},e.toDisplayString(R[K].text),5))),128))]))),128)),N.value[$]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ma,e.toDisplayString(D.dataset)+" · "+e.toDisplayString(D.tree&&t.datasets?.[D.dataset]?.length?n.value.treeSampleHint:n.value.sampleRows),1))]),B($)&&!y.value&&!c($)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(U(D),(R,G)=>(e.openBlock(),e.createElementBlock("span",{key:G,class:"mr-canvas-column-handle","aria-label":`${n.value.resizeColumn} ${D.columns[G]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${R*e.unref(s)}px`}),onPointerdown:j=>z(j,D,G)},null,44,Ba))),128)):e.createCommentVNode("",!0)],64)):D.grid?(e.openBlock(),e.createElementBlock("div",Da,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Q(D),(R,G)=>(e.openBlock(),e.createElementBlock("div",{key:G,style:e.normalizeStyle({left:`${R.xMm*e.unref(s)}px`,top:`${R.yMm*e.unref(s)}px`,width:`${R.widthMm*e.unref(s)}px`,height:`${R.heightMm*e.unref(s)}px`,backgroundColor:R.cell.style?.backgroundColor,color:R.cell.style?.color,fontWeight:R.cell.style?.bold?"700":"400",fontSize:`${e.unref(Ke.resolveFontSize)(R.cell.style).fontSizePx*e.unref(i)}px`,textAlign:R.cell.style?.align??"left"})},e.toDisplayString(R.cell.text),5))),128)),D.grid.cells.reduce((R,G)=>R+G.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",$a,e.toDisplayString(n.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):(D.kind==="barcode"||D.kind==="qrcode")&&!u.value[$]?.image?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["mr-canvas-code",{"is-error":u.value[$]?.error}]),title:u.value[$]?.error??n.value.codePreviewHint},[_[13]||(_[13]=e.createElementVNode("svg",{viewBox:"0 0 32 24","aria-hidden":"true"},[e.createElementVNode("rect",{x:"3",y:"3",width:"26",height:"18",rx:"2"}),e.createElementVNode("path",{d:"M10 8 6 12l4 4m12-8 4 4-4 4m-8 2 4-12"})],-1)),e.createElementVNode("strong",null,e.toDisplayString(D.kind==="qrcode"?n.value.insertQrcode:(D.code?.symbology??"code128").toUpperCase()),1),e.createElementVNode("span",null,e.toDisplayString(u.value[$]?.text||n.value.codePlaceholder),1),u.value[$]?.bound?(e.openBlock(),e.createElementBlock("small",_a,e.toDisplayString(D.binding?.field),1)):e.createCommentVNode("",!0)],10,Ta)):u.value[$]?.image?(e.openBlock(),e.createElementBlock("img",{key:3,src:u.value[$]?.image,alt:"",draggable:"false"},null,8,Ia)):(e.openBlock(),e.createElementBlock("div",{key:4,class:e.normalizeClass(["mr-canvas-content",{"is-binding-error":u.value[$]?.error,"is-bound-image":D.kind==="image"&&D.binding}]),title:u.value[$]?.error==="image-binding"?n.value.bindingImageHint:u.value[$]?.error,style:e.normalizeStyle({color:D.style?.color,backgroundColor:D.style?.backgroundColor,fontWeight:D.style?.bold?"700":"400",fontSize:`${e.unref(Ke.resolveFontSize)(D.style).fontSizePx*e.unref(i)}px`,textAlign:D.style?.align,justifyContent:D.style?.verticalAlign==="bottom"?"flex-end":D.style?.verticalAlign==="middle"?"center":"flex-start"})},e.toDisplayString(u.value[$]?.text||(D.kind==="rect"?"":D.kind==="image"&&D.binding?n.value.boundImagePlaceholder:"")),15,Ra)),B($)&&!y.value&&!c($)?(e.openBlock(),e.createElementBlock("span",{key:5,class:"mr-canvas-resize","aria-label":n.value.resizeComponent,role:"separator",onPointerdown:R=>e.unref(k).start(R,D,!0)},null,40,La)):e.createCommentVNode("",!0)],46,wa))),128))],4)],544),e.unref(b)?(e.openBlock(),e.createElementBlock("footer",Aa,[e.createElementVNode("span",null,e.toDisplayString(n.value.wideNavigation),1),e.createElementVNode("input",{type:"range",min:"0",max:"100",value:e.unref(x),"aria-label":n.value.wideNavigation,onInput:_[6]||(_[6]=D=>e.unref(E)(Number(D.target.value)))},null,40,Pa),e.createElementVNode("span",null,e.toDisplayString(e.unref(x))+"%",1)])):e.createCommentVNode("",!0)]))}}),Ha=Y._export_sfc(Fa,[["__scopeId","data-v-c512529e"]]),Oa=["disabled"],Ga=["aria-label","value"],za=["value"],Ua=["aria-label","value"],ja=["value"],qa={class:"mr-chart-series-heading"},Wa=["disabled"],Ka={class:"mr-chart-series-row"},Ja=["value","aria-label","onChange"],Ya={key:0,value:""},Qa=["value"],Xa=["aria-label","disabled","onClick"],Za={class:"mr-chart-series-row"},eo=["value","aria-label","onChange"],to={value:"sum"},no={value:"avg"},ao={value:"weightedAvg"},oo={value:"count"},lo={value:"min"},ro={value:"max"},io=["value","aria-label","placeholder","onChange"],so={key:0},co=["aria-label","value","onChange"],uo=["value"],mo={class:"mr-chart-series-row"},po=["value","aria-label","onChange"],fo={value:"number"},vo={value:"decimal"},go=["value","aria-label","placeholder","onChange"],ho={class:"mr-chart-series-row"},yo=["aria-label","value"],bo={value:"bar"},ko={value:"line"},Eo={value:"stackedBar"},So={value:"percentBar"},No=["aria-label","value"],wo={value:""},Vo={value:"asc"},Co={value:"desc"},xo=["aria-label","value"],Mo={class:"mr-chart-check"},Bo=["checked"],Do=e.defineComponent({__name:"ChartBindingInspector",props:{component:{},schemas:{},datasets:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.computed(()=>a.component.chartBinding??{dataset:"detail",categoryField:"field",type:"bar",measures:[{op:"sum",field:"value"}]}),i=e.computed(()=>[...new Set([l.value.dataset,...Object.keys(a.schemas??{}),...Object.keys(a.datasets??{})])]),s=e.computed(()=>{const y=a.schemas?.[l.value.dataset]?.fields;if(y)return y.map(u=>({field:u.field,label:u.label??u.field,type:u.type}));const N=a.datasets?.[l.value.dataset]?.[0];return[...new Set([l.value.categoryField,...l.value.measures.flatMap(u=>u.field?[u.field]:[]),...Object.keys(N??{}).slice(0,200)])].map(u=>({field:u,label:u,type:void 0}))});function p(y){a.disabled||r("change",{...l.value,...y})}function b(y,N){p({measures:l.value.measures.map((u,S)=>{if(S!==y)return u;const V={...u,...N};return V.op==="weightedAvg"&&!V.weightField&&(V.weightField=s.value.find(w=>w.field!==V.field&&["number","decimal"].includes(w.type??""))?.field??V.field??"value"),V.op!=="count"&&!V.field&&(V.field=s.value[0]?.field??"value"),V})})}function x(y,N){b(y,{field:N||void 0,numeric:s.value.find(u=>u.field===N)?.type==="decimal"?"decimal":"number"})}function m(y,N){(N===""||/^\d+$/.test(N)&&Number(N)<=100)&&b(y,{digits:N===""?void 0:Number(N)})}function h(){l.value.measures.length<12&&p({measures:[...l.value.measures,{op:"sum",field:s.value[0]?.field??"value"}]})}function M(y){l.value.measures.length>1&&p({measures:l.value.measures.filter((N,u)=>u!==y)})}const E=y=>y.target.value;return(y,N)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-chart-binding",disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartDataset),1),e.createElementVNode("select",{"aria-label":n.value.chartDataset,value:l.value.dataset,onChange:N[0]||(N[0]=u=>p({dataset:E(u)}))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock("option",{key:u,value:u},e.toDisplayString(u),9,za))),128))],40,Ga)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartCategory),1),e.createElementVNode("select",{"aria-label":n.value.chartCategory,value:l.value.categoryField,onChange:N[1]||(N[1]=u=>p({categoryField:E(u)}))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,u=>(e.openBlock(),e.createElementBlock("option",{key:u.field,value:u.field},e.toDisplayString(u.label),9,ja))),128))],40,Ua)]),e.createElementVNode("div",qa,[e.createElementVNode("strong",null,e.toDisplayString(n.value.chartMeasure),1),e.createElementVNode("button",{type:"button",disabled:t.disabled||l.value.measures.length>=12,onClick:h},"+ "+e.toDisplayString(n.value.chartAddSeries),9,Wa)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value.measures,(u,S)=>(e.openBlock(),e.createElementBlock("div",{key:S,class:"mr-chart-series"},[e.createElementVNode("div",Ka,[e.createElementVNode("select",{value:u.field??"","aria-label":n.value.chartMeasure,onChange:V=>x(S,E(V))},[u.op==="count"?(e.openBlock(),e.createElementBlock("option",Ya,e.toDisplayString(n.value.chartRecordCount),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label),9,Qa))),128))],40,Ja),e.createElementVNode("button",{type:"button","aria-label":n.value.chartRemoveSeries,disabled:t.disabled||l.value.measures.length===1,onClick:V=>M(S)},"×",8,Xa)]),e.createElementVNode("div",Za,[e.createElementVNode("select",{value:u.op,"aria-label":n.value.chartAggregation,onChange:V=>b(S,{op:E(V)})},[e.createElementVNode("option",to,e.toDisplayString(n.value.chartSum),1),e.createElementVNode("option",no,e.toDisplayString(n.value.chartAverage),1),e.createElementVNode("option",ao,e.toDisplayString(n.value.chartWeightedAverage),1),e.createElementVNode("option",oo,e.toDisplayString(n.value.chartRecordCount),1),e.createElementVNode("option",lo,e.toDisplayString(n.value.chartMinimum),1),e.createElementVNode("option",ro,e.toDisplayString(n.value.chartMaximum),1)],40,eo),e.createElementVNode("input",{value:u.label,"aria-label":n.value.chartSeries,placeholder:n.value.chartSeries,maxlength:"256",onChange:V=>b(S,{label:E(V)||void 0})},null,40,io)]),u.op==="weightedAvg"?(e.openBlock(),e.createElementBlock("label",so,[e.createTextVNode(e.toDisplayString(n.value.chartWeight),1),e.createElementVNode("select",{"aria-label":n.value.chartWeight,value:u.weightField??"",onChange:V=>b(S,{weightField:E(V)||void 0})},[N[6]||(N[6]=e.createElementVNode("option",{value:"",disabled:""},"—",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label),9,uo))),128))],40,co)])):e.createCommentVNode("",!0),e.createElementVNode("details",null,[e.createElementVNode("summary",null,e.toDisplayString(n.value.chartNumberOptions),1),e.createElementVNode("div",mo,[e.createElementVNode("select",{value:u.numeric??"number","aria-label":n.value.chartNumeric,onChange:V=>b(S,{numeric:E(V)})},[e.createElementVNode("option",fo,e.toDisplayString(n.value.chartNumber),1),e.createElementVNode("option",vo,e.toDisplayString(n.value.chartDecimal),1)],40,po),e.createElementVNode("input",{type:"number",min:"0",max:"100",value:u.digits,"aria-label":n.value.chartDigits,placeholder:n.value.chartDigits,onChange:V=>m(S,E(V))},null,40,go)])])]))),128)),e.createElementVNode("div",ho,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartType),1),e.createElementVNode("select",{"aria-label":n.value.chartType,value:l.value.type,onChange:N[2]||(N[2]=u=>p({type:E(u)}))},[e.createElementVNode("option",bo,e.toDisplayString(n.value.chartBar),1),e.createElementVNode("option",ko,e.toDisplayString(n.value.chartLine),1),e.createElementVNode("option",Eo,e.toDisplayString(n.value.chartStacked),1),e.createElementVNode("option",So,e.toDisplayString(n.value.chartPercent),1)],40,yo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartSort),1),e.createElementVNode("select",{"aria-label":n.value.chartSort,value:l.value.sort??"",onChange:N[3]||(N[3]=u=>p({sort:E(u)||void 0}))},[e.createElementVNode("option",wo,e.toDisplayString(n.value.chartNatural),1),e.createElementVNode("option",Vo,e.toDisplayString(n.value.chartAscending),1),e.createElementVNode("option",Co,e.toDisplayString(n.value.chartDescending),1)],40,No)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.chartTitle),1),e.createElementVNode("input",{"aria-label":n.value.chartTitle,value:l.value.title,maxlength:"512",onChange:N[4]||(N[4]=u=>p({title:E(u)||void 0}))},null,40,xo)]),e.createElementVNode("label",Mo,[e.createElementVNode("input",{type:"checkbox",checked:l.value.showValues,onChange:N[5]||(N[5]=u=>p({showValues:u.target.checked}))},null,40,Bo),e.createTextVNode(e.toDisplayString(n.value.chartValues),1)]),e.createElementVNode("p",null,e.toDisplayString(n.value.chartBindingNote),1)],8,Oa))}}),Rt=Y._export_sfc(Do,[["__scopeId","data-v-4060b1b9"]]),$o={class:"mr-component-binding"},To=["value","disabled"],_o={value:"static"},Io=["disabled"],Ro={key:0,class:"mr-binding-hint"},Lo=["value","disabled"],Ao=["value"],Po={key:0,class:"mr-binding-grid"},Fo=["value","disabled"],Ho={value:"natural"},Oo={value:"number"},Go={value:"percent"},zo={value:"date"},Uo={key:0},jo=["value","disabled"],qo={key:1},Wo=["value","disabled"],Ko={key:1},Jo={class:"mr-binding-grid"},Yo=["value","disabled"],Qo=["value","disabled"],Xo=["value","disabled"],Zo={class:"mr-binding-hint"},el=e.defineComponent({__name:"ComponentDataBinding",props:{component:{},repeat:{},schema:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.computed(()=>a.component.binding),i=`mr-component-fields-${e.getCurrentInstance()?.uid??0}`;function s(h){return h.target.value}function p(h){!a.disabled&&l.value&&r("change",{...l.value,...h})}function b(h){a.disabled||(s(h)==="static"?r("change",void 0):a.repeat&&r("change",{field:a.schema?.fields[0]?.field??"value"}))}function x(h){if(!l.value||a.disabled)return;const M={...l.value},E=s(h);E==="natural"?delete M.format:M.format=E==="date"?{kind:"date",pattern:"YYYY-MM-DD"}:{kind:E,digits:2},r("change",M)}function m(h){const M=s(h),E=l.value?.format;M.trim()&&E&&E.kind!=="date"&&p({format:{...E,digits:Number(M)}})}return(h,M)=>(e.openBlock(),e.createElementBlock("div",$o,[e.createElementVNode("h3",null,e.toDisplayString(n.value.componentContent),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.contentSource),1),e.createElementVNode("select",{value:l.value?"field":"static",disabled:t.disabled,onChange:b},[e.createElementVNode("option",_o,e.toDisplayString(n.value.staticContent),1),e.createElementVNode("option",{value:"field",disabled:!t.repeat},e.toDisplayString(n.value.recordField),9,Io)],40,To)]),t.repeat?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Ro,e.toDisplayString(n.value.bindingNeedsRepeat),1)),l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.bindingField),1),e.createElementVNode("input",{value:l.value.field,list:i,disabled:t.disabled,onChange:M[0]||(M[0]=E=>s(E).trim()&&p({field:s(E).trim()}))},null,40,Lo)]),e.createElementVNode("datalist",{id:i},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.schema?.fields??[],E=>(e.openBlock(),e.createElementBlock("option",{key:E.field,value:E.field},e.toDisplayString(E.label),9,Ao))),128))]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Po,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valueFormat),1),e.createElementVNode("select",{value:l.value.format?.kind??"natural",disabled:t.disabled,onChange:x},[e.createElementVNode("option",Ho,e.toDisplayString(n.value.naturalFormat),1),e.createElementVNode("option",Oo,e.toDisplayString(n.value.numberFormat),1),e.createElementVNode("option",Go,e.toDisplayString(n.value.percentFormat),1),e.createElementVNode("option",zo,e.toDisplayString(n.value.dateFormat),1)],40,Fo)]),l.value.format&&l.value.format.kind!=="date"?(e.openBlock(),e.createElementBlock("label",Uo,[e.createTextVNode(e.toDisplayString(n.value.decimalPlaces),1),e.createElementVNode("input",{type:"number",min:"0",max:"100",step:"1",value:l.value.format.digits??2,disabled:t.disabled,onChange:m},null,40,jo)])):l.value.format?.kind==="date"?(e.openBlock(),e.createElementBlock("label",qo,[e.createTextVNode(e.toDisplayString(n.value.datePattern),1),e.createElementVNode("input",{value:l.value.format.pattern??"YYYY-MM-DD",disabled:t.disabled,onChange:M[1]||(M[1]=E=>p({format:{kind:"date",pattern:s(E)}}))},null,40,Wo)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),t.component.kind!=="image"?(e.openBlock(),e.createElementBlock("details",Ko,[e.createElementVNode("summary",null,e.toDisplayString(n.value.bindingDecoration),1),e.createElementVNode("div",Jo,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valuePrefix),1),e.createElementVNode("input",{value:l.value.prefix??"",disabled:t.disabled,onChange:M[2]||(M[2]=E=>p({prefix:s(E)}))},null,40,Yo)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.valueSuffix),1),e.createElementVNode("input",{value:l.value.suffix??"",disabled:t.disabled,onChange:M[3]||(M[3]=E=>p({suffix:s(E)}))},null,40,Qo)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.emptyValueText),1),e.createElementVNode("input",{value:l.value.emptyText??"",disabled:t.disabled,onChange:M[4]||(M[4]=E=>p({emptyText:s(E)}))},null,40,Xo)])])):e.createCommentVNode("",!0),e.createElementVNode("p",Zo,e.toDisplayString(t.repeat?.dataset)+" · "+e.toDisplayString(t.component.kind==="image"?n.value.bindingImageHint:n.value.bindingRecordHint),1)],64)):e.createCommentVNode("",!0)]))}}),tl=Y._export_sfc(el,[["__scopeId","data-v-4558f265"]]),nl={class:"mr-code-properties"},al={key:0},ol=["value","disabled"],ll={key:1},rl=["value","disabled"],il={key:2,class:"mr-code-checkbox"},sl=["checked","disabled"],cl={class:"mr-code-advanced"},dl={class:"mr-code-grid"},ul={key:0},ml=["value","disabled"],pl=["min","value","disabled"],fl={key:0},vl=e.defineComponent({__name:"CodeComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.computed(()=>a.component.kind==="qrcode"?4:a.component.code?.symbology?.startsWith("ean")?11:10);function i(b){return b.target.value}function s(b){a.disabled||r("change",{...a.component.code,...b})}function p(b){const x=i(b);s({symbology:x,quietZoneModules:x.startsWith("ean")?11:10})}return(b,x)=>(e.openBlock(),e.createElementBlock("div",nl,[e.createElementVNode("h3",null,e.toDisplayString(n.value.codeSettings),1),t.component.binding?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("label",al,[e.createTextVNode(e.toDisplayString(n.value.codeValue),1),e.createElementVNode("textarea",{rows:"2",value:t.component.code?.value??t.component.fallbackText??t.component.text??"",disabled:t.disabled,onChange:x[0]||(x[0]=m=>s({value:i(m)}))},null,40,ol)])),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",ll,[e.createTextVNode(e.toDisplayString(n.value.codeSymbology),1),e.createElementVNode("select",{value:t.component.code?.symbology??"code128",disabled:t.disabled,onChange:p},[...x[4]||(x[4]=[e.createElementVNode("option",{value:"code128"},"Code 128",-1),e.createElementVNode("option",{value:"code39"},"Code 39",-1),e.createElementVNode("option",{value:"ean13"},"EAN-13",-1),e.createElementVNode("option",{value:"ean8"},"EAN-8",-1)])],40,rl)])):e.createCommentVNode("",!0),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("label",il,[e.createElementVNode("input",{type:"checkbox",checked:t.component.code?.showText===!0,disabled:t.disabled,onChange:x[1]||(x[1]=m=>s({showText:m.target.checked}))},null,40,sl),e.createTextVNode(e.toDisplayString(n.value.codeShowText),1)])):e.createCommentVNode("",!0),e.createElementVNode("details",cl,[e.createElementVNode("summary",null,e.toDisplayString(n.value.codeAdvancedSettings),1),e.createElementVNode("div",dl,[t.component.kind==="qrcode"?(e.openBlock(),e.createElementBlock("label",ul,[e.createTextVNode(e.toDisplayString(n.value.codeCorrection),1),e.createElementVNode("select",{value:t.component.code?.errorCorrection??"M",disabled:t.disabled,onChange:x[2]||(x[2]=m=>s({errorCorrection:i(m)}))},[...x[5]||(x[5]=[e.createElementVNode("option",{value:"L"},"L · 7%",-1),e.createElementVNode("option",{value:"M"},"M · 15%",-1),e.createElementVNode("option",{value:"Q"},"Q · 25%",-1),e.createElementVNode("option",{value:"H"},"H · 30%",-1)])],40,ml)])):e.createCommentVNode("",!0),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.codeQuietZone),1),e.createElementVNode("input",{type:"number",min:l.value,max:"64",step:"1",value:t.component.code?.quietZoneModules??l.value,disabled:t.disabled,onChange:x[3]||(x[3]=m=>i(m).trim()&&s({quietZoneModules:Number(i(m))}))},null,40,pl)])]),t.component.kind==="barcode"?(e.openBlock(),e.createElementBlock("p",fl,e.toDisplayString(t.component.code?.symbology?.startsWith("ean")?n.value.eanContentHint:t.component.code?.symbology==="code39"?n.value.code39ContentHint:n.value.code128ContentHint),1)):e.createCommentVNode("",!0),e.createElementVNode("p",null,e.toDisplayString(n.value.codePreviewHint),1)])]))}}),gl=Y._export_sfc(vl,[["__scopeId","data-v-907fe45a"]]),hl=["aria-label"],yl=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],bl={key:0},kl={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},El={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},Sl={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},Nl={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},wl={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},Vl=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,r=o,n=()=>a.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function l(i,s){if(!["ArrowLeft","ArrowRight","Home","End"].includes(i.key))return;i.preventDefault();const b=n(),x=b.indexOf(s),m=i.key==="Home"?0:i.key==="End"?b.length-1:(x+(i.key==="ArrowRight"?1:-1)+b.length)%b.length;r("update:modelValue",b[m]);const h=i.currentTarget.parentElement;await e.nextTick(),h?.querySelector(`[data-align="${b[m]}"]`)?.focus()}return(i,s)=>(e.openBlock(),e.createElementBlock("div",{class:"mr-designer-alignment",role:"radiogroup","aria-label":t.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n(),p=>(e.openBlock(),e.createElementBlock("button",{key:p,type:"button",role:"radio","data-align":p,"aria-label":t.labels[p],title:t.labels[p],"aria-checked":t.modelValue===p,tabindex:t.modelValue===p?0:-1,onClick:b=>r("update:modelValue",p),onKeydown:b=>l(b,p)},[p==="auto"?(e.openBlock(),e.createElementBlock("span",bl,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",kl,[p==="left"?(e.openBlock(),e.createElementBlock("path",El)):p==="center"?(e.openBlock(),e.createElementBlock("path",Sl)):p==="right"?(e.openBlock(),e.createElementBlock("path",Nl)):(e.openBlock(),e.createElementBlock("path",wl))]))],40,yl))),128))],8,hl))}}),st=Y._export_sfc(Vl,[["__scopeId","data-v-c85770c4"]]),Cl=["disabled"],xl={class:"mr-component-content"},Ml={key:2},Bl=["value"],Dl=["value"],$l={class:"mr-component-upload"},Tl=["aria-label"],_l={key:0,role:"alert"},Il={key:5},Rl=["value"],Ll={key:0,class:"mr-component-type"},Al={class:"mr-component-dimensions"},Pl=["value"],Fl=["checked"],Hl={class:"mr-component-dimensions"},Ol=["value"],Gl=["value"],zl=["open"],Ul={class:"mr-component-dimensions"},jl=["min","value","disabled","onChange"],ql={key:0},Wl=["value","disabled"],Kl={value:""},Jl={value:"header"},Yl={value:"footer"},Ql=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},geometryDisabled:{type:Boolean},repeat:{},schema:{},schemas:{},datasets:{},messages:{}},emits:["geometry","patch"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.ref(""),i=["leftMm","topMm","widthMm","heightMm"],s=e.computed(()=>[n.value.leftPosition,n.value.topPosition,n.value.componentWidth,n.value.componentHeight]);function p(E,y){if(a.disabled||a.geometryDisabled)return;const N=Number(y.target.value);if(!Number.isFinite(N))return;const u={...re(a.component),[E]:N};a.component.kind==="qrcode"&&(E==="widthMm"||E==="heightMm")&&(u.widthMm=u.heightMm=N),r("geometry",u)}function b(E,y){if(a.component.kind==="list")return;const N={...a.component.style,[E]:y};E==="fontSize"&&delete N.fontSizePx,r("patch",{style:N})}const x=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));function m(E){return E.target.value}function h(E){const y={...a.component.meta};delete y.designerPlaceholder,r("patch",{imageData:E,meta:y})}async function M(E){const y=E.target,N=y.files?.[0];if(!N)return;l.value="";const u=a.component;try{if(N.size>4*1024*1024||!["image/png","image/jpeg"].includes(N.type))throw new Error(n.value.imageBudget);const S=new FileReader,V=await new Promise((w,v)=>{S.onload=()=>w(String(S.result)),S.onerror=()=>v(S.error),S.readAsDataURL(N)});!a.disabled&&a.component===u&&h(V)}catch(S){l.value=S instanceof Error?S.message:String(S)}finally{y.value=""}}return(E,y)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("div",xl,[t.component.kind==="chart"&&!t.component.imageData?(e.openBlock(),e.createBlock(Rt,{key:0,component:t.component,schemas:t.schemas,datasets:t.datasets,disabled:t.disabled,messages:n.value,onChange:y[0]||(y[0]=N=>r("patch",{chartBinding:N}))},null,8,["component","schemas","datasets","disabled","messages"])):e.createCommentVNode("",!0),["text","image","barcode","qrcode"].includes(t.component.kind)&&t.component.kind!=="list"&&!t.component.grid?(e.openBlock(),e.createBlock(tl,{key:1,component:t.component,repeat:t.repeat,schema:t.schema,disabled:t.disabled,messages:n.value,onChange:y[1]||(y[1]=N=>r("patch",{binding:N,...["barcode","qrcode"].includes(t.component.kind)?{imageData:void 0}:{}}))},null,8,["component","repeat","schema","disabled","messages"])):e.createCommentVNode("",!0),t.component.kind==="text"&&!t.component.binding?(e.openBlock(),e.createElementBlock("label",Ml,[e.createTextVNode(e.toDisplayString(n.value.componentText),1),e.createElementVNode("textarea",{rows:"3",value:t.component.text,onChange:y[2]||(y[2]=N=>r("patch",{text:m(N)}))},null,40,Bl)])):e.createCommentVNode("",!0),t.component.kind==="image"&&!t.component.binding?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:y[3]||(y[3]=N=>h(m(N)))},null,40,Dl)]),e.createElementVNode("label",$l,[e.createTextVNode(e.toDisplayString(n.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg","aria-label":n.value.imageUpload,onChange:M},null,40,Tl)]),l.value?(e.openBlock(),e.createElementBlock("p",_l,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="barcode"||t.component.kind==="qrcode"?(e.openBlock(),e.createBlock(gl,{key:4,component:t.component,disabled:t.disabled,messages:n.value,onChange:y[4]||(y[4]=N=>r("patch",{code:N,imageData:void 0}))},null,8,["component","disabled","messages"])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",Il,[e.createTextVNode(e.toDisplayString(n.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:y[5]||(y[5]=N=>r("patch",{dataset:m(N)}))},null,40,Rl)])):e.createCommentVNode("",!0)]),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",Ll,[e.createElementVNode("h3",null,e.toDisplayString(n.value.textFormat),1),e.createElementVNode("div",Al,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(Ke.resolveFontSize)(t.component.style).fontSizePt,onChange:y[6]||(y[6]=N=>b("fontSize",Number(m(N))))},null,40,Pl)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:y[7]||(y[7]=N=>b("bold",N.target.checked))},null,40,Fl)])]),e.createVNode(st,{"model-value":t.component.style?.align??"left",label:n.value.bodyAlign,labels:x.value,"auto-label":n.value.autoShort,"onUpdate:modelValue":y[8]||(y[8]=N=>b("align",N))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",Hl,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:y[9]||(y[9]=N=>b("color",m(N)))},null,40,Ol)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:y[10]||(y[10]=N=>b("backgroundColor",m(N)))},null,40,Gl)])])])):e.createCommentVNode("",!0),e.createElementVNode("details",{class:"mr-component-position",open:!t.repeat},[e.createElementVNode("summary",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.positionGroup),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(re)(t.component).widthMm)+" × "+e.toDisplayString(e.unref(re)(t.component).heightMm),1)]),e.createElementVNode("div",Ul,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.filter(N=>t.component.kind!=="list"||N!=="heightMm"),(N,u)=>(e.openBlock(),e.createElementBlock("label",{key:N},[e.createTextVNode(e.toDisplayString(s.value[u]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:N==="widthMm"||N==="heightMm"?2:0,value:e.unref(re)(t.component)[N],disabled:t.geometryDisabled,onChange:S=>p(N,S)},null,40,jl)]))),128))]),t.component.kind!=="list"&&!t.repeat?(e.openBlock(),e.createElementBlock("label",ql,[e.createTextVNode(e.toDisplayString(n.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",disabled:t.geometryDisabled,onChange:y[11]||(y[11]=N=>r("patch",{pageAnchor:m(N)||void 0}))},[e.createElementVNode("option",Kl,e.toDisplayString(n.value.repeatNone),1),e.createElementVNode("option",Jl,e.toDisplayString(n.value.repeatHeader),1),e.createElementVNode("option",Yl,e.toDisplayString(n.value.repeatFooter),1)],40,Wl)])):e.createCommentVNode("",!0)],8,zl)],8,Cl))}}),Xl=Y._export_sfc(Ql,[["__scopeId","data-v-311305ea"]]),Zl=["disabled"],er={class:"mr-page-section-heading"},tr=["aria-label"],nr=["aria-pressed","onClick"],ar={class:"mr-page-actions"},or=["disabled"],lr={key:0,class:"mr-page-confirm",role:"alert"},rr=["value","placeholder"],ir=["value"],sr=["value"],cr={value:"custom"},dr={class:"mr-page-grid"},ur=["value"],mr=["value"],pr=["value"],fr={value:"page"},vr=["disabled"],gr={class:"mr-page-grid"},hr=["value","onChange"],yr={key:1,class:"mr-page-overflow",role:"status"},br=e.defineComponent({__name:"TemplatePageInspector",props:{document:{},pageIndex:{},disabled:{type:Boolean},messages:{}},emits:["select","command","locate"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.computed(()=>a.document.template.pages[a.pageIndex]),i=e.computed(()=>ot.find(N=>N.widthMm===l.value.widthMm&&N.heightMm===l.value.heightMm)?.id??"custom"),s=e.computed(()=>It(l.value)),p=e.ref(!1);e.watch(()=>[a.pageIndex,a.document],()=>{p.value=!1});const b=["marginTopMm","marginRightMm","marginBottomMm","marginLeftMm"],x=e.computed(()=>[n.value.marginTop,n.value.marginRight,n.value.marginBottom,n.value.marginLeft]);function m(N){return N.target.value}function h(N){a.disabled||r("command",{type:"patch",patch:N})}function M(N){const u=ot.find(S=>S.id===m(N));u&&h({widthMm:u.widthMm,heightMm:u.heightMm,layout:"page"})}function E(N,u){const S=m(u);S.trim()&&Number.isFinite(Number(S))&&h({[N]:Number(S)})}function y(){if(!(a.disabled||a.document.template.pages.length<=1)){if(l.value.components.length&&!p.value){p.value=!0;return}r("command",{type:"remove"}),p.value=!1}}return(N,u)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-page-properties",disabled:t.disabled},[e.createElementVNode("div",er,[e.createElementVNode("h3",null,e.toDisplayString(n.value.paperAndPages),1),e.createElementVNode("span",null,e.toDisplayString(l.value.widthMm)+" × "+e.toDisplayString(l.value.heightMm)+" mm",1)]),e.createElementVNode("div",{class:"mr-page-list","aria-label":n.value.pageDirectory},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.document.template.pages,(S,V)=>(e.openBlock(),e.createElementBlock("button",{key:V,type:"button","aria-pressed":t.pageIndex===V,onClick:w=>r("select",V)},[e.createElementVNode("span",null,e.toDisplayString(V+1),1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(Ae)(S,V,n.value.page)),1),e.createElementVNode("small",null,e.toDisplayString(S.widthMm)+" × "+e.toDisplayString(S.heightMm),1)],8,nr))),128))],8,tr),e.createElementVNode("div",ar,[e.createElementVNode("button",{type:"button",onClick:u[0]||(u[0]=S=>r("command",{type:"add"}))},"+ "+e.toDisplayString(n.value.addPage),1),e.createElementVNode("button",{type:"button",onClick:u[1]||(u[1]=S=>r("command",{type:"duplicate"}))},e.toDisplayString(n.value.duplicatePage),1),e.createElementVNode("button",{type:"button",disabled:t.disabled||t.document.template.pages.length<=1,onClick:y},e.toDisplayString(n.value.removePage),9,or)]),p.value?(e.openBlock(),e.createElementBlock("div",lr,[e.createElementVNode("span",null,e.toDisplayString(n.value.removePageConfirm),1),e.createElementVNode("button",{type:"button",onClick:u[2]||(u[2]=S=>p.value=!1)},e.toDisplayString(n.value.keepEditing),1),e.createElementVNode("button",{type:"button",onClick:y},e.toDisplayString(n.value.confirmRemovePage),1)])):e.createCommentVNode("",!0),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.pageName),1),e.createElementVNode("input",{value:l.value.meta?.title??"",placeholder:`${n.value.page} ${t.pageIndex+1}`,maxlength:"120",onChange:u[3]||(u[3]=S=>h({meta:{...l.value.meta,title:m(S)}}))},null,40,rr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperPreset),1),e.createElementVNode("select",{value:i.value,onChange:M},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ot),S=>(e.openBlock(),e.createElementBlock("option",{key:S.id,value:S.id},e.toDisplayString(S.id.startsWith("label")?n.value.labelPaper:S.id.toUpperCase())+" · "+e.toDisplayString(S.widthMm)+" × "+e.toDisplayString(S.heightMm)+" mm",9,sr))),128)),e.createElementVNode("option",cr,e.toDisplayString(n.value.customPaper),1)],40,ir)]),e.createElementVNode("div",dr,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperWidth),1),e.createElementVNode("input",{type:"number",min:"1",step:"0.5",value:l.value.widthMm,onChange:u[4]||(u[4]=S=>E("widthMm",S))},null,40,ur)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.paperHeight),1),e.createElementVNode("input",{type:"number",min:"1",max:"4999",step:"0.5",value:l.value.heightMm,onChange:u[5]||(u[5]=S=>E("heightMm",S))},null,40,mr)])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.pageLayout),1),e.createElementVNode("select",{value:l.value.layout??"page",onChange:u[6]||(u[6]=S=>h({layout:m(S)}))},[e.createElementVNode("option",fr,e.toDisplayString(n.value.fixedPaper),1),e.createElementVNode("option",{value:"wide",disabled:!!t.document.template.repeat},e.toDisplayString(n.value.completeWide),9,vr)],40,pr)]),e.createElementVNode("details",null,[e.createElementVNode("summary",null,e.toDisplayString(n.value.pageMargins),1),e.createElementVNode("div",gr,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(b,(S,V)=>e.createElementVNode("label",{key:S},[e.createTextVNode(e.toDisplayString(x.value[V]),1),e.createElementVNode("input",{type:"number",min:"0",step:"0.5",value:l.value[S]??0,onChange:w=>E(S,w)},null,40,hr)])),64))])]),s.value.length?(e.openBlock(),e.createElementBlock("div",yr,[e.createElementVNode("strong",null,e.toDisplayString(n.value.pageOverflow.replace("{count}",String(s.value.length))),1),e.createElementVNode("p",null,e.toDisplayString(n.value.pageOverflowHint),1),e.createElementVNode("button",{type:"button",onClick:u[7]||(u[7]=S=>r("locate",s.value[0]))},e.toDisplayString(n.value.locateOverflow),1)])):e.createCommentVNode("",!0)],8,Zl))}}),kr=Y._export_sfc(br,[["__scopeId","data-v-da0b7ab6"]]),Er=["disabled"],Sr={class:"mr-repeat-toggle"},Nr=["checked","disabled"],wr=["value","list"],Vr=["id"],Cr=["value"],xr=["value"],Mr=["value"],Br={class:"mr-repeat-grid"},Dr=["value"],$r={value:"fixed"},Tr={value:"field"},_r={key:0},Ir=["value"],Rr={key:1},Lr=["value"],Ar={class:"mr-repeat-note"},Pr=e.defineComponent({__name:"TemplateRepeatInspector",props:{document:{},datasets:{},schemas:{},disabled:{type:Boolean},messages:{}},emits:["change"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.computed(()=>a.document.template.repeat),i=e.computed(()=>a.schemas?.[l.value?.dataset??""]?.fields??[]),s=e.computed(()=>[...new Set([...a.datasets??[],...Object.keys(a.schemas??{}),...l.value?[l.value.dataset]:[]])]),p=e.computed(()=>a.document.template.pages.some(u=>u.components.some(S=>S.kind!=="list"&&S.binding))),b=e.computed(()=>a.document.template.pages.some(u=>u.layout==="wide"||!!u.flow||u.components.some(S=>S.kind==="list")||It(u).length>0)),x=e.computed(()=>typeof l.value?.copies=="object"?"field":"fixed"),m=`mr-repeat-fields-${e.getCurrentInstance()?.uid??0}`;function h(u){return u.target.value}function M(u){!a.disabled&&l.value&&r("change",{...l.value,...u})}function E(u){a.disabled||(u.target.checked?b.value||r("change",{dataset:s.value[0]??"detail",copies:1}):p.value||r("change",void 0))}function y(u){if(!l.value||a.disabled)return;const S={...l.value},V=h(u).trim();V?S.rowKey=V:delete S.rowKey,r("change",S)}function N(u){M({copies:h(u)==="field"?{field:i.value.find(S=>S.type==="number")?.field??"copies"}:1})}return(u,S)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-repeat-properties",disabled:t.disabled},[e.createElementVNode("label",Sr,[e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(n.value.repeatRecords),1),e.createElementVNode("small",null,e.toDisplayString(b.value?n.value.repeatNeedsFixed:n.value.repeatRecordsHint),1)]),e.createElementVNode("input",{type:"checkbox",checked:!!l.value,disabled:t.disabled||!!l.value&&p.value||!l.value&&b.value,onChange:E},null,40,Nr)]),l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.recordDataset),1),e.createElementVNode("input",{value:l.value.dataset,list:`${m}-datasets`,onChange:S[0]||(S[0]=V=>h(V).trim()&&M({dataset:h(V).trim()}))},null,40,wr)]),e.createElementVNode("datalist",{id:`${m}-datasets`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V,value:V},null,8,Cr))),128))],8,Vr),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.recordRowKey),1),e.createElementVNode("input",{value:l.value.rowKey??"",list:m,onChange:y},null,40,xr)]),e.createElementVNode("datalist",{id:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label),9,Mr))),128))]),e.createElementVNode("div",Br,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.labelCopies),1),e.createElementVNode("select",{value:x.value,onChange:N},[e.createElementVNode("option",$r,e.toDisplayString(n.value.fixedCopies),1),e.createElementVNode("option",Tr,e.toDisplayString(n.value.fieldCopies),1)],40,Dr)]),x.value==="fixed"?(e.openBlock(),e.createElementBlock("label",_r,[e.createTextVNode(e.toDisplayString(n.value.copiesPerRecord),1),e.createElementVNode("input",{type:"number",min:"1",max:"1000",step:"1",value:l.value.copies??1,onChange:S[1]||(S[1]=V=>h(V).trim()&&M({copies:Number(h(V))}))},null,40,Ir)])):(e.openBlock(),e.createElementBlock("label",Rr,[e.createTextVNode(e.toDisplayString(n.value.copiesField),1),e.createElementVNode("input",{value:typeof l.value.copies=="object"?l.value.copies.field:"",list:m,onChange:S[2]||(S[2]=V=>h(V).trim()&&M({copies:{field:h(V).trim()}}))},null,40,Lr)]))]),e.createElementVNode("p",Ar,e.toDisplayString(p.value?n.value.repeatBoundHint:n.value.repeatOrderHint),1)],64)):e.createCommentVNode("",!0)],8,Er))}}),Fr=Y._export_sfc(Pr,[["__scopeId","data-v-de1ee031"]]),Lt={outline:"结构大纲",search:"搜索版面、组件、字段或引用",noMatches:"没有匹配的结构项",more:"显示更多",usages:"引用位置",all:"全部结构",count:"项",page:"版面",component:"组件",field:"字段",calculation:"计算",binding:"绑定",reuse:"片段与样式",fragments:"可复用片段",styles:"内容样式",insert:"插入独立副本",update:"显式更新此片段",noFragments:"尚未配置片段库。可从当前组件保存会话片段,或通过 fragments 接入共享片段。",capture:"保存当前组件为片段",fragmentName:"片段名称",role:"样式角色",apply:"应用到当前组件",copy:"复制当前样式",paste:"粘贴样式",bindings:"重新绑定字段",dataset:"数据集",target:"目标字段",preserve:"副本独立保存;共享片段更新后不会改变已有模板。",select:"选择一个目标组件后应用样式",revision:"修订",instance:"已插入修订",newRevision:"存在可显式应用的新修订",noStyles:"使用内置内容样式,或通过 documentStyles 配置品牌样式。",nameRequired:"请填写片段名称",styleText:"标题",styleHeading:"表头",styleBody:"正文",styleNumber:"数值",styleNote:"说明",rename:"确认字段映射变化",renameHint:"以下位置仍引用原字段。继续仅修改当前列的映射,不会改写计算或业务字段。",continue:"确认更换映射",cancel:"取消",locate:"定位"},Hr=["aria-label"],Or=["onClick"],Gr=["disabled"],zr=["disabled"],Ur=e.defineComponent({__name:"TemplateFieldImpactPanel",props:{change:{},messages:{},disabled:{type:Boolean}},emits:["confirm","cancel","locate"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...Lt,...a.messages}));return(l,i)=>t.change?(e.openBlock(),e.createElementBlock("section",{key:0,class:"mr-impact",role:"alertdialog","aria-label":n.value.rename},[e.createElementVNode("strong",null,e.toDisplayString(n.value.rename),1),e.createElementVNode("code",null,e.toDisplayString(t.change.before)+" → "+e.toDisplayString(t.change.after),1),e.createElementVNode("p",null,e.toDisplayString(n.value.renameHint),1),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.change.references.slice(0,100),s=>(e.openBlock(),e.createElementBlock("li",{key:s.path},[e.createElementVNode("button",{type:"button",onClick:p=>r("locate",s)},e.toDisplayString(n.value.locate)+" · "+e.toDisplayString(s.path),9,Or)]))),128))]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:i[0]||(i[0]=s=>r("cancel"))},e.toDisplayString(n.value.cancel),9,Gr),e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:i[1]||(i[1]=s=>r("confirm"))},e.toDisplayString(n.value.continue),9,zr)])],8,Hr)):e.createCommentVNode("",!0)}}),jr=Y._export_sfc(Ur,[["__scopeId","data-v-0813913f"]]),At={available:"发现未保存草稿",restore:"恢复草稿",discard:"放弃草稿",stale:"草稿基线已变化,恢复后须核对最新版本再保存。",localOnly:"仅保存模板、JSON 与工具配置,不保存业务数据或 Excel 文件。",autosaved:"草稿已暂存",saving:"暂存中",storageError:"草稿暂存失败",conflict:"模板版本已变化",conflictHint:"本地修改已保留。核对差异后选择处理方式,不会自动合并或覆盖。",baseline:"共同基线",local:"本地修改",remote:"远端修改",changes:"处差异",path:"位置",before:"原值",after:"新值",empty:"没有差异",loadLatest:"读取最新版本",adopt:"采用最新版本",rebase:"保留本地内容,以最新版本为基线",confirm:"确认更新基线",confirmHint:"此操作保留完整本地内容,不合并远端改动;下次保存将以最新修订号校验。",keepCopy:"保留独立副本",copied:"副本已保留",revision:"修订",unknown:"未发布",close:"收起差异",review:"核对版本冲突",toolsNeedSource:"Excel 映射配置已恢复,请重新选择原文件后核对。"},qr={key:0,class:"mr-recovery-banner",role:"status"},Wr={key:0},Kr={class:"mr-recovery-actions"},Jr=["disabled"],Yr={key:1,class:"mr-recovery-banner is-error",role:"alert"},Qr={class:"mr-recovery-actions"},Xr={key:2,class:"mr-recovery-status",role:"status"},Zr={key:3,class:"mr-recovery-conflict",open:""},ei={class:"mr-recovery-columns"},ti={key:0},ni={key:1},ai={key:0,role:"alert"},oi={key:1,role:"status"},li={class:"mr-recovery-actions"},ri=["disabled"],ii=["disabled"],si=["disabled"],ci=["disabled"],di={key:2,class:"mr-recovery-confirm"},ui=["disabled"],mi=e.defineComponent({__name:"TemplateRecoveryPanel",props:{recovery:{},conflict:{},readonly:{type:Boolean},messages:{},canLoad:{type:Boolean},canCopy:{type:Boolean}},setup(t){const o=t,a=e.computed(()=>({...At,...o.messages}));return(r,n)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[t.recovery.available.value?(e.openBlock(),e.createElementBlock("div",qr,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(a.value.available),1),e.createElementVNode("small",null,e.toDisplayString(t.recovery.available.value.savedAt)+" · "+e.toDisplayString(a.value.revision)+" "+e.toDisplayString(t.recovery.available.value.baseline.revision||a.value.unknown),1),t.recovery.stale.value?(e.openBlock(),e.createElementBlock("p",Wr,e.toDisplayString(a.value.stale),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Kr,[e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:n[0]||(n[0]=(...l)=>t.recovery.restore&&t.recovery.restore(...l))},e.toDisplayString(a.value.restore),9,Jr),e.createElementVNode("button",{type:"button",onClick:n[1]||(n[1]=(...l)=>t.recovery.discard&&t.recovery.discard(...l))},e.toDisplayString(a.value.discard),1)])])):e.createCommentVNode("",!0),t.recovery.error.value?(e.openBlock(),e.createElementBlock("div",Yr,[e.createElementVNode("span",null,e.toDisplayString(a.value.storageError)+":"+e.toDisplayString(t.recovery.error.value),1),e.createElementVNode("div",Qr,[e.createElementVNode("button",{type:"button",onClick:n[2]||(n[2]=(...l)=>t.recovery.discard&&t.recovery.discard(...l))},e.toDisplayString(a.value.discard),1)])])):t.recovery.status.value!=="idle"?(e.openBlock(),e.createElementBlock("small",Xr,e.toDisplayString(t.recovery.status.value==="saving"?a.value.saving:a.value.autosaved),1)):e.createCommentVNode("",!0),t.conflict.active.value?(e.openBlock(),e.createElementBlock("details",Zr,[e.createElementVNode("summary",null,e.toDisplayString(a.value.conflict),1),e.createElementVNode("p",null,e.toDisplayString(a.value.conflictHint),1),e.createElementVNode("div",ei,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList([t.conflict.localChanges.value,t.conflict.remoteChanges.value],(l,i)=>(e.openBlock(),e.createElementBlock("section",{key:i},[e.createElementVNode("h4",null,[e.createTextVNode(e.toDisplayString(i?a.value.remote:a.value.local)+" ",1),e.createElementVNode("small",null,e.toDisplayString(l?.totalChanges??"—")+" "+e.toDisplayString(a.value.changes),1)]),l?.changes.length?(e.openBlock(),e.createElementBlock("table",ti,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,e.toDisplayString(a.value.path),1),e.createElementVNode("th",null,e.toDisplayString(a.value.before),1),e.createElementVNode("th",null,e.toDisplayString(a.value.after),1)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.changes,s=>(e.openBlock(),e.createElementBlock("tr",{key:`${s.kind}:${s.path}`},[e.createElementVNode("th",null,e.toDisplayString(s.path),1),e.createElementVNode("td",null,e.toDisplayString(s.before??"—"),1),e.createElementVNode("td",null,e.toDisplayString(s.after??"—"),1)]))),128))])])):(e.openBlock(),e.createElementBlock("p",ni,e.toDisplayString(a.value.empty),1))]))),128))]),t.conflict.error.value?(e.openBlock(),e.createElementBlock("p",ai,e.toDisplayString(t.conflict.error.value),1)):e.createCommentVNode("",!0),t.conflict.copied.value?(e.openBlock(),e.createElementBlock("p",oi,e.toDisplayString(a.value.copied),1)):e.createCommentVNode("",!0),e.createElementVNode("div",li,[t.canLoad?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:t.conflict.busy.value,onClick:n[3]||(n[3]=(...l)=>t.conflict.load&&t.conflict.load(...l))},e.toDisplayString(a.value.loadLatest),9,ri)):e.createCommentVNode("",!0),t.canCopy?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[4]||(n[4]=(...l)=>t.conflict.keepCopy&&t.conflict.keepCopy(...l))},e.toDisplayString(a.value.keepCopy),9,ii)):e.createCommentVNode("",!0),t.conflict.latest.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[5]||(n[5]=(...l)=>t.conflict.adoptLatest&&t.conflict.adoptLatest(...l))},e.toDisplayString(a.value.adopt),9,si)):e.createCommentVNode("",!0),t.conflict.latest.value?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[6]||(n[6]=(...l)=>t.conflict.toggleRebase&&t.conflict.toggleRebase(...l))},e.toDisplayString(a.value.rebase),9,ci)):e.createCommentVNode("",!0)]),t.conflict.confirmRebase.value?(e.openBlock(),e.createElementBlock("div",di,[e.createElementVNode("p",null,e.toDisplayString(a.value.confirmHint),1),e.createElementVNode("button",{type:"button",disabled:t.readonly||t.conflict.busy.value,onClick:n[7]||(n[7]=(...l)=>t.conflict.rebase&&t.conflict.rebase(...l))},e.toDisplayString(a.value.confirm),9,ui)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],64))}}),pi=Y._export_sfc(mi,[["__scopeId","data-v-f02f2a53"]]),fi={class:"mr-header-editor"},vi=["disabled"],gi=["value"],hi=["value"],yi=["value"],bi=["disabled"],ki=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...ue,...a.messages})),l=e.ref(0),i=e.ref(0),s=e.ref(Math.min(1,a.list.columns.length-1));return e.watch(()=>a.list.columns.length,p=>{i.value=Math.min(i.value,p-1),s.value=Math.min(s.value,p-1)}),(p,b)=>(e.openBlock(),e.createElementBlock("details",fi,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(n.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[0]||(b[0]=x=>l.value=x)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,x=>(e.openBlock(),e.createElementBlock("option",{key:x,value:x-1},e.toDisplayString(x),9,gi))),128))],512),[[e.vModelSelect,l.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[1]||(b[1]=x=>i.value=x)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(x,m)=>(e.openBlock(),e.createElementBlock("option",{key:m,value:m},e.toDisplayString(m+1)+" · "+e.toDisplayString(x.header),9,hi))),128))],512),[[e.vModelSelect,i.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[2]||(b[2]=x=>s.value=x)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(x,m)=>(e.openBlock(),e.createElementBlock("option",{key:m,value:m},e.toDisplayString(m+1)+" · "+e.toDisplayString(x.header),9,yi))),128))],512),[[e.vModelSelect,s.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:b[3]||(b[3]=x=>r("command",{action:"add",row:l.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:i.value>=s.value,onClick:b[4]||(b[4]=x=>r("command",{action:"merge",row:l.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.mergeHeader),9,bi),e.createElementVNode("button",{type:"button",onClick:b[5]||(b[5]=x=>r("command",{action:"split",row:l.value,first:i.value,last:s.value}))},e.toDisplayString(n.value.splitHeader),1)])],8,vi)]))}}),Ei=Y._export_sfc(ki,[["__scopeId","data-v-acd607ef"]]);function Si(t,o,a,r){const{lists:n,selected:l,jsonPending:i,saving:s,blocked:p,validation:b,pendingLocalChanges:x,messages:m}=t,{section:h}=a,{mode:M,tool:E,canvasPage:y,setMode:N,chooseCanvas:u,locateReview:S}=o,{id:V}=r,w=e.computed(()=>[...n.value.length?["fields"]:[],"component","template","tools",...r.capabilities?.()?.advanced===!1?[]:["advanced"]]),v=e.ref(new Set(["outline","reuse"])),c=e.computed(()=>h.value==="tools"&&v.value.has(E.value));function f($){c.value?M.value=$:N($)}e.watch([h,E],()=>{c.value&&(M.value="design")});function k(){const $=new Set(v.value);$.has(E.value)?$.delete(E.value):$.add(E.value),v.value=$,$.has(E.value)&&(M.value="design")}function B($){const R=Number($.target.value);Number.isInteger(R)&&R>=0&&z({pageIndex:y.value,componentIndex:R})}function I(){h.value="tools",E.value="excel"}const A=e.computed(()=>{const $=["excel","rules","params"].filter(R=>t.pendingTools.value.includes(R)).map(R=>({target:R,label:m.value[`${R}Tool`]}));return i.value&&$.push({target:"json",label:m.value.json}),$}),U=e.computed(()=>s.value?m.value.saving:r.readonly()?m.value.saveReadonly:p.value?m.value.saveConfirmation:A.value.length?A.value.map($=>`${$.label} · ${m.value.unapplied}`).join(";"):b.value.ok?x.value?"":m.value.saveUnchanged:m.value.saveInvalid);async function Q($){$==="json"?h.value="advanced":(h.value="tools",E.value=$),await e.nextTick();const R=$==="json"?`#${V}-panel-advanced textarea`:`#${V}-tool-${$}`;document.querySelector(R)?.focus({preventScroll:!0})}const d=e.computed(()=>s.value?m.value.saving:r.readonly()?m.value.readonly:x.value?m.value.dirty:m.value.ready);let F=0;async function z($){const R=++F,G=h.value==="tools",j=n.value.findIndex(K=>K.pageIndex===$.pageIndex&&K.componentIndex===$.componentIndex);j>=0&&j!==l.value&&t.isToolPending("rules")&&!await t.guardChanges()||R===F&&(u($),G&&(h.value="tools"))}async function T($){const R=++F,G=h.value==="tools"&&E.value==="outline",j=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec($.path??""),K=$.pageIndex??(j?Number(j[1]):void 0),oe=$.componentIndex??(j?Number(j[2]):void 0),ee=n.value.findIndex(ae=>ae.pageIndex===K&&ae.componentIndex===oe);ee>=0&&ee!==l.value&&t.isToolPending("rules")&&!await t.guardChanges()||R===F&&(S($),G&&(h.value="tools"))}async function _($){const R=++F,G=$.target,j=Number(G.value);if(t.isToolPending("rules")&&!await t.guardChanges()){G.value=String(l.value);return}R===F&&(l.value=j)}async function D($){if($.isComposing||$.keyCode===229)return;const G={ArrowRight:1,ArrowLeft:-1,Home:-w.value.length,End:w.value.length}[$.key];if(G===void 0)return;$.preventDefault();const j=w.value.indexOf(h.value),K=$.key==="Home"?0:$.key==="End"?w.value.length-1:(j+G+w.value.length)%w.value.length;h.value=w.value[K];const oe=$.currentTarget.parentElement;await e.nextTick(),oe?.querySelector(`#${V}-tab-${h.value}`)?.focus()}return{sections:w,toolPreview:c,setMode:f,toggleToolPreview:k,chooseToolComponent:B,openBinding:I,pendingConfigurations:A,saveReason:U,openPending:Q,headingStatus:d,chooseCanvas:z,locateReview:T,chooseRuleList:_,navigateSection:D}}const he=t=>`${t.pageIndex}:${t.componentIndex}`;function Ni(t,o,a){const r=e.ref([]),n=e.ref(new Set);e.watch(()=>t.value.id,()=>{r.value=[],n.value=new Set});const l=h=>!!h&&n.value.has(he(h));function i(h){const M={pageIndex:h.pageIndex,componentIndex:h.componentIndex};if(h.additive&&r.value.every(E=>E.pageIndex===h.pageIndex)){const E=r.value.some(y=>he(y)===he(h));r.value=E?r.value.filter(y=>he(y)!==he(h)):[...r.value,M],o.value=E?r.value.at(-1):M}else r.value=[M],o.value=M}const s=e.computed(()=>r.value.filter(h=>!l(h)));function p(){const h=new Set(n.value),M=r.value.every(l);for(const E of r.value)M?h.delete(he(E)):h.add(he(E));n.value=h}function b(h){s.value.length<2||a(M=>{const E=s.value.map(w=>Ve(M,w)).filter(Boolean),y=E.map(re),N=Math.min(...y.map(w=>w.leftMm)),u=Math.min(...y.map(w=>w.topMm)),S=Math.max(...y.map(w=>w.leftMm+w.widthMm)),V=Math.max(...y.map(w=>w.topMm+w.heightMm));E.forEach((w,v)=>{const c=y[v],f={left:N,center:(N+S-c.widthMm)/2,right:S-c.widthMm},k={top:u,middle:(u+V-c.heightMm)/2,bottom:V-c.heightMm};h in f?c.leftMm=f[h]:c.topMm=k[h],ye(w,c)})})}function x(h){s.value.length<3||a(M=>{const E=h==="horizontal"?"leftMm":"topMm",y=h==="horizontal"?"widthMm":"heightMm",N=s.value.map(v=>({component:Ve(M,v),box:re(Ve(M,v))})).sort((v,c)=>v.box[E]-c.box[E]),u=N[0].box[E],V=(Math.max(...N.map(v=>v.box[E]+v.box[y]))-u-N.reduce((v,c)=>v+c.box[y],0))/(N.length-1);let w=u;for(const v of N)v.box[E]=w,ye(v.component,v.box),w+=v.box[y]+V})}function m(h,M,E){function y(N){if(N.pageIndex!==h)return N;const u=N.componentIndex;return E===void 0?u===M?void 0:{...N,componentIndex:u>M?u-1:u}:{...N,componentIndex:u===M?E:u===E?M:u}}n.value=new Set([...n.value].flatMap(N=>{const[u,S]=N.split(":").map(Number),V=y({pageIndex:u,componentIndex:S});return V?[he(V)]:[]})),r.value=r.value.flatMap(N=>{const u=y(N);return u?[u]:[]})}return{clearLocks:()=>{n.value=new Set},selections:r,locked:l,allLocked:e.computed(()=>!!r.value.length&&r.value.every(l)),toggleLock:p,align:b,distribute:x,select:i,remap:m}}const Ce=2;function wi(t,o){return t.leftMm<o.leftMm+o.widthMm+Ce&&t.leftMm+t.widthMm+Ce>o.leftMm&&t.topMm<o.topMm+o.heightMm+Ce&&t.topMm+t.heightMm+Ce>o.topMm}function Vi(t){return{left:t.marginLeftMm??2,top:t.marginTopMm??2,right:t.widthMm-(t.marginRightMm??2),bottom:t.heightMm-(t.marginBottomMm??2)}}function Ci(t,o,a){const r=t.template.pages[o],n=Vi(r),l=re(a);l.widthMm=Math.min(l.widthMm,Math.max(2,n.right-n.left)),l.heightMm=Math.min(l.heightMm,Math.max(2,n.bottom-n.top)),a.kind==="qrcode"&&(l.widthMm=l.heightMm=Math.min(l.widthMm,l.heightMm));const i=r.components.some(m=>m.kind==="list"),s=r.components.map(m=>m.kind==="list"?{leftMm:n.left,topMm:m.topMm,widthMm:n.right-n.left,heightMm:Math.max(0,n.bottom-m.topMm)}:re(m)),p=[{leftMm:n.left,topMm:n.top}];for(const m of s.slice(0,250))p.push({leftMm:m.leftMm+m.widthMm+Ce,topMm:m.topMm}),p.push({leftMm:n.left,topMm:m.topMm+m.heightMm+Ce});p.sort((m,h)=>m.topMm-h.topMm||m.leftMm-h.leftMm);const b=p.find(m=>{const h={...l,...m};return h.leftMm>=n.left&&h.topMm>=n.top&&h.leftMm+h.widthMm<=n.right&&h.topMm+h.heightMm<=n.bottom&&!s.some(M=>wi(h,M))});if(b)return ye(a,{...l,...b}),r.components.push(a),{pageIndex:o,newPage:!1};if(r.layout==="wide"&&!i){const m=Math.max(n.top,...s.map(h=>h.topMm+h.heightMm+Ce));return r.heightMm=Math.max(r.heightMm,m+l.heightMm+(r.marginBottomMm??2)),ye(a,{...l,leftMm:n.left,topMm:m}),r.components.push(a),{pageIndex:o,newPage:!1}}const x={...r,components:[]};return x.meta&&(x.meta={...x.meta},delete x.meta.title),ye(a,Le({...l,leftMm:n.left,topMm:n.top},x,a.kind==="list")),x.components.push(a),t.template.pages.push(x),{pageIndex:t.template.pages.length-1,newPage:!0}}function xi(t,o,a={}){const r=e.ref("preview"),n=e.computed({get:()=>a.mode?.()??r.value,set:w=>{a.mode?.()===void 0&&(r.value=w),a.onModeChange?.(w)}}),l=e.ref(),i=e.ref(0),s=e.computed(()=>!!t.value.template.pages[l.value?.pageIndex??i.value]?.flow),p=Ni(t,l,w=>s.value?!1:o(w)),b=e.computed(()=>Ve(t.value,l.value));e.watch(i,w=>{l.value?.pageIndex!==w&&(l.value=void 0,p.selections.value=[])}),e.watch(t,()=>{b.value||(l.value=void 0),p.selections.value=p.selections.value.filter(w=>!!Ve(t.value,w)),t.value.template.pages[i.value]||(i.value=0)});function x(w){p.select(w),i.value=w.pageIndex}function m(w){const v=l.value;return!v||p.locked(v)?!1:o(c=>{const f=Ve(c,v);f&&w(f,c)})}function h(w){s.value||m((v,c)=>{const f=c.template.pages[l.value.pageIndex];ye(v,Le(w,f,v.kind==="list"))})}const M=e.ref(!1);function E(w){y(it(w))}function y(w){if(t.value.template.pages[i.value]?.flow||w.kind==="list"&&t.value.template.repeat)return!1;let v=i.value,c=-1,f=!1;const k=o(B=>{const I=JSON.parse(JSON.stringify(w)),A=Ci(B,v,I);v=A.pageIndex,f=A.newPage,c=B.template.pages[v].components.length-1});return k&&(M.value=f,x({pageIndex:v,componentIndex:c})),k}function N(w){if(t.value.template.pages[i.value]?.flow||w.kind==="list"&&t.value.template.repeat)return!1;let v=-1;const c=i.value,f=o(k=>{const B=k.template.pages[c].components;B.push(w),v=B.length-1;const I=P.parseReportTemplate(k).template.pages[c].components[v];ye(I,Le(re(I),k.template.pages[c],I.kind==="list")),I.kind==="qrcode"&&(I.widthMm=I.heightMm=Math.min(I.widthMm,I.heightMm)),B[v]=I});return f&&x({pageIndex:c,componentIndex:v}),f}function u(){if(s.value)return;const w=l.value;w&&!p.locked(w)&&o(v=>{v.template.pages[w.pageIndex].components.splice(w.componentIndex,1)})&&(p.remap(w.pageIndex,w.componentIndex),l.value=void 0)}function S(){if(s.value)return;const w=l.value;if(!w)return;let v=-1;o(c=>{const f=c.template.pages[w.pageIndex],k=JSON.parse(JSON.stringify(Ve(c,w))),B=re(k);B.leftMm+=4,B.topMm+=4,ye(k,Le(B,f,k.kind==="list")),k.kind==="list"?delete k.id:(delete k.nid,delete k.rkey),f.components.push(k),v=f.components.length-1})&&x({pageIndex:w.pageIndex,componentIndex:v})}function V(w){if(s.value)return;const v=l.value;if(!v||p.locked(v))return;const c=v.componentIndex+w;t.value.template.pages[v.pageIndex]?.components[c]&&o(f=>{const k=f.template.pages[v.pageIndex].components;k.splice(c,0,k.splice(v.componentIndex,1)[0])})&&(p.remap(v.pageIndex,v.componentIndex,c),x({pageIndex:v.pageIndex,componentIndex:c}))}return{...p,mode:n,selection:l,pageIndex:i,active:b,geometryDisabled:s,select:x,mutate:m,geometry:h,insert:E,insertPlaced:y,insertedOnNewPage:M,insertComponent:N,remove:u,duplicate:S,reorder:V}}function Mi(t,o,a,r={}){const{draft:n,lists:l,selected:i,activeList:s,blocked:p,jsonPending:b,error:x}=t,{section:m,activeIndex:h}=o,M=xi(n,t.transaction,r),{mode:E,selection:y,pageIndex:N,active:u}=M;t.connectHistoryView({read:()=>({pageIndex:N.value,componentIndex:y.value?.pageIndex===N.value?y.value.componentIndex:void 0,listIndex:i.value,fieldIndex:h.value,section:m.value}),restore:d=>{N.value=Math.max(0,Math.min(n.value.template.pages.length-1,d.pageIndex)),M.selection.value=void 0,M.selections.value=[],d.componentIndex!==void 0&&n.value.template.pages[N.value]?.components[d.componentIndex]&&M.select({pageIndex:N.value,componentIndex:d.componentIndex}),d.listIndex!==void 0&&l.value[d.listIndex]&&(i.value=d.listIndex),d.fieldIndex!==void 0&&o.activate(d.fieldIndex),d.section&&(m.value=d.section)}}),e.watch(t.historyViewRevision,()=>t.captureHistoryView(),{flush:"post"});const S=e.ref("excel"),V=e.ref(new Set);e.watch([m,S],()=>{m.value==="tools"&&(V.value=new Set([...V.value,S.value]))}),e.watch(y,d=>{if(!d)return;const F=l.value.findIndex(z=>z.pageIndex===d.pageIndex&&z.componentIndex===d.componentIndex);F>=0&&(i.value=F)}),e.watch([h,i,E,m],()=>{if(E.value!=="design"||m.value!=="fields")return;const d=l.value[i.value];d&&(y.value?.pageIndex!==d.pageIndex||y.value.componentIndex!==d.componentIndex)&&M.select({pageIndex:d.pageIndex,componentIndex:d.componentIndex})});const w=e.computed(()=>t.editingReadonly.value||p.value||b.value),v=e.computed(()=>a()?.[s.value?.dataset??""]);function c(d){E.value=d,m.value==="tools"&&(m.value=d==="design"||!l.value.length?"component":"fields")}function f(d){if(!n.value.template.pages[d.pageIndex]?.components[d.componentIndex])return;if(M.select(d),n.value.template.pages[d.pageIndex]?.components[d.componentIndex]?.kind==="list"){const z=l.value.findIndex(T=>T.pageIndex===d.pageIndex&&T.componentIndex===d.componentIndex);z>=0&&(i.value=z),m.value="fields"}else m.value="component"}function k(d){const F=d.target;F.value&&(M.insert(F.value),E.value="design",m.value="component",F.value="")}function B(d){n.value.template.pages[N.value]?.flow&&["leftMm","topMm","widthMm","heightMm","pageAnchor","grid"].some(F=>F in d)||M.mutate((F,z)=>{if(F.kind!=="list"&&d.pageAnchor!==F.pageAnchor){const _=z.template.pages[y.value.pageIndex];d.pageAnchor==="header"&&(F.topMm=_.marginTopMm??0),d.pageAnchor==="footer"&&(F.topMm=Math.max(0,_.heightMm-(_.marginBottomMm??0)-F.heightMm))}const T=F;for(const[_,D]of Object.entries(d))D===void 0?delete T[_]:T[_]=D})}function I(d){const F=l.value[i.value];F&&t.transaction(z=>{z.template.pages[F.pageIndex].components[F.componentIndex]=d})}function A(d){const F=s.value;if(!F||n.value.template.pages[l.value[i.value]?.pageIndex??-1]?.flow)return;const z=JSON.parse(JSON.stringify(F));try{On(z,h.value,h.value+d)&&(I(z),o.activate(h.value+d))}catch(T){x.value=T instanceof Error?T.message:String(T)}}function U(d){const F=l.value[i.value];!F||n.value.template.pages[F.pageIndex]?.flow||t.transaction(z=>{const T=z.template.pages[F.pageIndex].components[F.componentIndex];T?.kind==="list"&&(d.action==="add"?Gn(T):d.action==="merge"?zn(T,d.row,d.first,d.last):Un(T,d.row,d.first))})}function Q(d){const F=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(d.path??""),z=d.pageIndex??(F?Number(F[1]):void 0),T=d.componentIndex??(F?Number(F[2]):void 0);if(z!==void 0){if(T===void 0){N.value=z,m.value="template",E.value="design";return}if(E.value="design",f({pageIndex:z,componentIndex:T}),d.field){const _=s.value?.columns.findIndex(D=>D.field===d.field);_!==void 0&&_>=0&&o.activate(_)}}}return{mode:E,setMode:c,canvasSelection:y,canvasPage:N,canvasActive:u,tool:S,visitedTools:V,editDisabled:w,dataSchema:v,chooseCanvas:f,insertComponent:k,patchCanvas:B,changeList:I,moveColumn:A,headerCommand:U,locateReview:Q,canvas:M}}const Pt={title:"数据可视化",enabled:"启用列可视化",kind:"呈现方式",colorScale:"色阶",dataBar:"数据条",measure:"度量字段",ownField:"当前列",numeric:"度量类型",number:"真实数字",decimal:"小数文本(显式转换)",autoDomain:"自动统计范围",minimum:"最小值",maximum:"最大值",lowColor:"低值颜色",highColor:"高值颜色",color:"正值颜色",negativeColor:"负值颜色",invalid:"请检查范围与颜色;最小值不能大于最大值。",hint:"保留原始数据与编辑能力。空值不绘制,零值按真实零处理;统计范围来自当前明细。",snapshot:"Excel 数据条为静态视觉快照,修改 Excel 后不会重算。"},Bi={class:"mr-column-visual-disclosure"},Di={key:0,class:"mr-column-visual-badge"},$i={class:"mr-column-visual"},Ti={class:"mr-column-visual__toggle"},_i=["disabled"],Ii={key:0,class:"mr-column-visual__grid"},Ri=["disabled"],Li={value:"colorScale"},Ai={value:"dataBar"},Pi=["disabled"],Fi={value:""},Hi=["value"],Oi=["disabled"],Gi={value:"number"},zi={value:"decimal"},Ui=["placeholder","disabled","aria-invalid"],ji=["placeholder","disabled","aria-invalid"],qi=["disabled"],Wi=["disabled"],Ki=["disabled"],Ji=["disabled"],Yi={key:1,role:"status",class:"is-error"},Qi={key:2},Xi={key:0},Zi=e.defineComponent({__name:"ColumnVisualEditor",props:{modelValue:{},fields:{},readonly:{type:Boolean},messages:{}},emits:["update:modelValue"],setup(t,{emit:o}){const a=t,r=o,n=e.computed(()=>({...Pt,...a.messages})),l=e.ref(!!a.modelValue),i=e.ref("colorScale"),s=e.ref(""),p=e.ref("number"),b=e.ref(""),x=e.ref(""),m=e.ref("#bad8fa"),h=e.ref("#f3bcc3"),M=e.ref("#f0f7ff"),E=e.ref("#8bbcf1");let y="";function N(){const V=a.modelValue;l.value=!!V,i.value=V?.kind??"colorScale",s.value=V?.field??"",p.value=V?.numeric??"number",b.value=V?.min===void 0?"":String(V.min),x.value=V?.max===void 0?"":String(V.max),V?.kind==="colorScale"&&(M.value=V.lowColor??"#f0f7ff",E.value=V.highColor??"#8bbcf1"),V?.kind==="dataBar"&&(m.value=V.color??"#bad8fa",h.value=V.negativeColor??"#f3bcc3")}N();const u=e.computed(()=>({...s.value?{field:s.value}:{},numeric:p.value,...b.value===""?{}:{min:Number(b.value)},...x.value===""?{}:{max:Number(x.value)},...i.value==="colorScale"?{kind:"colorScale",lowColor:M.value,highColor:E.value}:{kind:"dataBar",color:m.value,negativeColor:h.value}})),S=e.computed(()=>l.value&&!$t.validColumnVisual(u.value));return e.watch(()=>JSON.stringify(a.modelValue),V=>{V!==y&&N()}),e.watch([l,u],()=>{if(a.readonly)return;const V=l.value?u.value:void 0;y=JSON.stringify(V),r("update:modelValue",V)},{flush:"post"}),(V,w)=>(e.openBlock(),e.createElementBlock("details",Bi,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.title),1),l.value?(e.openBlock(),e.createElementBlock("span",Di,e.toDisplayString(i.value==="colorScale"?n.value.colorScale:n.value.dataBar),1)):e.createCommentVNode("",!0)]),e.createElementVNode("fieldset",$i,[e.createElementVNode("legend",null,e.toDisplayString(n.value.title),1),e.createElementVNode("label",Ti,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[0]||(w[0]=v=>l.value=v),type:"checkbox",disabled:t.readonly},null,8,_i),[[e.vModelCheckbox,l.value]]),e.createTextVNode(e.toDisplayString(n.value.enabled),1)]),l.value?(e.openBlock(),e.createElementBlock("div",Ii,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.kind),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[1]||(w[1]=v=>i.value=v),disabled:t.readonly},[e.createElementVNode("option",Li,e.toDisplayString(n.value.colorScale),1),e.createElementVNode("option",Ai,e.toDisplayString(n.value.dataBar),1)],8,Ri),[[e.vModelSelect,i.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.measure),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[2]||(w[2]=v=>s.value=v),disabled:t.readonly},[e.createElementVNode("option",Fi,e.toDisplayString(n.value.ownField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields??[],v=>(e.openBlock(),e.createElementBlock("option",{key:v.field,value:v.field},e.toDisplayString(v.label??v.field),9,Hi))),128))],8,Pi),[[e.vModelSelect,s.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.numeric),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[3]||(w[3]=v=>p.value=v),disabled:t.readonly},[e.createElementVNode("option",Gi,e.toDisplayString(n.value.number),1),e.createElementVNode("option",zi,e.toDisplayString(n.value.decimal),1)],8,Oi),[[e.vModelSelect,p.value]])]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["min","max"],v=>e.createElementVNode("label",{key:v},[e.createTextVNode(e.toDisplayString(v==="min"?n.value.minimum:n.value.maximum),1),v==="min"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":w[4]||(w[4]=c=>b.value=c),type:"number",step:"any",placeholder:n.value.autoDomain,disabled:t.readonly,"aria-invalid":S.value||void 0},null,8,Ui)),[[e.vModelText,b.value]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":w[5]||(w[5]=c=>x.value=c),type:"number",step:"any",placeholder:n.value.autoDomain,disabled:t.readonly,"aria-invalid":S.value||void 0},null,8,ji)),[[e.vModelText,x.value]])])),64)),i.value==="colorScale"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.lowColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[6]||(w[6]=v=>M.value=v),type:"color",disabled:t.readonly},null,8,qi),[[e.vModelText,M.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.highColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[7]||(w[7]=v=>E.value=v),type:"color",disabled:t.readonly},null,8,Wi),[[e.vModelText,E.value]])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.color),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[8]||(w[8]=v=>m.value=v),type:"color",disabled:t.readonly},null,8,Ki),[[e.vModelText,m.value]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.negativeColor),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[9]||(w[9]=v=>h.value=v),type:"color",disabled:t.readonly},null,8,Ji),[[e.vModelText,h.value]])])],64))])):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("small",Yi,e.toDisplayString(n.value.invalid),1)):l.value?(e.openBlock(),e.createElementBlock("p",Qi,[e.createTextVNode(e.toDisplayString(n.value.hint),1),i.value==="dataBar"?(e.openBlock(),e.createElementBlock("span",Xi,e.toDisplayString(n.value.snapshot),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),Ft=Y._export_sfc(Zi,[["__scopeId","data-v-23b874d6"]]);function es(t,o,a){if(!t.length)return;const r=Math.max(0,t.indexOf(o)),l={ArrowDown:Math.min(r+1,t.length-1),ArrowUp:Math.max(r-1,0),Home:0,End:t.length-1}[a];return l===void 0?void 0:t[l]}function ts(t,o,a){const r=e.ref(!1),n=e.ref(t.activeIndex.value),l=e.ref(null),i=e.ref(null),s=e.ref(null),p=e.ref(null),b=e.ref(0),x=100,m=e.computed(()=>a.value.slice(b.value,b.value+x));function h(){const f=Math.max(0,a.value.findIndex(k=>k.index===n.value));b.value=Math.floor(f/x)*x}async function M(f){const k=Math.max(0,Math.min(Math.max(0,a.value.length-1),b.value+f*x));n.value=a.value[k]?.index??-1,h(),await e.nextTick(),E(!0)}function E(f=!1){const k=p.value,B=k?.querySelector(`button[data-column-index="${n.value}"]`);if(!k||!B)return;f&&B.focus({preventScroll:!0});const I=k.getBoundingClientRect(),A=B.getBoundingClientRect(),U=I.top+k.clientTop,Q=U+k.clientHeight;A.top<U?k.scrollTop+=A.top-U:A.bottom>Q&&(k.scrollTop+=A.bottom-Q)}async function y(f=!1){r.value&&(r.value=!1,f&&(await e.nextTick(),l.value?.focus({preventScroll:!0})))}async function N(){if(r.value)return y(!0);const f=a.value.map(k=>k.index);n.value=f.includes(t.activeIndex.value)?t.activeIndex.value:f[0]??-1,r.value=!0,h(),await e.nextTick(),s.value?.focus({preventScroll:!0}),E()}function u(f){t.activate(f),y(!0)}function S(f){!r.value||f.isComposing||f.keyCode===229||(f.preventDefault(),f.stopPropagation(),y(!0))}async function V(f){if(f.isComposing||f.keyCode===229)return;const k=es(a.value.map(B=>B.index),n.value,f.key);k!==void 0&&(n.value=k,h(),f.preventDefault(),await e.nextTick(),E(!0))}async function w(f){if(f.isComposing||f.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(f.key))return;f.preventDefault(),f.stopPropagation();const k=a.value.map(B=>B.index);if(k.length){if(f.key==="Enter"){k.includes(n.value)&&u(n.value);return}f.key==="ArrowUp"&&(n.value=k.at(-1)),h(),await e.nextTick(),E(!0)}}function v(f){const k=f.target;!r.value||i.value?.contains(k)||l.value?.contains(k)||y()}function c(f){const k=f.relatedTarget;!k||i.value?.contains(k)||l.value?.contains(k)||y()}return e.watch(a,f=>{f.some(k=>k.index===n.value)||(n.value=f[0]?.index??-1),h()}),e.watch(o,()=>{y()}),e.onMounted(()=>document.addEventListener("pointerdown",v)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",v)),{open:r,cursor:n,trigger:l,panel:i,search:s,list:p,windowColumns:m,windowStart:b,windowSize:x,stepWindow:M,toggle:N,close:y,choose:u,escape:S,navigate:V,searchKeydown:w,leave:c}}const Ht=Symbol("mach-report:tool-drafts");function ns(t,o){const a=e.ref({}),r=e.ref(0),n={epoch:r,read:i=>a.value[i],write(i,s){const p=a.value[i];if(p?.baseline===s?.baseline&&p?.value===s?.value)return;const b={...a.value};s?b[i]=s:delete b[i],a.value=b;const x=i.split(":")[0];t(x,Object.keys(b).some(m=>m.split(":")[0]===x)),o?.()}};e.provide(Ht,n);function l(i){a.value=JSON.parse(JSON.stringify(i));for(const s of["params","rules","excel"])t(s,Object.keys(i).some(p=>p.split(":")[0]===s));r.value++}return{records:a,restore:l,clear:()=>l({})}}function as(t){const o=e.inject(Ht,void 0);if(!o)return;let a=!1,r={key:t.key(),baseline:t.baseline(),value:t.snapshot()};const n=(i,s)=>{const p=o.read(t.key());if(!p&&(!s||i[1]===s[1]))return;const b=p??(r.key===i[0]?r:void 0);if(!(!b&&!t.reset)){a=!0;try{!p&&t.reset?t.reset():b&&t.restore(b.value,b.baseline,{pending:!!p})}finally{a=!1}}};e.watch(()=>[t.key(),o.epoch.value],n,{immediate:!0,flush:"post"});const l=e.watch([t.pending,t.snapshot],()=>{a||(t.pending()||(r={key:t.key(),baseline:t.baseline(),value:t.snapshot()}),o.write(t.key(),t.pending()?{baseline:t.baseline(),value:t.snapshot()}:void 0))},{flush:"post"});e.onBeforeUnmount(l)}const ct=new WeakMap;function os(t,o,a){let r=ct.get(t);r||(r=new Map,ct.set(t,r));const n=r.get(o);let l,i;const s=new Promise((M,E)=>{l=M,i=E}),p={run:a,resolve:l,reject:i};if(n)return n.latest?.resolve(),n.latest=p,s;let b;const x={done:new Promise(M=>{b=M}),finish:()=>b()};r.set(o,x);const m=()=>{const M=x.latest;x.latest=void 0,M?h(M):(r.delete(o),x.finish())},h=M=>{let E;try{E=M.run()}catch(y){M.reject(y),m();return}Promise.resolve(E).then(M.resolve,M.reject).then(m)};return h(p),s}async function ls(t,o){await ct.get(t)?.get(o)?.done}function te(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function be(t,o){return o.every(a=>typeof t[a]=="string")}function se(t){return Array.isArray(t)&&t.length<=1e4}function Ot(t,o=0){return!te(t)||o>16?!1:"op"in t?typeof t.op=="string"&&se(t.args)&&t.args.every(a=>Ot(a,o+1)):"field"in t?typeof t.field=="string":"aggregate"in t?typeof t.aggregate=="string":"value"in t&&(t.value===null||["string","number","boolean"].includes(typeof t.value))}function Vt(t){return te(t)&&typeof t.field=="string"&&Ot(t.expression)}function Pe(t){return se(t)&&t.every(o=>typeof o=="string")}function rs(t){return te(t)&&Pe(t.rowFields)&&Pe(t.columnFields)&&se(t.measures)&&t.measures.every(o=>te(o)&&typeof o.op=="string")}function Ct(t){return te(t)&&be(t,["sheet","dataset","rowKey"])&&Pe(t.fields)&&te(t.regions)}function xt(t){return te(t)&&typeof t.sheet=="string"&&se(t.regions)&&t.regions.every(o=>te(o)&&be(o,["id","range","dataset","mode","rowKey"])&&Pe(o.fields))}function Mt(t,o){return se(t)&&t.every(a=>Array.isArray(a)&&a.length===2&&typeof a[0]=="string"&&o(a[1]))}function is(t){return typeof t.initial=="string"&&Number.isSafeInteger(t.selected)&&se(t.rows)&&t.rows.every(ss)}function ss(t){return te(t)&&be(t,["field","label","type","placeholder","defaultValue","min","max","minLength","maxLength"])&&typeof t.required=="boolean"&&typeof t.defaultEnabled=="boolean"&&(t.optionsMode===void 0||t.optionsMode==="static"||t.optionsMode==="remote")&&(t.optionsSource===void 0||typeof t.optionsSource=="string")&&(t.dependsOn===void 0||Pe(t.dependsOn))&&se(t.options)&&t.options.every(o=>te(o)&&be(o,["label","value"]))}function cs(t){return Vt(t.formula)&&se(t.groups)&&t.groups.every(o=>te(o)&&typeof o.field=="string")&&te(t.when)&&te(t.style)&&be(t,["selectedComputed","column","conditionKey","effect","tab","formulaBaseline","groupBaseline","conditionBaseline"])&&Number.isSafeInteger(t.conditionIndex)&&Mt(t.computedDrafts,Vt)&&Mt(t.conditionDrafts,o=>te(o)&&te(o.when)&&te(o.style))}function ds(t){return typeof t.enabled=="boolean"&&typeof t.baseline=="string"&&te(t.detail)&&be(t.detail,["dataset","parentKey","foreignKey"])&&se(t.detail.columns)&&t.detail.columns.every(o=>te(o)&&be(o,["field","header"]))&&rs(t.matrix)&&te(t.tree)&&typeof t.tree.input=="string"}function us(t){return Ct(t.recipe)&&xt(t.regions)&&te(t.identity)&&be(t.identity,["id","name"])&&te(t.cached)&&se(t.cached.table)&&t.cached.table.every(Ct)&&se(t.cached.regions)&&t.cached.regions.every(xt)&&(t.mode==="table"||t.mode==="regions")}function ms(t,o,a){const r=JSON.parse(o);if(!te(r))throw new Error("Invalid stored tool draft");const n=t==="params"?is(r):t==="excel"?us(r):t.split(":").length>3?ds(r):cs(r);if(t==="params"){const l=JSON.parse(a);if(!se(l)||!l.every(i=>te(i)&&typeof i.field=="string"))throw new Error("Invalid stored parameter baseline")}if(!n)throw new Error(`Invalid stored ${t.split(":")[0]} draft`)}function ps(t){return{read:o=>t.getItem(o),write:(o,a)=>t.setItem(o,a),remove:o=>t.removeItem(o)}}function fs(t,o){if(!t.trim()||t.length>1024||o.length>1024)throw new Error("Draft scope and template identity must be bounded and non-empty");return`mach-report:draft:1:${JSON.stringify([t,o])}`}function vs(t){const o=t.maxBytes??2097152,a=t.debounceMs??400;if(!Number.isSafeInteger(o)||o<1024||o>16*1024*1024)throw new RangeError("Draft maxBytes must be between 1024 and 16777216");if(!Number.isSafeInteger(a)||a<0||a>1e4)throw new RangeError("Draft debounceMs must be between 0 and 10000");return{maxBytes:o,debounceMs:a}}function Bt(t,o,a){if(t.length*2>a)throw new Error("Draft exceeds storage budget");const r=JSON.parse(t);if(r.version!==1||r.templateId!==o||typeof r.savedAt!="string"||!Number.isFinite(Date.parse(r.savedAt)))throw new Error("Invalid draft identity or version");for(const n of["json","appliedJson"])if(typeof r[n]!="string")throw new Error("Invalid draft JSON input");if(r.baseline=P.parseReportTemplate(r.baseline),r.document=P.parseReportTemplate(r.document),r.baseline.id!==o||r.document.id!==o||r.baseline.revision!==r.document.revision)throw new Error("Invalid draft baseline");if(!r.tools||typeof r.tools!="object"||Array.isArray(r.tools)||Object.keys(r.tools).length>100)throw new Error("Invalid tool drafts");for(const[n,l]of Object.entries(r.tools)){if(!/^(params|excel|rules:[0-9]+:[0-9]+(?::(?:detail|matrix|tree))?)$/.test(n)||!l||typeof l.baseline!="string"||typeof l.value!="string")throw new Error("Invalid tool draft");ms(n,l.value,l.baseline)}return r}function gs(t){const o=e.ref(!1),a=e.shallowRef(),r=e.ref(""),n=e.ref("idle"),l=e.computed(()=>!!a.value&&P.serializeReportTemplate(a.value.baseline)!==t.baseline());let i,s=0,p=!1,b=!1,x=new AbortController,m=new AbortController,h=Promise.resolve(),M;function E(){clearTimeout(i),i=void 0,s++,x.abort(),m.abort(),x=new AbortController,m=new AbortController}function y(c,f){!p&&f===s&&(r.value=c instanceof Error?c.message:String(c))}async function N(){E();const c=s;o.value=!0,b=!1,a.value=void 0,r.value="",n.value="idle",M=void 0;try{const f=t.storage();if(!f)return;const k=t.id();if(M={storage:f,key:fs(f.scope,k),...vs(f)},await ls(f.adapter,M.key),c!==s||p)return;const B=await f.adapter.read(M.key,{signal:m.signal});if(c!==s||p||B===null)return;a.value=Bt(B,k,M.maxBytes)}catch(f){c===s&&(b=!0),y(f,c)}finally{c===s&&!p&&(o.value=!1)}}function u(c){const f=M;if(!f)return;const k=s,B=x.signal;n.value="saving";const I=async()=>{B.aborted||(c===null?await f.storage.adapter.remove(f.key,{signal:B}):await f.storage.adapter.write(f.key,c,{signal:B}),!p&&k===s&&(n.value=c===null?"idle":"saved",r.value=""))};h=os(f.storage.adapter,f.key,I).catch(A=>y(A,k))}function S(){if(clearTimeout(i),i=void 0,!(!M||a.value))try{if(!t.pending()){b||u(null);return}const c=JSON.stringify(t.snapshot());Bt(c,t.id(),M.maxBytes),u(c)}catch(c){y(c,s)}}function V(){clearTimeout(i),!(!M||a.value)&&(i=setTimeout(S,M.debounceMs))}async function w(){a.value=void 0,b=!1,u(null),await h,V()}function v(){if(a.value)try{t.restore(a.value),a.value=void 0,V()}catch(c){y(c,s)}}return e.watch([t.id,()=>t.storage()?.scope,()=>t.storage()?.adapter,()=>t.storage()?.maxBytes,()=>t.storage()?.debounceMs],()=>{N()},{immediate:!0}),e.watch([t.pending,t.changedSource],V,{deep:!0}),e.onMounted(()=>{globalThis.addEventListener?.("pagehide",S)}),e.onBeforeUnmount(()=>{globalThis.removeEventListener?.("pagehide",S),S(),p=!0,m.abort(),clearTimeout(i)}),{available:a,stale:l,error:r,status:n,checking:o,restore:v,discard:w,flush:S}}function hs(t){const o=e.ref(!1),a=e.shallowRef(),r=e.ref(!1),n=e.ref(""),l=e.ref(!1),i=e.ref(!1);let s=0,p;const b=e.computed(()=>P.diffReportTemplates(t.baseline(),t.local(),{maxChanges:100})),x=e.computed(()=>a.value?P.diffReportTemplates(t.baseline(),a.value,{maxChanges:100}):void 0);function m(){s++,p?.abort(),p=void 0,r.value=!1}function h(){m(),o.value=!1,a.value=void 0,n.value="",l.value=!1,i.value=!1}async function M(){const S=t.configuration().loadLatest;if(!S||r.value)return;m();const V=s,w=t.local().id;p=new AbortController,r.value=!0,n.value="";try{const v=P.parseReportTemplate(await S({id:w,signal:p.signal}));if(V!==s)return;if(v.id!==w)throw new Error("Latest template identity does not match");a.value=v}catch(v){V===s&&(n.value=v instanceof Error?v.message:String(v))}finally{V===s&&(r.value=!1)}}function E(S){h(),o.value=!0,S?a.value=P.parseReportTemplate(S):M()}async function y(){!a.value||r.value||await t.applyLatest(P.parseReportTemplate(a.value))&&h()}function N(){if(!(!a.value||r.value||!l.value))try{t.rebase(P.parseReportTemplate(a.value)),h()}catch(S){n.value=S instanceof Error?S.message:String(S)}}async function u(){const S=t.configuration().keepCopy;if(!S||r.value)return;m();const V=s,w=P.parseReportTemplate(t.local());p=new AbortController,r.value=!0,n.value="";try{await S(w,{id:w.id,sourceRevision:w.revision,signal:p.signal}),V===s&&(i.value=!0)}catch(v){V===s&&(n.value=v instanceof Error?v.message:String(v))}finally{V===s&&(r.value=!1)}}return e.onBeforeUnmount(m),{active:o,latest:a,busy:r,error:n,confirmRebase:l,copied:i,localChanges:b,remoteChanges:x,begin:E,clear:h,load:M,adoptLatest:y,rebase:N,keepCopy:u,toggleRebase:()=>{l.value=!l.value}}}function ys(t,o,a){o==="visual"&&a===void 0?delete t.visual:Object.assign(t,{[o]:o==="widthMm"?Number(a):a})}function bs(t,o,a,r){const n=e.ref(0),l=e.ref(""),i=e.ref([]),s=e.ref();e.watch(t,()=>{s.value=void 0},{flush:"sync"});const p=e.computed(()=>t.value.template.pages.flatMap((c,f)=>c.components.flatMap((k,B)=>k.kind==="list"?[{component:k,pageIndex:f,componentIndex:B}]:[]))),b=e.computed(()=>p.value[n.value]?.component),x=e.computed(()=>{const c=b.value;if(!c)return[];const f=c.columns.map(k=>k.headerStyle?.align??k.headerAlign??c.headerStyle?.align??c.headerAlign??k.style?.align??"center");if(c.headerGrid&&o())for(const k of P.resolveGridLayout(c.headerGrid,c.widthMm,100).cells)for(let B=k.ci;B<k.ci+(k.cell.colSpan??1);B++)f[B]=k.cell.style?.align??"left";return f}),m=e.computed(()=>{const c=l.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(b.value?.columns??[]).flatMap((f,k)=>{const B=`${f.header} ${f.field}`.toLocaleLowerCase();return c.every(I=>B.includes(I))?[{column:f,index:k}]:[]})});function h(c,f){i.value=f?[...new Set([...i.value,c])]:i.value.filter(k=>k!==c)}function M(c){const f=new Set(i.value);for(const{index:k}of m.value)c?f.add(k):f.delete(k);i.value=[...f]}function E(){i.value=[]}function y(c,f,k){if(!a())return;const B=p.value[n.value];if((f==="widthMm"||f==="hidden")&&B&&t.value.template.pages[B.pageIndex]?.flow)return;const I=b.value?.columns[c];I&&(N(c,f,k)||f==="hidden"&&k===!0&&!b.value?.columns.some((A,U)=>U!==c&&!A.hidden)||(ys(I,f,k),f==="header"&&V(c,String(k)),f==="headerAlign"&&w(c,k),f==="widthMm"&&S(),r(f==="header"?`column:${B?.pageIndex}:${B?.componentIndex}:${c}:header`:void 0)))}function N(c,f,k){if(f!=="field")return!1;const B=b.value,I=p.value[n.value],A=B?.columns[c];if(!B||!I||!A||k===A.field)return!1;const U=`$.template.pages[${I.pageIndex}].components[${I.componentIndex}].columns[${c}].field`,Q=Dt.inspectTemplateFieldUsage(t.value.template,B.dataset,A.field).filter(d=>d.path!==U);return Q.length?(s.value={index:c,listIndex:n.value,before:A.field,after:String(k),references:Q},!0):!1}function u(){const c=s.value;if(!c||!a())return;const f=p.value[c.listIndex]?.component.columns[c.index];s.value=void 0,!(!f||f.field!==c.before)&&(f.field=c.after,r())}function S(){const c=p.value[n.value];if(!c)return;const f=c.component,k=t.value.template.pages[c.pageIndex],B=f.columns.map(I=>I.widthMm);f.headerGrid&&(f.headerGrid.colWidthsMm=B),k.layout==="wide"&&B.every(I=>Number.isFinite(I)&&I>0)&&(f.widthMm=B.reduce((I,A)=>I+A,0),k.widthMm=Math.max(...k.components.map(I=>I.leftMm+I.widthMm))+(k.marginRightMm??0))}function V(c,f){const k=b.value;if(!k?.headerGrid)return;const I=P.resolveGridLayout(k.headerGrid,k.widthMm,100).cells.filter(({ci:A,cell:U})=>A<=c&&A+(U.colSpan??1)>c).slice(-1)[0];I&&(Object.assign(I.cell,{text:f,rawText:f,value:f}),k.columns.slice(I.ci,I.ci+(I.cell.colSpan??1)).forEach(A=>{A.header=f}))}function w(c,f){const k=b.value,B=k?.columns[c];if(B?.headerStyle?.align!==void 0&&(B.headerStyle={...B.headerStyle,align:f}),!k?.headerGrid)return;const A=P.resolveGridLayout(k.headerGrid,k.widthMm,100).cells.filter(({ci:U,cell:Q})=>U<=c&&U+(Q.colSpan??1)>c).slice(-1)[0];A&&(A.cell.style={...A.cell.style,align:f},k.columns.slice(A.ci,A.ci+(A.cell.colSpan??1)).forEach(U=>{U.headerAlign=f,U.headerStyle?.align!==void 0&&(U.headerStyle={...U.headerStyle,align:f})}))}function v(c,f){if(!(!a()||c==="headerAlign"&&f==="auto")){for(const k of i.value){const B=b.value?.columns[k];B&&(Object.assign(B,{[c]:f}),c==="headerAlign"&&w(k,f))}r()}}return{selected:n,query:l,selectedColumns:i,lists:p,activeList:b,headerAlignments:x,visibleColumns:m,toggleColumn:h,selectVisible:M,clearSelection:E,fieldChange:s,confirmFieldChange:u,cancelFieldChange:()=>{s.value=void 0},setColumn:y,alignColumns:v}}function dt(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function lt(t,o,a=!1){const r={kind:"snapshot",value:o};if(a)return r;let n=0;const l=Math.min(t.length,o.length);for(;n<l&&t.charCodeAt(n)===o.charCodeAt(n);)n++;let i=t.length,s=o.length;for(;i>n&&s>n&&t.charCodeAt(i-1)===o.charCodeAt(s-1);)i--,s--;const p={kind:"patch",start:n,removed:t.slice(n,i),inserted:o.slice(n,s)};return dt(p)<dt(r)?p:r}function We(t,o,a=!1){if(o.kind==="snapshot")return o.value;const r=a?o.inserted:o.removed,n=a?o.removed:o.inserted;return t.slice(0,o.start)+n+t.slice(o.start+r.length)}const Ie=t=>dt(t)+(t.view?128:0),De=(t,o)=>o?{...t,view:{before:{...o},after:{...o}}}:t;function ks(t,o={entries:100,bytes:16*1024*1024}){if(![o.entries,o.bytes].every(v=>Number.isSafeInteger(v)&&v>0))throw new RangeError("History budgets must be positive safe integers");const a=e.shallowRef([{kind:"snapshot",value:t}]),r=e.ref(0),n=e.ref(t),l=e.computed(()=>r.value>0),i=e.computed(()=>r.value+1<a.value.length),s=e.computed(()=>n.value),p=e.computed(()=>a.value.reduce((v,c)=>v+Ie(c),0)),b=e.shallowRef();let x,m=0,h;function M(){x=void 0,h=void 0}function E(v,c){M(),a.value=[De({kind:"snapshot",value:v},c)],r.value=0,n.value=v,b.value=c}function y(v){let c=v;for(;c>0&&a.value[c].kind!=="snapshot";)c--;let f="";for(;c<=v;c++)f=We(f,a.value[c]);return f}function N(v){let c=v.reduce((f,k)=>f+Ie(k),0);for(;v.length>1&&(v.length>o.entries||c>o.bytes);){const f=v[0],k=v[1],B=De({kind:"snapshot",value:We(f.value,k)},k.view?.after);c+=Ie(B)-Ie(f)-Ie(k),v.splice(0,2,B)}return v}function u(v){if(!v)return;const c=a.value.slice(),f=c[r.value];c[r.value]=f.view?{...f,view:{before:f.view.before,after:{...v}}}:De(f,v),a.value=c}function S(v,c,f){if(n.value===v)return!1;const k=a.value.slice(0,r.value+1),B=Date.now();if(!!f&&f===x&&B-m<=600&&r.value>0&&!i.value){const A=k.pop(),U=h??y(r.value-1),Q=De(lt(U,v,k.length%20===0),A.view?.before??c);Q.view&&c&&(Q.view.after={...c}),k.push(Q)}else h=f?n.value:void 0,k.push(De(lt(n.value,v,k.length%20===0),c));return x=f,m=B,a.value=N(k),r.value=a.value.length-1,n.value=v,!0}function V(v){if(M(),v<0?!l.value:!i.value)return;const c=a.value[r.value];return b.value=v<0?c.view?.before:a.value[r.value+1]?.view?.after,v<0&&c.kind==="patch"?n.value=We(n.value,c,!0):v>0?n.value=We(n.value,a.value[r.value+1]):n.value=y(r.value-1),r.value+=v,n.value}function w(v,c){if(!r.value||i.value||n.value===v)return!1;const f=a.value.slice(),k=f.pop(),B=De(lt(y(r.value-1),v,f.length%20===0),k.view?.before??c);return B.view&&c&&(B.view.after={...c}),f.push(B),a.value=N(f),r.value=a.value.length-1,n.value=v,M(),!0}return{canUndo:l,canRedo:i,current:s,context:b,retainedBytes:p,reset:E,record:S,amend:w,move:V,annotate:u,endGroup:M}}function Es(t,o,a){const r={...t,revision:void 0};return JSON.stringify({document:r,tools:o,json:a})}function Ss(t,o){const a={...o,...t.document,id:o.id};return t.document.description===void 0&&delete a.description,o.revision===void 0?delete a.revision:a.revision=o.revision,a}function Gt(t){const o=e.shallowRef(null),a=e.ref(!1);let r,n=0;function l(p){r?.(p),r=void 0,o.value=null}function i(){n++,l(!1),a.value=!1}async function s(p){i();const b=n,x=t();a.value=!0;try{const m=await new Promise((h,M)=>{if(r=h,!x){o.value=p;return}Promise.resolve().then(()=>n===b?x(p):!1).then(E=>{n===b&&l(E===!0)},E=>{n===b&&(r=void 0,o.value=null,M(E))})});return n===b&&m===!0}finally{n===b&&(a.value=!1)}}return e.onBeforeUnmount(i),{confirmation:o,pending:a,decide:l,request:s,cancel:i}}function Ns(t,o){const a=e.ref(P.parseReportTemplate(t.modelValue)),r=e.ref(P.serializeReportTemplate(a.value)),n=e.ref(P.serializeReportTemplate(a.value)),l=e.ref(""),i=e.ref(!1),s=e.computed(()=>({...ue,...t.messages})),p=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}}));rt.provideMachReportConfig({get defaults(){return p.value}});let b,x=0;const m=e.computed(()=>P.validateReportTemplateDocument(a.value)),h=e.computed(()=>{try{return P.serializeReportTemplate(a.value)!==r.value}catch{return!0}}),M=e.ref(n.value),E=e.computed(()=>n.value!==M.value),y=e.ref({}),N=e.ref(0),u=e.ref(0),S=e.computed(()=>Object.values(y.value).some(Boolean)),V=e.computed(()=>Object.keys(y.value).filter(L=>y.value[L]));function w(L,H){y.value={...y.value,[L]:H},N.value++}let v=!1,c=!1,f;const k=ns(w,()=>{v||(c?A.amend(I(),Q?.read()):A.record(I(),Q?.read()))}),B=e.computed(()=>h.value||n.value!==M.value||S.value||!!D.fieldChange.value),I=()=>Es(a.value,k.records.value,E.value?{text:n.value,revision:f?f.revision:a.value.revision}:void 0),A=ks(I()),U=e.ref(0);let Q;function d(L){Q=L,A.annotate(L.read())}function F(){A.annotate(Q?.read())}const z=Gt(()=>t.beforeDiscard),T=e.computed(()=>i.value||z.pending.value||ce.active.value||pe.checking.value||!!pe.available.value),_=()=>!t.readonly&&!T.value&&!E.value,D=bs(a,()=>m.value.ok,_,me),{selected:$,lists:R,activeList:G,headerAlignments:j,setColumn:K}=D;e.watch($,()=>D.clearSelection());const oe=e.shallowRef();let ee,ae,X;function le(){clearTimeout(ee),ee=void 0,oe.value=rt.createLocalFetcher({draft:{get template(){return a.value.template},get datasets(){return t.datasets??{}},params:[]}})}e.watch([()=>a.value.template,()=>t.datasets],(L,H)=>{clearTimeout(ee),ae&&X===ae&&L[1]===H?.[1]?ee=setTimeout(le,150):le(),X=ae},{deep:!0,immediate:!0});const Ye=e.computed(()=>m.value.ok?oe.value:void 0);function xe(){x++,b?.abort(),b=void 0,i.value=!1}let ke=0;async function Ee(L="replace",H){if(!B.value)return!0;const q=I(),ne=N.value;try{return await z.request({reason:L,document:JSON.parse(JSON.stringify(a.value)),replacement:H?P.parseReportTemplate(H):void 0,pendingLocalChanges:!0})&&q===I()&&ne===N.value}catch(de){return l.value=de instanceof Error?de.message:String(de),!1}}function J(L){xe(),ce.clear(),k.clear(),a.value=L,r.value=P.serializeReportTemplate(L),n.value=r.value,M.value=n.value,f=void 0,l.value="",$.value=0,D.clearSelection(),D.cancelFieldChange(),y.value={},N.value++,u.value++,A.reset(I(),Q?.read())}e.watch(()=>t.modelValue,async L=>{let H;try{H=P.parseReportTemplate(L)}catch(ne){l.value=ne instanceof Error?ne.message:String(ne);return}try{if(P.serializeReportTemplate(H)===P.serializeReportTemplate(a.value))return}catch{}const q=++ke;if(xe(),!await Ee("replace",H)){q===ke&&m.value.ok&&o("update:modelValue",P.parseReportTemplate(a.value));return}q===ke&&J(H)}),e.onBeforeUnmount(()=>{ke++,xe(),clearTimeout(ee)});function me(L){ae=L,c=!0,queueMicrotask(()=>{c=!1}),z.cancel(),l.value="",m.value.ok&&(n.value=P.serializeReportTemplate(a.value),M.value=n.value,f=void 0,o("update:modelValue",P.parseReportTemplate(a.value))),A.record(I(),Q?.read(),L)&&U.value++}function Se(L){if(!_())return!1;try{const H=P.parseReportTemplate(a.value);L(H);const q=P.validateReportTemplateDocument(H);if(!q.ok)throw new Error(q.errors.map(ne=>`${ne.path}: ${ne.message}`).join(`
2
+ `));return a.value=H,me(),!0}catch(H){return l.value=H instanceof Error?H.message:String(H),!1}}function Qe(L){return S.value||D.fieldChange.value?(l.value=s.value.toolsPending,!1):Se(H=>{H.template=P.parseReportTemplate({...H,template:L}).template})}async function Fe(L){if(!_())return!1;try{const H=P.parseReportTemplate(L);return!await Ee("replace",H)||!_()?!1:(a.value=H,$.value=0,D.clearSelection(),me(),!0)}catch(H){return l.value=H instanceof Error?H.message:String(H),!1}}function He(L){_()&&(a.value.name=L,me("document:name"))}function Oe(L){_()&&(a.value.description=L,me("document:description"))}function Me(){if(!(t.readonly||T.value))try{const L=P.parseReportTemplate(n.value);if(L.id!==a.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(L.revision!==a.value.revision&&(!f||L.revision!==f.revision))throw new Error("修订号由保存服务管理,不能在 JSON 中修改");a.value.revision===void 0?delete L.revision:L.revision=a.value.revision,a.value=L,$.value=0,D.clearSelection(),me()}catch(L){l.value=L instanceof Error?L.message:String(L)}}async function Xe(){T.value||t.readonly||!await Ee("reset")||(J(P.parseReportTemplate(r.value)),o("update:modelValue",P.parseReportTemplate(a.value)))}function Ge(L){if(T.value||t.readonly)return;A.record(I(),Q?.read());const H=A.move(L);if(!H)return;z.cancel();const q=JSON.parse(H);v=!0,a.value=Ss(q,P.parseReportTemplate(r.value)),M.value=P.serializeReportTemplate(a.value),n.value=q.json?.text??M.value,f=q.json?{revision:q.json.revision}:void 0,k.restore(q.tools),queueMicrotask(()=>{v=!1}),l.value="";const ne=A.context.value?.listIndex;$.value=ne!==void 0&&R.value[ne]?ne:0,D.clearSelection(),A.context.value&&Q?.restore(A.context.value),m.value.ok&&o("update:modelValue",P.parseReportTemplate(a.value))}async function Ze(){if(!t.save||!_()||!m.value.ok)return;if(S.value||D.fieldChange.value){l.value=s.value.toolsPending;return}const L=++x;b=new AbortController,i.value=!0,l.value="";const H=P.parseReportTemplate(a.value);try{const q=P.parseReportTemplate(await t.save(H,{expectedRevision:H.revision,signal:b.signal}));if(L!==x)return;if(q.id!==H.id)throw new Error("保存服务返回了其他模板的文档");a.value=q,r.value=P.serializeReportTemplate(q),n.value=r.value,M.value=n.value,A.endGroup(),f=void 0,k.clear(),pe.flush(),o("saved",P.parseReportTemplate(q)),o("update:modelValue",P.parseReportTemplate(q))}catch(q){L===x&&(l.value=q instanceof Error?q.message:String(q),q&&typeof q=="object"&&"code"in q&&q.code==="conflict"&&ce.begin())}finally{L===x&&(i.value=!1,b=void 0)}}const ce=hs({configuration:()=>t,baseline:()=>P.parseReportTemplate(r.value),local:()=>P.parseReportTemplate(a.value),async applyLatest(L){return await Ee("replace",L)?(J(L),o("update:modelValue",P.parseReportTemplate(L)),!0):!1},rebase(L){const H=P.parseReportTemplate(a.value);L.revision===void 0?delete H.revision:H.revision=L.revision;const q=P.serializeReportTemplate(H),ne=P.serializeReportTemplate(L),de=E.value;H.revision===void 0?delete a.value.revision:a.value.revision=H.revision,r.value=ne,de||(n.value=q),M.value=q,A.reset(I(),Q?.read()),o("update:modelValue",P.parseReportTemplate(a.value))}}),pe=gs({storage:()=>t.draftStorage,id:()=>a.value.id,baseline:()=>r.value,pending:()=>B.value,changedSource:()=>[a.value,r.value,n.value,M.value,k.records.value],snapshot:()=>({version:1,templateId:a.value.id,savedAt:new Date().toISOString(),baseline:P.parseReportTemplate(r.value),document:JSON.parse(JSON.stringify(a.value)),json:n.value,appliedJson:M.value,tools:k.records.value}),restore(L){if(t.readonly||i.value)return;const H=P.parseReportTemplate(t.modelValue);a.value=P.parseReportTemplate(L.document),r.value=P.serializeReportTemplate(L.baseline),n.value=L.json,M.value=L.appliedJson,u.value++,k.restore(L.tools);const q=Object.keys(L.tools).find(ne=>ne.startsWith("rules:"));if(q){const[,ne,de]=q.split(":"),Ne=R.value.findIndex(fe=>fe.pageIndex===Number(ne)&&fe.componentIndex===Number(de));Ne>=0&&($.value=Ne)}A.reset(I(),Q?.read()),P.serializeReportTemplate(H)!==r.value&&ce.begin(H),o("update:modelValue",P.parseReportTemplate(a.value))}}),Be=e.computed(()=>A.canUndo.value||I()!==A.current.value),ze=e.computed(()=>A.canRedo.value&&I()===A.current.value);return{...D,recovery:pe,conflict:ce,editingReadonly:e.computed(()=>t.readonly===!0),connectHistoryView:d,captureHistoryView:F,historyViewRevision:U,transaction:Se,applyTemplate:Qe,replaceDocument:Fe,originalDocument:e.computed(()=>P.parseReportTemplate(r.value)),canUndo:Be,canRedo:ze,undo:()=>Ge(-1),redo:()=>Ge(1),pendingLocalChanges:B,setToolPending:w,isToolPending:L=>y.value[L]===!0,toolEpoch:u,toolPending:S,pendingTools:V,jsonPending:E,blocked:T,confirmation:z.confirmation,decideDiscard:z.decide,guardChanges:Ee,draft:a,json:n,selected:$,error:l,saving:i,dirty:h,validation:m,lists:R,activeList:G,headerAlignments:j,previewOptions:p,fetcher:Ye,flushPreview:le,messages:s,setName:He,setDescription:Oe,setColumn:K,applyJson:Me,reset:Xe,save:Ze}}function ws(t,o){const a=e.ref(o.value?"fields":"component"),r=()=>o.value?.columns.length?0:-1,n=e.ref(r()),l=e.computed(()=>{const p=o.value?.columns[n.value];return p?{column:p,index:n.value}:void 0});e.watch(t,()=>{n.value=r()},{flush:"sync"}),e.watch(o,p=>{p?.columns[n.value]||(n.value=r()),!p&&a.value==="fields"&&(a.value="component")});function i(p){o.value?.columns[p]&&(n.value=p)}function s(p){const b=o.value?.columns.length??0;b&&(n.value=Math.max(0,Math.min(b-1,n.value+p)))}return{section:a,activeIndex:n,activeColumn:l,activate:i,stepColumn:s}}const Vs=["aria-label","aria-busy"],Cs={class:"mr-designer-bar"},xs={class:"mr-designer-heading"},Ms=["aria-label"],Bs=["id","aria-selected","aria-controls","tabindex","onClick"],Ds={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},$s=["aria-label"],Ts=["aria-pressed"],_s=["aria-pressed"],Is={class:"mr-designer-actions"},Rs={class:"mr-designer-history"},Ls=["aria-label","title","disabled"],As=["aria-label","title","disabled"],Ps=["disabled"],Fs=["title","aria-describedby","disabled"],Hs=["id"],Os={key:0,class:"mr-designer-insert-notice",role:"status"},Gs=["id"],zs=["aria-label","onClick"],Us=["aria-label"],js=["id","aria-labelledby"],qs=["aria-label"],Ws=["id","aria-pressed","aria-describedby","onClick"],Ks={key:0,class:"mr-designer-pending-dot","aria-hidden":"true"},Js={class:"mr-designer-tool-target"},Ys=["value","aria-label"],Qs=["value"],Xs=["value","aria-label"],Zs={value:-1,disabled:""},ec=["value"],tc=["aria-pressed"],nc={class:"mr-designer-tool-content"},ac={key:5,class:"mr-designer-rule-workspace"},oc={key:0},lc=["value"],rc=["value"],ic={key:2,class:"mr-designer-note"},sc={key:1,class:"mr-designer-inspector"},cc=["id","aria-labelledby"],dc={key:0,class:"mr-designer-flow-note"},uc={key:0,class:"mr-designer-area"},mc=["value"],pc=["value"],fc={class:"mr-designer-field-actions"},vc=["disabled"],gc={class:"mr-designer-current"},hc=["aria-expanded","aria-controls"],yc={class:"mr-designer-current-name"},bc={class:"mr-designer-directory-entry"},kc={class:"mr-designer-field-position"},Ec=["aria-label"],Sc=["aria-label","title","disabled"],Nc=["aria-label","title","disabled"],wc=["disabled","aria-label"],Vc={class:"mr-designer-property-group"},Cc=["value"],xc=["value","list"],Mc=["id"],Bc=["value"],Dc={class:"mr-designer-property-group"},$c={class:"mr-designer-format-pair"},Tc={class:"mr-designer-stacked"},_c=["value","disabled"],Ic={class:"mr-designer-stacked"},Rc=["value"],Lc={value:"identifier"},Ac={value:"dimension"},Pc={value:"measure"},Fc={value:"date"},Hc={value:"text"},Oc={class:"mr-designer-control-row"},Gc={class:"mr-designer-control-row"},zc={class:"mr-designer-toggle"},Uc=["checked"],jc={class:"mr-designer-column-structure"},qc=["aria-label","title","disabled"],Wc=["aria-label","title","disabled"],Kc=["checked","disabled"],Jc=["id","aria-label"],Yc={class:"mr-designer-directory-heading"},Qc=["aria-label"],Xc={class:"mr-designer-search"},Zc=["aria-label","placeholder"],ed=["aria-label","title"],td={class:"mr-designer-column-tools"},nd=["disabled"],ad={key:1,role:"status"},od={key:2},ld=["aria-label"],rd=["aria-label","checked","disabled","onChange"],id=["data-column-index","aria-pressed","tabindex","onClick"],sd={class:"mr-designer-column-number"},cd={class:"mr-designer-column-name"},dd={key:0,role:"status",class:"mr-designer-empty"},ud=["aria-label"],md=["disabled","aria-label"],pd=["disabled","aria-label"],fd={key:1,class:"mr-designer-batch"},vd=["aria-label","disabled"],gd={value:""},hd={value:"auto"},yd={value:"left"},bd={value:"center"},kd={value:"right"},Ed={value:"justify"},Sd=["aria-label","disabled"],Nd={value:""},wd={value:"left"},Vd={value:"center"},Cd={value:"right"},xd={value:"justify"},Md={key:2,role:"status",class:"mr-designer-empty"},Bd={class:"mr-designer-object-tools"},Dd=["title","aria-label","disabled"],$d=["title","aria-label","disabled"],Td={key:0},_d=["value"],Id={class:"mr-designer-stacked"},Rd=["value"],Ld={value:-1,disabled:""},Ad=["value"],Pd={key:1,class:"mr-designer-arrange"},Fd=["disabled"],Hd=["aria-label","disabled"],Od={value:""},Gd={value:"left"},zd={value:"center"},Ud={value:"right"},jd={value:"top"},qd={value:"middle"},Wd={value:"bottom"},Kd=["disabled"],Jd=["disabled"],Yd={key:0},Qd={class:"mr-designer-layer-tools"},Xd=["disabled"],Zd=["disabled"],eu={key:3,class:"mr-designer-empty"},tu={class:"mr-designer-stacked"},nu=["value","disabled"],au={class:"mr-designer-stacked"},ou=["value","disabled"],lu={class:"mr-designer-technical"},ru={class:"mr-designer-identity"},iu={class:"mr-designer-stacked mr-designer-json-label"},su=["aria-label","disabled"],cu=["disabled"],du={key:5,role:"status",class:"mr-designer-note mr-designer-pending"},uu=["aria-label"],mu={key:0,role:"alert",class:"mr-designer-error"},pu={key:1,role:"alert",class:"mr-designer-error"},fu={key:4,class:"mr-designer-note mr-designer-invalid"},vu=e.defineComponent({__name:"ReportTemplateEditor",props:{showSave:{type:Boolean,default:!0},mode:{},showModeSwitch:{type:Boolean,default:!0},capabilities:{},insertionMessages:{},guideMessages:{},draftStorage:{},recoveryMessages:{},productMessages:{},reviewMessages:{},fragments:{},documentStyles:{},reviewFixtures:{},modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},visualMessages:{},preview:{},beforeDiscard:{},save:{},loadLatest:{},keepCopy:{}},emits:["update:modelValue","saved","excel-bound","update:mode"],setup(t,{expose:o,emit:a}){const r=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-B7aeRg46.cjs"))),n=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-BdFMa1CX.cjs"))),l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-BVuRn_OQ.cjs"))),i=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-D6TXg1aV.cjs"))),s=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-wrSbd_mr.cjs"))),p=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-BKFcSbTh.cjs"))),b=t,x=a,m=Ns(b,(O,C)=>{x(O==="saved"?"saved":"update:modelValue",C)}),{draft:h,json:M,selected:E,error:y,saving:N,pendingLocalChanges:u,jsonPending:S,blocked:V,confirmation:w,canUndo:v,canRedo:c,validation:f,lists:k,activeList:B,visibleColumns:I,query:A,selectedColumns:U,fetcher:Q,messages:d}=m;function F(O){return m.transaction(C=>{C.template.params=O})}const z=ws(E,B),{section:T,activeIndex:_,activeColumn:D}=z,$=`mr-designer-${e.getCurrentInstance()?.uid??0}`,R=Mi(m,z,()=>b.dataSchemas,{mode:()=>b.mode,onModeChange:O=>x("update:mode",O)}),{mode:G,canvasSelection:j,canvasPage:K,canvasActive:oe,tool:ee,visitedTools:ae,editDisabled:X,dataSchema:le,patchCanvas:Ye,changeList:xe,moveColumn:ke,headerCommand:Ee,canvas:J}=R,{sections:me,toolPreview:Se,setMode:Qe,toggleToolPreview:Fe,chooseToolComponent:He,openBinding:Oe,pendingConfigurations:Me,saveReason:Xe,openPending:Ge,headingStatus:Ze,chooseCanvas:ce,locateReview:pe,chooseRuleList:Be,navigateSection:ze}=Si(m,R,z,{id:$,readonly:()=>b.readonly===!0,capabilities:()=>b.capabilities}),L=Wn(m,R,z,()=>b.dataSchemas,()=>b.datasets,()=>b.insertionMessages),H=Kn(()=>({undo:m.undo,redo:m.redo,canUndo:v.value,canRedo:c.value,blocked:V.value||b.readonly})),q=["outline","reuse","excel","rules","params","review"],ne=e.computed(()=>q.filter(O=>b.capabilities?.[O]!==!1));e.watch(ne,O=>{O.includes(ee.value)||(ee.value=O[0]??"outline"),!O.length&&T.value==="tools"&&(T.value=k.value.length?"fields":"component")});const de=e.computed(()=>["fields","components","layout","excel","rules","review"].filter(O=>!["excel","rules","review"].includes(O)||b.capabilities?.[O]!==!1)),Ne=e.computed(()=>h.value.template.pages.some(O=>O.components.some(C=>C.kind==="list"||C.binding?!1:C.kind==="image"?!C.imageData||C.meta?.designerPlaceholder===!0:["qrcode","barcode"].includes(C.kind)&&!C.imageData&&!(C.code?.value??C.fallbackText??C.text??"").trim()))),fe=e.computed(()=>Ne.value?L.messages.value.assetPending:Xe.value);async function ut(){if(Ne.value){y.value=L.messages.value.assetPending;return}await m.save()}function Ue(O){if(O==="preview"&&Ne.value){y.value=L.messages.value.assetPending;return}m.flushPreview(),Qe(O)}e.watch(G,O=>{O==="preview"&&m.flushPreview()});const ie=e.computed(()=>!!h.value.template.pages[K.value]?.flow),mt=e.computed(()=>b.dataSchemas?.[h.value.template.repeat?.dataset??""]),pt=e.computed(()=>{const O={text:d.value.insertText,list:d.value.insertList,image:d.value.insertImage,rect:d.value.insertRect,qrcode:d.value.insertQrcode,barcode:d.value.insertBarcode,chart:d.value.chartComponent,line:d.value.lineComponent,ellipse:d.value.ellipseComponent},C=new Map(mt.value?.fields.map(g=>[g.field,g.label||g.field]));return h.value.template.pages[K.value]?.components.map((g,W)=>{const ge=O[g.kind],nt=(g.kind==="list"?g.title||g.dataset:g.binding?C.get(g.binding.field)||g.binding.field:g.text)?.replace(/\s+/g," ").trim().slice(0,60);return{index:W,name:nt&&nt!==ge?`${ge} · ${nt}`:ge}})??[]});function zt(O){let C=K.value;m.transaction(g=>{C=ea(g,K.value,O)})&&(O.type!=="patch"&&(J.clearLocks(),J.selection.value=void 0,J.selections.value=[]),K.value=C)}const we=e.computed(()=>!!h.value.template.pages[k.value[E.value]?.pageIndex??-1]?.flow),ft=e.ref(null),et=e.ref(null),Z=ts(z,T,I),{open:vt,cursor:Ut,trigger:jt,panel:qt,search:Wt,list:Kt}=Z;e.watch(T,async()=>{await e.nextTick(),et.value&&(et.value.scrollTop=0)});const gt=e.computed(()=>({auto:d.value.auto,left:d.value.left,center:d.value.center,right:d.value.right,justify:d.value.justify}));let je=null;e.watch(w,async O=>{O?(je=document.activeElement,await e.nextTick(),ft.value?.focus()):(await e.nextTick(),je?.isConnected&&je.focus(),je=null)});function ht(O){if(!(V.value||b.capabilities?.[O]===!1)){if(["excel","rules","params","review"].includes(O)){T.value="tools",ee.value=O;return}T.value=O==="layout"?"template":O==="fields"&&k.value.length?"fields":"component",Ue(T.value==="fields"?"preview":"design")}}const yt=e.computed(()=>!b.readonly&&!V.value&&!S.value&&!m.toolPending.value&&!m.fieldChange.value&&f.value.ok&&!Ne.value);o({openPanel:ht,applyTemplate:m.applyTemplate,undo:m.undo,redo:m.redo,get canUndo(){return v.value},get canRedo(){return c.value},get canApply(){return yt.value},get saveReason(){return fe.value},get pendingLocalChanges(){return u.value},get saving(){return N.value},get blocked(){return V.value},guardChanges:m.guardChanges,reset:m.reset,save:ut,insertComponent:J.insertComponent});async function Jt(O){const C={...O.document,id:h.value.id};if(h.value.revision===void 0?delete C.revision:C.revision=h.value.revision,!await m.replaceDocument(C))return!1;const g=P.parseReportTemplate(m.draft.value);return x("excel-bound",{...O,document:g,session:{...O.session,identity:{id:g.id,name:g.name}}}),!0}function ve(O){return O.target.value}function tt(O){return O.target.checked}function bt(O,C){const g=O.target;m.alignColumns(C,g.value),g.value=""}return(O,C)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(d).title,"aria-busy":e.unref(N),onKeydown:C[65]||(C[65]=(...g)=>e.unref(H).keydown&&e.unref(H).keydown(...g))},[e.createElementVNode("header",Cs,[e.createElementVNode("div",xs,[e.createVNode(Y._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(d).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(u)})},e.toDisplayString(e.unref(Ze)),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(d).sectionsLabel},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(me),g=>(e.openBlock(),e.createElementBlock("button",{id:`${$}-tab-${g}`,key:g,type:"button",role:"tab","aria-selected":e.unref(T)===g,"aria-controls":`${$}-panel-${g}`,tabindex:e.unref(T)===g?0:-1,onClick:W=>T.value=g,onKeydown:C[0]||(C[0]=(...W)=>e.unref(ze)&&e.unref(ze)(...W))},[e.createTextVNode(e.toDisplayString(e.unref(d)[`${g}Section`])+" ",1),g==="tools"&&e.unref(m).toolPending.value||g==="advanced"&&e.unref(S)?(e.openBlock(),e.createElementBlock("span",Ds)):e.createCommentVNode("",!0)],40,Bs))),128))],8,Ms),t.showModeSwitch!==!1?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-designer-mode",role:"group","aria-label":e.unref(d).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(G)==="design",onClick:C[1]||(C[1]=g=>Ue("design"))},e.toDisplayString(e.unref(d).design),9,Ts),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(G)==="preview",onClick:C[2]||(C[2]=g=>Ue("preview"))},e.toDisplayString(e.unref(d).preview),9,_s)],8,$s)):e.createCommentVNode("",!0),e.createElementVNode("div",Is,[e.createVNode(vn,{disabled:e.unref(X)||ie.value,repeat:!!e.unref(h).template.repeat,fields:e.unref(h).template.repeat||e.unref(B)?e.unref(L).fields.value:[],columns:!e.unref(h).template.repeat,"used-fields":e.unref(h).template.repeat?[]:e.unref(B)?.columns.map(g=>g.field)??[],messages:t.insertionMessages,onInsert:e.unref(L).insert,onField:e.unref(L).addField},null,8,["disabled","repeat","fields","columns","used-fields","messages","onInsert","onField"]),e.createVNode(nn,{available:de.value,fields:!!e.unref(k).length,disabled:e.unref(V),messages:t.guideMessages,onChoose:ht},null,8,["available","fields","disabled","messages"]),e.createElementVNode("div",Rs,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).undo,title:e.unref(d).undo,disabled:t.readonly||e.unref(V)||!e.unref(v),onClick:C[3]||(C[3]=g=>{e.unref(J).clearLocks(),e.unref(m).undo()})},[C[66]||(C[66]=e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)),e.createTextVNode(e.toDisplayString(e.unref(d).undo),1)],8,Ls),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).redo,title:e.unref(d).redo,disabled:t.readonly||e.unref(V)||!e.unref(c),onClick:C[4]||(C[4]=g=>{e.unref(J).clearLocks(),e.unref(m).redo()})},[C[67]||(C[67]=e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)),e.createTextVNode(e.toDisplayString(e.unref(d).redo),1)],8,As)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(V)||!e.unref(u),onClick:C[5]||(C[5]=(...g)=>e.unref(m).reset&&e.unref(m).reset(...g))},e.toDisplayString(e.unref(d).reset),9,Ps),t.save&&t.showSave!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",title:fe.value||e.unref(d).save,"aria-describedby":e.unref(Me).length?`${$}-pending`:fe.value?`${$}-save-reason`:void 0,disabled:!yt.value||!e.unref(u),onClick:ut},[e.createVNode(Y._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(N)?e.unref(d).saving:e.unref(d).save),1)],8,Fs)):e.createCommentVNode("",!0),t.save&&t.showSave!==!1&&fe.value&&!e.unref(Me).length?(e.openBlock(),e.createElementBlock("span",{key:1,id:`${$}-save-reason`,class:"mr-designer-save-reason"},e.toDisplayString(fe.value),9,Hs)):e.createCommentVNode("",!0)])]),e.unref(L).notice.value?(e.openBlock(),e.createElementBlock("p",Os,e.toDisplayString(e.unref(L).notice.value),1)):e.createCommentVNode("",!0),e.createVNode(pi,{recovery:e.unref(m).recovery,conflict:e.unref(m).conflict,readonly:t.readonly,"can-load":!!t.loadLatest,"can-copy":!!t.keepCopy,messages:t.recoveryMessages},null,8,["recovery","conflict","readonly","can-load","can-copy","messages"]),e.createVNode(jr,{messages:t.productMessages,change:e.unref(m).fieldChange.value,disabled:e.unref(X),onConfirm:e.unref(m).confirmFieldChange,onCancel:e.unref(m).cancelFieldChange,onLocate:e.unref(pe)},null,8,["messages","change","disabled","onConfirm","onCancel","onLocate"]),e.unref(Me).length?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${$}-pending`,class:"mr-designer-pending",role:"status"},[e.createElementVNode("span",null,e.toDisplayString(e.unref(d).pendingToolsLabel),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Me),g=>(e.openBlock(),e.createElementBlock("button",{key:g.target,type:"button","aria-label":`${g.label} · ${e.unref(d).unapplied} · ${e.unref(d).returnToConfiguration}`,onClick:W=>e.unref(Ge)(g.target)},[e.createTextVNode(e.toDisplayString(g.label),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(d).unapplied)+" ↗",1)],8,zs))),128)),e.createElementVNode("small",null,e.toDisplayString(e.unref(d).pendingToolsHint),1)],8,Gs)):e.createCommentVNode("",!0),e.unref(w)?(e.openBlock(),e.createElementBlock("div",{key:2,role:"alertdialog","aria-label":e.unref(d).discardTitle,class:"mr-designer-confirm",onKeydown:C[8]||(C[8]=e.withKeys(e.withModifiers(g=>e.unref(m).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(d).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(d).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:ft,type:"button",onClick:C[6]||(C[6]=g=>e.unref(m).decideDiscard(!1))},e.toDisplayString(e.unref(d).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:C[7]||(C[7]=g=>e.unref(m).decideDiscard(!0))},e.toDisplayString(e.unref(d).discard),1)])],40,Us)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(T)==="tools","is-docked":e.unref(Se)}])},[e.unref(ae).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:e.unref(m).toolEpoch.value,class:"mr-designer-tools",id:`${$}-panel-tools`,role:"tabpanel","aria-labelledby":`${$}-tab-tools`},[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(d).toolsSection},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ne.value,g=>(e.openBlock(),e.createElementBlock("button",{key:g,id:`${$}-tool-${g}`,type:"button","aria-pressed":e.unref(ee)===g,"aria-describedby":e.unref(m).isToolPending(g)?`${$}-pending`:void 0,onClick:W=>ee.value=g},[e.createTextVNode(e.toDisplayString(e.unref(d)[`${g}Tool`])+" ",1),e.unref(m).isToolPending(g)?(e.openBlock(),e.createElementBlock("span",Ks)):e.createCommentVNode("",!0)],8,Ws))),128))],8,qs),e.createElementVNode("div",Js,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(e.unref(d).toolTarget),1),e.createElementVNode("select",{value:e.unref(K),"aria-label":e.unref(d).pageDirectory,onChange:C[9]||(C[9]=g=>K.value=Number(g.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).template.pages,(g,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(e.unref(Ae)(g,W,e.unref(d).page)),9,Qs))),128))],40,Ys)]),e.createElementVNode("select",{value:e.unref(j)?.pageIndex===e.unref(K)?e.unref(j).componentIndex:-1,"aria-label":e.unref(d).toolChooseComponent,onChange:C[10]||(C[10]=(...g)=>e.unref(He)&&e.unref(He)(...g))},[e.createElementVNode("option",Zs,e.toDisplayString(e.unref(d).toolChooseComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pt.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.index,value:g.index},e.toDisplayString(g.name),9,ec))),128))],40,Xs),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(Se),onClick:C[11]||(C[11]=(...g)=>e.unref(Fe)&&e.unref(Fe)(...g))},[e.createVNode(Y._sfc_main,{name:"columns",size:14}),e.createTextVNode(e.toDisplayString(e.unref(Se)?e.unref(d).toolPreviewHide:e.unref(d).toolPreview),1)],8,tc)]),e.createElementVNode("div",nc,[e.unref(ae).has("outline")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(i),{key:0,messages:t.productMessages,document:e.unref(h),selection:e.unref(j),onLocate:e.unref(pe)},null,8,["messages","document","selection","onLocate"])),[[e.vShow,e.unref(ee)==="outline"]]):e.createCommentVNode("",!0),e.unref(ae).has("reuse")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(s),{key:1,messages:t.productMessages,document:e.unref(h),"page-index":e.unref(K),selection:e.unref(j),fragments:t.fragments,styles:t.documentStyles,disabled:e.unref(X),accept:e.unref(m).transaction,onSelect:e.unref(ce)},null,8,["messages","document","page-index","selection","fragments","styles","disabled","accept","onSelect"])),[[e.vShow,e.unref(ee)==="reuse"]]):e.createCommentVNode("",!0),e.unref(ae).has("params")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(n),{key:2,document:e.unref(h),readonly:e.unref(X),accept:F,"load-options":t.preview?.loadParamOptions,onDirty:C[12]||(C[12]=g=>e.unref(m).setToolPending("params",g))},null,8,["document","readonly","load-options"])),[[e.vShow,e.unref(ee)==="params"]]):e.createCommentVNode("",!0),e.unref(ae).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(r),{key:3,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(h).id,name:e.unref(h).name},"lock-id":"",readonly:e.unref(X),accept:Jt,onDirty:C[13]||(C[13]=g=>e.unref(m).setToolPending("excel",g))},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(ee)==="excel"]]):e.createCommentVNode("",!0),e.unref(ae).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(p),{key:4,document:e.unref(h),previous:e.unref(m).originalDocument.value,fixtures:t.reviewFixtures,messages:t.reviewMessages,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(pe)},null,8,["document","previous","fixtures","messages","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(ee)==="review"]]):e.createCommentVNode("",!0),e.unref(ae).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",ac,[e.unref(k).length>1?(e.openBlock(),e.createElementBlock("label",oc,[e.createTextVNode(e.toDisplayString(e.unref(d).area),1),e.createElementVNode("select",{value:e.unref(E),onChange:C[14]||(C[14]=(...g)=>e.unref(Be)&&e.unref(Be)(...g))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(k),(g,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(g.component.title||g.component.dataset),9,rc))),128))],40,lc)])):e.createCommentVNode("",!0),e.unref(B)?(e.openBlock(),e.createBlock(e.unref(l),{key:1,list:e.unref(B),"recovery-key":`rules:${e.unref(k)[e.unref(E)]?.pageIndex??0}:${e.unref(k)[e.unref(E)]?.componentIndex??0}`,datasets:t.datasets,"dataset-schema":e.unref(le),"dataset-schemas":t.dataSchemas,readonly:e.unref(X),onChange:e.unref(xe),onDirty:C[15]||(C[15]=g=>e.unref(m).setToolPending("rules",g))},null,8,["list","recovery-key","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",ic,e.toDisplayString(e.unref(d).rulesNeedList),1))],512)),[[e.vShow,e.unref(ee)==="rules"]]):e.createCommentVNode("",!0)])],8,js)),[[e.vShow,e.unref(T)==="tools"]]):e.createCommentVNode("",!0),e.unref(T)!=="tools"?(e.openBlock(),e.createElementBlock("aside",sc,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:et,id:`${$}-panel-${e.unref(T)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(T)==="advanced"}]),role:"tabpanel","aria-labelledby":`${$}-tab-${e.unref(T)}`},[ie.value||we.value?(e.openBlock(),e.createElementBlock("div",dc,[e.createElementVNode("small",null,e.toDisplayString(e.unref(d).flowLayout),1),e.createElementVNode("button",{type:"button",onClick:C[16]||(C[16]=(...g)=>e.unref(Oe)&&e.unref(Oe)(...g))},e.toDisplayString(e.unref(d).excelTool)+" ↗",1)])):e.createCommentVNode("",!0),e.unref(T)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.unref(k).length>1?(e.openBlock(),e.createElementBlock("label",uc,[e.createTextVNode(e.toDisplayString(e.unref(d).area),1),e.createElementVNode("select",{value:e.unref(E),onChange:C[17]||(C[17]=(...g)=>e.unref(Be)&&e.unref(Be)(...g))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(k),(g,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(g.pageIndex+1)+" "+e.toDisplayString(e.unref(d).page)+" · "+e.toDisplayString(g.component.title||g.component.dataset),9,pc))),128))],40,mc)])):e.createCommentVNode("",!0),e.unref(B)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",fc,[e.createElementVNode("button",{type:"button",disabled:e.unref(X)||we.value||e.unref(B).columns.length<2,onClick:C[18]||(C[18]=(...g)=>e.unref(L).removeColumn&&e.unref(L).removeColumn(...g))},e.toDisplayString(e.unref(L).messages.value.removeColumn),9,vc)]),e.createElementVNode("div",gc,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:jt,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(vt),"aria-controls":`${$}-directory`,"aria-haspopup":"dialog",onClick:C[19]||(C[19]=(...g)=>e.unref(Z).toggle&&e.unref(Z).toggle(...g)),onKeydown:C[20]||(C[20]=e.withKeys((...g)=>e.unref(Z).escape&&e.unref(Z).escape(...g),["esc"]))},[e.createElementVNode("span",yc,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(D)?.column.header||e.unref(d).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(D)?.column.field||"—"),1)]),e.createElementVNode("span",bc,[e.createTextVNode(e.toDisplayString(e.unref(d).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(B).columns.length),1),e.createVNode(Y._sfc_main,{name:"chevron-down",size:13})])],40,hc),e.createElementVNode("div",kc,[e.createElementVNode("span",{"aria-label":e.unref(d).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(_)>=0?e.unref(_)+1:0),1),C[68]||(C[68]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(B).columns.length),1)],8,Ec),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).previousColumn,title:e.unref(d).previousColumn,disabled:e.unref(_)<=0,onClick:C[21]||(C[21]=g=>e.unref(z).stepColumn(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:14})],8,Sc),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).nextColumn,title:e.unref(d).nextColumn,disabled:e.unref(_)>=e.unref(B).columns.length-1,onClick:C[22]||(C[22]=g=>e.unref(z).stepColumn(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:14})],8,Nc)])]),e.createVNode(Fn,{list:e.unref(B),schema:e.unref(le),readonly:e.unref(X)||we.value,onChange:e.unref(xe)},null,8,["list","schema","readonly","onChange"]),e.unref(D)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(V)||e.unref(S),"aria-label":e.unref(d).columnProperties},[e.createElementVNode("div",Vc,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(d).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(d).header),1),e.createElementVNode("input",{value:e.unref(D).column.header,onInput:C[23]||(C[23]=g=>e.unref(m).setColumn(e.unref(D).index,"header",ve(g)))},null,40,Cc)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(d).field),1),e.createElementVNode("input",{value:e.unref(D).column.field,list:e.unref(le)?`${$}-fields`:void 0,onChange:C[24]||(C[24]=g=>e.unref(m).setColumn(e.unref(D).index,"field",ve(g)))},null,40,xc)]),e.unref(le)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${$}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(le).fields,g=>(e.openBlock(),e.createElementBlock("option",{key:g.field,value:g.field},e.toDisplayString(g.label)+" · "+e.toDisplayString(g.type)+" "+e.toDisplayString(g.unit),9,Bc))),128))],8,Mc)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Dc,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(d).formatGroup),1),e.createElementVNode("div",$c,[e.createElementVNode("label",Tc,[e.createTextVNode(e.toDisplayString(e.unref(d).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(D).column.widthMm,disabled:we.value,onChange:C[25]||(C[25]=g=>e.unref(m).setColumn(e.unref(D).index,"widthMm",ve(g)))},null,40,_c)]),e.createElementVNode("label",Ic,[e.createTextVNode(e.toDisplayString(e.unref(d).semantic),1),e.createElementVNode("select",{value:e.unref(D).column.semanticRole||"text",onChange:C[26]||(C[26]=g=>e.unref(m).setColumn(e.unref(D).index,"semanticRole",ve(g)))},[e.createElementVNode("option",Lc,e.toDisplayString(e.unref(d).identifier),1),e.createElementVNode("option",Ac,e.toDisplayString(e.unref(d).dimension),1),e.createElementVNode("option",Pc,e.toDisplayString(e.unref(d).measure),1),e.createElementVNode("option",Fc,e.toDisplayString(e.unref(d).date),1),e.createElementVNode("option",Hc,e.toDisplayString(e.unref(d).text),1)],40,Rc)])]),e.createElementVNode("div",Oc,[e.createElementVNode("span",null,e.toDisplayString(e.unref(d).bodyAlign),1),e.createVNode(st,{"model-value":e.unref(D).column.align??e.unref(D).column.style?.align??e.unref(B).align??"left",label:e.unref(d).bodyAlign,labels:gt.value,"auto-label":e.unref(d).autoShort,"allow-auto":"","onUpdate:modelValue":C[27]||(C[27]=g=>e.unref(m).setColumn(e.unref(D).index,"align",g))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",Gc,[e.createElementVNode("span",null,e.toDisplayString(e.unref(d).headerAlign),1),e.createVNode(st,{"model-value":e.unref(m).headerAlignments.value[e.unref(D).index]||"left",label:e.unref(d).headerAlign,labels:gt.value,"auto-label":e.unref(d).autoShort,"onUpdate:modelValue":C[28]||(C[28]=g=>e.unref(m).setColumn(e.unref(D).index,"headerAlign",g))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",zc,[e.createTextVNode(e.toDisplayString(e.unref(d).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(D).column.editable===!0,onChange:C[29]||(C[29]=g=>e.unref(m).setColumn(e.unref(D).index,"editable",tt(g)))},null,40,Uc)]),(e.openBlock(),e.createBlock(Ft,{key:`${e.unref(E)}:${e.unref(D).index}`,"model-value":e.unref(D).column.visual,fields:e.unref(B)?.columns.map(g=>({field:g.field,label:g.header})),readonly:e.unref(X),messages:t.visualMessages,"onUpdate:modelValue":C[30]||(C[30]=g=>e.unref(m).setColumn(e.unref(D).index,"visual",g))},null,8,["model-value","fields","readonly","messages"])),e.createElementVNode("div",jc,[e.createElementVNode("span",null,e.toDisplayString(e.unref(d).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(d).moveColumnLeft,title:e.unref(d).moveColumnLeft,disabled:we.value||e.unref(_)<=0,onClick:C[31]||(C[31]=g=>e.unref(ke)(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:13})],8,qc),e.createElementVNode("button",{type:"button","aria-label":e.unref(d).moveColumnRight,title:e.unref(d).moveColumnRight,disabled:we.value||e.unref(_)>=e.unref(B).columns.length-1,onClick:C[32]||(C[32]=g=>e.unref(ke)(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:13})],8,Wc),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(d).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(D).column.hidden!==!0,disabled:we.value||e.unref(D).column.hidden!==!0&&e.unref(B).columns.filter(g=>!g.hidden).length===1,onChange:C[33]||(C[33]=g=>e.unref(m).setColumn(e.unref(D).index,"hidden",!tt(g)))},null,40,Kc)])])],8,wc)):e.createCommentVNode("",!0),e.unref(vt)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${$}-directory`,ref_key:"directoryPanel",ref:qt,role:"dialog","aria-label":e.unref(d).columnDirectory,class:"mr-designer-directory",onKeydown:C[45]||(C[45]=e.withKeys((...g)=>e.unref(Z).escape&&e.unref(Z).escape(...g),["esc"])),onFocusout:C[46]||(C[46]=(...g)=>e.unref(Z).leave&&e.unref(Z).leave(...g))},[e.createElementVNode("div",Yc,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(d).columnDirectory)+" ",1),e.createElementVNode("span",null,e.toDisplayString(e.unref(B).columns.length),1)]),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).closeDirectory,onClick:C[34]||(C[34]=g=>e.unref(Z).close(!0))},[e.createVNode(Y._sfc_main,{name:"close",size:15})],8,Qc)]),e.createElementVNode("div",Xc,[e.createVNode(Y._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:Wt,"onUpdate:modelValue":C[35]||(C[35]=g=>e.isRef(A)?A.value=g:null),type:"search","aria-label":e.unref(d).columnsSearch,placeholder:e.unref(d).columnsSearch,onKeydown:C[36]||(C[36]=(...g)=>e.unref(Z).searchKeydown&&e.unref(Z).searchKeydown(...g))},null,40,Zc),[[e.vModelText,e.unref(A)]]),e.unref(A)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(d).clearSearch,title:e.unref(d).clearSearch,onClick:C[37]||(C[37]=g=>A.value="")},[e.createVNode(Y._sfc_main,{name:"close",size:13})],8,ed)):e.createCommentVNode("",!0)]),e.createElementVNode("div",td,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(V)||e.unref(S)||!e.unref(I).length,onClick:C[38]||(C[38]=g=>e.unref(m).selectVisible(!0))},e.toDisplayString(e.unref(d).selectVisible),9,nd),e.unref(U).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:C[39]||(C[39]=(...g)=>e.unref(m).clearSelection&&e.unref(m).clearSelection(...g))},e.toDisplayString(e.unref(d).clearSelection),1)):e.createCommentVNode("",!0),e.unref(U).length?(e.openBlock(),e.createElementBlock("span",ad,e.toDisplayString(e.unref(d).columnsSelected)+" "+e.toDisplayString(e.unref(U).length),1)):(e.openBlock(),e.createElementBlock("span",od,e.toDisplayString(e.unref(I).length)+" / "+e.toDisplayString(e.unref(B).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:Kt,class:"mr-designer-column-list","aria-label":e.unref(d).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Z).windowColumns.value,({column:g,index:W})=>(e.openBlock(),e.createElementBlock("div",{key:W,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(_)===W}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(d).selectColumn} ${g.header}`,checked:e.unref(U).includes(W),disabled:t.readonly||e.unref(V)||e.unref(S),onChange:ge=>e.unref(m).toggleColumn(W,tt(ge))},null,40,rd),e.createElementVNode("button",{type:"button","data-column-index":W,"aria-pressed":e.unref(_)===W,tabindex:e.unref(Ut)===W?0:-1,onClick:ge=>e.unref(Z).choose(W),onKeydown:C[40]||(C[40]=(...ge)=>e.unref(Z).navigate&&e.unref(Z).navigate(...ge))},[e.createElementVNode("span",sd,e.toDisplayString(W+1),1),e.createElementVNode("span",cd,[e.createElementVNode("strong",null,e.toDisplayString(g.header),1),e.createElementVNode("small",null,e.toDisplayString(g.field),1)]),e.unref(_)===W?(e.openBlock(),e.createBlock(Y._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,id)],2))),128)),e.unref(I).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",dd,[e.createVNode(Y._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(d).noColumns),1)]))],8,ld),e.unref(I).length>e.unref(Z).windowSize?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mr-designer-directory-pages","aria-label":e.unref(d).columnDirectory},[e.createElementVNode("button",{type:"button",disabled:e.unref(Z).windowStart.value===0,"aria-label":e.unref(d).previousColumns,onClick:C[41]||(C[41]=g=>e.unref(Z).stepWindow(-1))},[e.createVNode(Y._sfc_main,{name:"chevron-left",size:14})],8,md),e.createElementVNode("span",null,e.toDisplayString(e.unref(d).columnWindow.replace("{start}",String(e.unref(Z).windowStart.value+1)).replace("{end}",String(Math.min(e.unref(I).length,e.unref(Z).windowStart.value+e.unref(Z).windowSize))).replace("{total}",String(e.unref(I).length))),1),e.createElementVNode("button",{type:"button",disabled:e.unref(Z).windowStart.value+e.unref(Z).windowSize>=e.unref(I).length,"aria-label":e.unref(d).nextColumns,onClick:C[42]||(C[42]=g=>e.unref(Z).stepWindow(1))},[e.createVNode(Y._sfc_main,{name:"chevron-right",size:14})],8,pd)],8,ud)):e.createCommentVNode("",!0),e.unref(U).length?(e.openBlock(),e.createElementBlock("div",fd,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(d).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(d).batchBody,disabled:t.readonly||e.unref(V)||e.unref(S),onChange:C[43]||(C[43]=g=>bt(g,"align"))},[e.createElementVNode("option",gd,e.toDisplayString(e.unref(d).chooseAlignment),1),e.createElementVNode("option",hd,e.toDisplayString(e.unref(d).auto),1),e.createElementVNode("option",yd,e.toDisplayString(e.unref(d).left),1),e.createElementVNode("option",bd,e.toDisplayString(e.unref(d).center),1),e.createElementVNode("option",kd,e.toDisplayString(e.unref(d).right),1),e.createElementVNode("option",Ed,e.toDisplayString(e.unref(d).justify),1)],40,vd)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(d).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(d).batchHeader,disabled:t.readonly||e.unref(V)||e.unref(S),onChange:C[44]||(C[44]=g=>bt(g,"headerAlign"))},[e.createElementVNode("option",Nd,e.toDisplayString(e.unref(d).chooseAlignment),1),e.createElementVNode("option",wd,e.toDisplayString(e.unref(d).left),1),e.createElementVNode("option",Vd,e.toDisplayString(e.unref(d).center),1),e.createElementVNode("option",Cd,e.toDisplayString(e.unref(d).right),1),e.createElementVNode("option",xd,e.toDisplayString(e.unref(d).justify),1)],40,Sd)])])):e.createCommentVNode("",!0)],40,Jc)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Md,e.toDisplayString(e.unref(d).noColumns),1))],64)):e.unref(T)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Bd,[e.createElementVNode("button",{type:"button",title:e.unref(d).duplicateComponent,"aria-label":e.unref(d).duplicateComponent,disabled:e.unref(X)||ie.value||!e.unref(oe),onClick:C[47]||(C[47]=(...g)=>e.unref(J).duplicate&&e.unref(J).duplicate(...g))},e.toDisplayString(e.unref(L).messages.value.duplicate),9,Dd),e.createElementVNode("button",{type:"button",title:e.unref(d).removeComponent,"aria-label":e.unref(d).removeComponent,disabled:e.unref(X)||ie.value||!e.unref(oe),onClick:C[48]||(C[48]=(...g)=>e.unref(J).remove&&e.unref(J).remove(...g))},[e.createVNode(Y._sfc_main,{name:"close",size:14}),e.createTextVNode(" "+e.toDisplayString(e.unref(d).removeComponent),1)],8,$d)]),e.unref(h).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",Td,[e.createTextVNode(e.toDisplayString(e.unref(d).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":C[49]||(C[49]=g=>e.isRef(K)?K.value=g:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).template.pages,(g,W)=>(e.openBlock(),e.createElementBlock("option",{key:W,value:W},e.toDisplayString(e.unref(Ae)(g,W,e.unref(d).page)),9,_d))),128))],512),[[e.vModelSelect,e.unref(K),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",Id,[e.createTextVNode(e.toDisplayString(e.unref(d).components),1),e.createElementVNode("select",{value:e.unref(j)&&e.unref(j).pageIndex===e.unref(K)?e.unref(j).componentIndex:-1,onChange:C[50]||(C[50]=g=>e.unref(ce)({pageIndex:e.unref(K),componentIndex:Number(ve(g))}))},[e.createElementVNode("option",Ld,e.toDisplayString(e.unref(d).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(pt.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.index,value:g.index},e.toDisplayString(g.index+1)+" · "+e.toDisplayString(g.name),9,Ad))),128))],40,Rd)]),e.unref(J).selections.value.length?(e.openBlock(),e.createElementBlock("div",Pd,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(J).selections.value.length)+" "+e.toDisplayString(e.unref(d).component),1),e.createElementVNode("button",{type:"button",disabled:e.unref(X),onClick:C[51]||(C[51]=(...g)=>e.unref(J).toggleLock&&e.unref(J).toggleLock(...g))},e.toDisplayString(e.unref(J).allLocked.value?e.unref(d).unlockSelection:e.unref(d).lockSelection),9,Fd),e.createElementVNode("select",{"aria-label":e.unref(d).alignSelection,disabled:e.unref(X)||ie.value||e.unref(J).selections.value.length<2,onChange:C[52]||(C[52]=g=>{e.unref(J).align(ve(g)),g.target.value=""})},[e.createElementVNode("option",Od,e.toDisplayString(e.unref(d).alignSelection),1),e.createElementVNode("option",Gd,e.toDisplayString(e.unref(d).leftEdges),1),e.createElementVNode("option",zd,e.toDisplayString(e.unref(d).centers),1),e.createElementVNode("option",Ud,e.toDisplayString(e.unref(d).rightEdges),1),e.createElementVNode("option",jd,e.toDisplayString(e.unref(d).topEdges),1),e.createElementVNode("option",qd,e.toDisplayString(e.unref(d).middles),1),e.createElementVNode("option",Wd,e.toDisplayString(e.unref(d).bottomEdges),1)],40,Hd),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||ie.value||e.unref(J).selections.value.length<3,onClick:C[53]||(C[53]=g=>e.unref(J).distribute("horizontal"))},e.toDisplayString(e.unref(d).horizontalSpacing),9,Kd),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||ie.value||e.unref(J).selections.value.length<3,onClick:C[54]||(C[54]=g=>e.unref(J).distribute("vertical"))},e.toDisplayString(e.unref(d).verticalSpacing),9,Jd),e.unref(J).allLocked.value?(e.openBlock(),e.createElementBlock("small",Yd,e.toDisplayString(e.unref(d).sessionLock),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(oe)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Qd,[e.createElementVNode("button",{type:"button",disabled:e.unref(X)||ie.value||e.unref(j)?.componentIndex===0,onClick:C[55]||(C[55]=g=>e.unref(J).reorder(-1))},e.toDisplayString(e.unref(d).backward),9,Xd),e.createElementVNode("button",{type:"button",disabled:e.unref(X)||ie.value||e.unref(j)?.componentIndex===(e.unref(h).template.pages[e.unref(K)]?.components.length??0)-1,onClick:C[56]||(C[56]=g=>e.unref(J).reorder(1))},e.toDisplayString(e.unref(d).forward),9,Zd)]),e.createVNode(Xl,{component:e.unref(oe),"geometry-disabled":ie.value,disabled:e.unref(X)||e.unref(J).locked(e.unref(j)),messages:e.unref(d),repeat:e.unref(h).template.repeat,schema:mt.value,schemas:t.dataSchemas,datasets:t.datasets,onGeometry:e.unref(J).geometry,onPatch:e.unref(Ye)},null,8,["component","geometry-disabled","disabled","messages","repeat","schema","schemas","datasets","onGeometry","onPatch"]),e.unref(oe).kind==="list"?(e.openBlock(),e.createBlock(Ei,{key:0,list:e.unref(oe),disabled:e.unref(X)||ie.value,messages:e.unref(d),onCommand:e.unref(Ee)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",eu,e.toDisplayString(e.unref(d).noComponent),1))],64)):e.unref(T)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(d).templateDetails),1),e.createElementVNode("label",tu,[e.createTextVNode(e.toDisplayString(e.unref(d).name),1),e.createElementVNode("input",{value:e.unref(h).name,disabled:t.readonly||e.unref(V)||e.unref(S),onInput:C[57]||(C[57]=g=>e.unref(m).setName(ve(g)))},null,40,nu)]),e.createElementVNode("label",au,[e.createTextVNode(e.toDisplayString(e.unref(d).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(h).description,disabled:t.readonly||e.unref(V)||e.unref(S),onInput:C[58]||(C[58]=g=>e.unref(m).setDescription(ve(g)))},null,40,ou)]),e.createVNode(kr,{document:e.unref(h),"page-index":e.unref(K),disabled:e.unref(X),messages:e.unref(d),onSelect:C[59]||(C[59]=g=>K.value=g),onCommand:zt,onLocate:C[60]||(C[60]=g=>{e.unref(ce)({pageIndex:e.unref(K),componentIndex:g}),Ue("design")})},null,8,["document","page-index","disabled","messages"]),e.createVNode(Fr,{document:e.unref(h),datasets:Object.keys(t.datasets??{}),schemas:t.dataSchemas,disabled:e.unref(X),messages:e.unref(d),onChange:C[61]||(C[61]=g=>{e.unref(m).transaction(W=>{g?W.template.repeat=g:delete W.template.repeat})})},null,8,["document","datasets","schemas","disabled","messages"]),e.createElementVNode("details",lu,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(d).technicalDetails),1),e.createElementVNode("dl",ru,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(d).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(h).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(d).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(h).revision||e.unref(d).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(d).advancedTitle),1),e.createElementVNode("label",iu,[e.createTextVNode(e.toDisplayString(e.unref(d).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":C[62]||(C[62]=g=>e.isRef(M)?M.value=g:null),class:"mr-designer-json","aria-label":e.unref(d).json,disabled:t.readonly||e.unref(V),spellcheck:"false"},null,8,su),[[e.vModelText,e.unref(M)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(V),onClick:C[63]||(C[63]=(...g)=>e.unref(m).applyJson&&e.unref(m).applyJson(...g))},e.toDisplayString(e.unref(d).applyJson),9,cu)],64)),e.unref(S)?(e.openBlock(),e.createElementBlock("p",du,e.toDisplayString(e.unref(d).jsonPending),1)):e.createCommentVNode("",!0)],10,cc)])):e.createCommentVNode("",!0),e.unref(T)!=="tools"||e.unref(Se)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(d).previewTitle},[e.unref(y)?(e.openBlock(),e.createElementBlock("div",mu,e.toDisplayString(e.unref(y)),1)):e.createCommentVNode("",!0),e.unref(f).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",pu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f).errors,g=>(e.openBlock(),e.createElementBlock("li",{key:g.path},e.toDisplayString(g.path)+":"+e.toDisplayString(g.message),1))),128))])),e.unref(G)==="design"&&e.unref(f).ok?(e.openBlock(),e.createBlock(Ha,{key:2,document:e.unref(h),selection:e.unref(j),selections:e.unref(J).selections.value,locked:e.unref(J).locked,"active-column-index":e.unref(_),"page-index":e.unref(K),datasets:t.datasets,disabled:e.unref(X)||ie.value||e.unref(m).isToolPending("rules"),messages:e.unref(d),onSelect:e.unref(ce),onGeometry:e.unref(J).geometry,onColumn:e.unref(z).activate,onWidth:C[64]||(C[64]=(g,W)=>e.unref(m).setColumn(g,"widthMm",String(W)))},null,8,["document","selection","selections","locked","active-column-index","page-index","datasets","disabled","messages","onSelect","onGeometry","onColumn"])):e.unref(Q)&&e.unref(f).ok?(e.openBlock(),e.createBlock(e.unref(rt.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(Q),messages:{title:e.unref(d).previewTitle,columnDirectory:e.unref(d).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",fu,e.toDisplayString(e.unref(d).invalid),1))],8,uu)):e.createCommentVNode("",!0)],2)],40,Vs))}}),gu=Y._export_sfc(vu,[["__scopeId","data-v-dff2f8a5"]]),hu={cancel:"取消检查",cancelled:"本次检查已取消,没有替换上次结果。",progress:"组样例已检查",sampleConsentMissing:"请先确认当前数据已经脱敏",sampleNameMissing:"请为样例命名",sampleLimit:"最多配置 20 组验收样例",sampleNameDuplicate:"样例名称不能重复",sampleRowsLimit:"会话样例总行数不能超过 1000,请传入显式的小样例",namedFixtures:"命名验收样例",fixtureName:"样例名称",fixturePlaceholder:"例如:正常明细、空数据、跨页、超长文本",deidentified:"我确认当前样例数据已脱敏,仅用于本次会话验收",capture:"保存当前数据为样例",remove:"移除",fixtureHint:"显式样例逐组验收,不使用上方截断范围;每组总计最多 1000 行,最多 20 组。样例数据不会写入模板或草稿存储。",parameters:"样例参数(可选)",compare:"对比基线与草稿",dimensions:"页面尺寸",fieldsAdded:"新增字段引用",fieldsRemoved:"移除字段引用",baselinePreview:"基线 · 同一份样例",draftPreview:"草稿 · 同一份样例",closeCompare:"收起对比",stale:"输入或验收范围已变化,旧结果已失效,请重新运行检查。",scope:"上次实测范围",datasets:"个数据集",treeHint:"树形数据保留完整父子关系;20/100 作为本次总节点预算,超出请选全部或提供完整小样例。",title:"变更与验收",run:"运行检查",running:"检查中…",samples:"验收样例",none:"仅检查结构",first20:"每个数据集前 20 行",first100:"每个数据集前 100 行",all:"全部当前数据(总计 ≤1000 行)",changes:"模板变更",issues:"待处理项",results:"样例结果",noChanges:"与基线一致",noIssues:"本次检查未发现问题",empty:"选择验收样例后运行,检查字段映射、排版与输出能力。",baseline:"未提供上一版本,仅检查当前模板。",errors:"错误",warnings:"提示",locate:"定位",before:"修改前",after:"修改后",breaking:"影响兼容性",acknowledge:"已确认字段与结构变更",truncated:"变更较多,仅展示前 500 项;兼容检查仍包含全部变更。",pages:"页",rows:"行",checked:"检查结果对应本次样例,不代替服务端发布权限与全量数据校验。",categories:{metadata:"信息",structure:"结构",binding:"字段",calculation:"计算",format:"样式"},kinds:{added:"新增",removed:"删除",modified:"修改",moved:"调序"}},yu={recoveredMapping:"映射配置已恢复,请重新选择原 Excel 文件后核对;源文件及业务数据未暂存。",recoveredSheetMissing:"所选文件没有草稿所需的工作表,请重新选择原文件或放弃映射草稿。",tableMode:"传统整表",multiRegions:"多区域绑定",multiHint:"点击单元格选择起点,Shift 点击选择终点;每个动态区域选择一行原型。",addRegion:"创建区域",removeRegion:"删除区域",regionProperties:"当前区域",regionReady:"就绪",regionPending:"待补齐",regionError:"需修正",locateIssue:"定位并修正",nextDataset:"下一步:选择业务数据集",nextRowKey:"下一步:选择稳定业务主键",nextField:"下一步:补齐或修正逐列字段映射",nextRange:"下一步:检查原型范围及区域重叠",nextRegion:"下一步:在原始模板中选择一行并创建区域",nextHeader:"下一步:选择整行并标记表头和明细",nextFooter:"下一步:检查重复页尾范围",nextContract:"下一步:检查数据集契约和样例",dataContract:"数据集契约",inspectIssues:"查看待修正项",previousIssues:"上一组问题",nextIssues:"下一组问题",noCellSelection:"请先点击单元格,Shift 点击选择一行范围",limitRegions:"最多创建 128 个区域",applying:"正在确认模板…",regionCoordinates:"原型范围",regionMode:"填充方式",recordMode:"单记录",repeatMode:"纵向重复",recordHint:"接收零或一行数据,保留旁列静态内容;多行输入会明确报错。",repeatHint:"按数据行纵向扩展,下方内容自动顺延;旁列不能放置非空静态内容。",bindRegionHeader:"选区作为表头",noRegionHeader:"无区域表头",clearHeader:"清除区域表头",flowFooter:"重复页尾",flowFooterHint:"选择来源最后几行的完整列宽;为每页预留空间,避免明细覆盖。",bindFooter:"选区作为页尾",clearFooter:"清除重复页尾",concurrency:"业务并发字段",revisionField:"修订字段",sourceTokenField:"来源令牌字段",selectionCellLabel:"选择源单元格",searchFields:"搜索字段名称、编码或单位",fieldLimit:"候选最多显示 64 项;输入字段名筛选,已选映射始终保留。",restoreDraft:"恢复工具草稿",title:"Excel 业务绑定",intro:"保留模板版式,明确数据来源",upload:"选择 Excel 模板",replace:"更换文件",loading:"正在解析模板…",cancel:"取消解析",source:"原始模板",sourceHint:"点击行号选择,Shift 点击扩展;选择整行区域后标记用途。",sourceOnly:"来源样例仅供设计,应用时将全部替换为接口数据。",sheet:"工作表",dataset:"业务数据集",chooseDataset:"选择数据集契约",rowKey:"稳定业务主键",chooseRowKey:"选择业务主键",titleRegion:"标题",headerRegion:"多层表头",detailRegion:"样例明细",footerRegion:"静态尾页",optional:"可选",selectRegion:"标记选中行",clear:"清除",mapping:"逐列映射",coverage:"映射覆盖",physical:"Excel 列",business:"业务字段",chooseField:"选择已声明字段",selected:"已选行",previousRows:"上一组行",nextRows:"下一组行",previousColumns:"上一组列",nextColumns:"下一组列",rowStart:"预览起始行",columnStart:"预览起始列",apply:"校验并使用模板",check:"校验绑定",identity:"新模板",templateId:"模板标识",templateName:"模板名称",issues:"请先修正绑定",ready:"绑定校验通过",noSource:"导入 .xlsx,开始绑定业务数据",noContract:"请由接入方提供数据集字段契约,再配置业务绑定。",fieldType:"类型",precision:"位小数",sample:"契约样例",unnamed:"未标记",applied:"模板已生成,等待接入方确认",readonly:"当前只读",invalidFile:"请选择未加密的 .xlsx 文件",emptySelection:"请先在原始模板中选择行",footerHint:"静态尾页保留为独立页面,不随明细重复;不是每页页脚。",inspectWarning:"来源兼容性提示",session:"绑定会话可随草稿保存,再次传入即可恢复",decimals:"精确小数按原文本保留",selectionLabel:"选择源行",regionLegend:"区域用途",summary:"绑定摘要",stepSource:"选模板",stepRegions:"标区域",stepFields:"绑字段",stepValidate:"校验应用",errors:"项问题",sourceError:"模板解析失败",dimensions:"原始范围",mappedTo:"绑定到",sampleOnly:"仅契约样例",schemaOnly:"契约字段,不执行接口查询"},bu={restoreDraft:"恢复工具草稿",catalog:"规则与字段",searchFields:"搜索字段、类型或单位",useField:"使用此字段",shown:"显示",explanation:"计算解释",sourceValues:"源值",expression:"表达式",result:"结果",notChecked:"修改后请重新验算",nullReason:"空值依规则保留;空值传播与除零策略见计算边界。",sourceHint:"最多展示 5 条明细;分组和全量聚合以当前验算范围为准。",pending:"未应用配置",detail:"主从",matrix:"矩阵",matrixHierarchy:"层级维度与小计",matrixHierarchyHint:"分列展示行维度,生成合并列标题。小计直接统计原始样本;空值与空字符串分别保留。",matrixSort:"同级排序",matrixSourceOrder:"来源顺序",matrixAscending:"升序",matrixDescending:"降序",matrixPrefixSubtotal:"此级小计",matrixEmptyLabel:"空维度显示",tree:"树形",treeInput:"输入结构",treeFlat:"扁平父子表",treeNested:"嵌套子节点",treeId:"节点业务键",treeParent:"父节点键",treeChildren:"子节点数组字段",treeLabel:"层级标签列",treeIndent:"每级缩进 · mm",treeOrphan:"孤儿节点",treeAsRoot:"作为根节点",treeValues:"父级数值来源",treeSource:"保留来源值",treeLeaves:"按后代叶子聚合",treeRows:"最多节点",treeDepth:"最多层级",treeHint:"全量树展示与导出。总计只统计叶子,避免父子重复。应用将替换普通分组、主从、矩阵和行可见条件;可撤销恢复。",treeReadonly:"嵌套输入首版只读;扁平输入的结构键和派生父级聚合只读。",treeBudget:"树形样例最多 1000 个节点,请提供完整关系样例。",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",if:"条件取值",round:"四舍五入",abs:"绝对值",concat:"拼接文本",trim:"去除首尾空白",upper:"大写",lower:"小写",dateYear:"日期年份",dateMonth:"日期月份",dateDay:"日期日号",all:"全部满足",any:"任一满足",not:"条件不成立",conditionGroup:"条件组合",addCondition:"添加条件",compareField:"比较字段",compareValue:"固定值",between:"范围内(含边界)",contains:"包含文本",isNull:"为空值",isNotNull:"非空值",valueKind:"值语义",calendarDate:"日历日",upperBound:"上限",lowerBound:"下限",functionHelp:"函数用法",thenValue:"成立时",elseValue:"否则",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},ku={paramsTool:"查询参数",paramsDescription:"配置一次,预览与服务端使用同一份校验规则。",paramsDirectory:"参数目录",paramAdd:"添加参数",paramEmpty:"尚未配置查询参数",paramEmptyHint:"添加日期、厂别等条件,报表预览会自动生成查询面板。",paramField:"参数标识",paramLabel:"显示名称",paramType:"控件类型",paramRequired:"必填",paramPlaceholder:"输入提示",paramDefaultEnabled:"设置默认值",paramDefault:"默认值",paramMinimum:"最小值(含边界)",paramMaximum:"最大值(含边界)",paramMinLength:"最少字符数",paramMaxLength:"最多字符数",paramOptions:"静态下拉选项",paramOptionsMode:"选项来源",paramOptionsStatic:"固定选项",paramOptionsRemote:"远程搜索",paramOptionsSource:"来源标识",paramDependencyUnavailable:"已失效,请取消选择",paramDependencies:"上级条件",paramRemoteHint:"来源标识由项目的统一选项服务解析。上级条件变化会清空下级选择;模板不保存接口地址或账号。",paramOptionValue:"接口值",paramOptionLabel:"显示文字",paramOptionAdd:"添加选项",paramRemove:"删除参数",paramOptionRemove:"删除选项",paramMoveUp:"上移参数",paramMoveDown:"下移参数",paramApply:"校验并应用参数",paramRestore:"恢复参数草稿",paramPending:"尚未应用",paramReady:"规则有效",paramInvalid:"规则待修正",paramIssueCount:"待修正问题",paramLocateFirst:"定位首个问题",paramUnnamed:"未命名参数",paramRangeStart:"默认开始日期",paramRangeEnd:"默认结束日期",paramConflict:"模板参数已在其他操作中变更。请先恢复参数草稿,再继续编辑。",paramApplyFailed:"参数未应用,请检查模板校验信息。",paramRenameHint:"参数标识决定接口取数键。新增、删除或改名后,请同步检查接入方的数据查询;插件不会修改外部接口。",paramChanges:"接口参数键变更",paramAdded:"新增",paramRemoved:"移除",paramWire:"接口值格式",paramNoDefault:"未设置默认值",paramRangeHint:"两端均须填写,开始日期不能晚于结束日期;边界约束作用于整个范围。",paramText:"文本",paramNumber:"数字",paramDate:"日期",paramMonth:"月份",paramYear:"年份",paramDateRange:"日期范围",paramSelect:"下拉选择",paramMultiSelect:"多选",paramCascader:"层级选择",paramNumberRange:"数值范围",paramMinItems:"最少选择项数",paramMaxItems:"最多选择项数",paramChildAdd:"添加下级",paramTreeHint:"选择完整叶节点路径;同级选项值须唯一,最多 16 级。"},Eu={batchTitle:"批量生成",batchDescription:"每组参数独立生成;成功结果由接入方保存,当前页面仅保留回执。",batchAdd:"添加一组",batchDuplicate:"复制参数",batchDuplicateCompleted:"复制为新任务",batchRemove:"删除参数组",batchRun:"生成待处理",batchContinue:"继续未完成",batchRunning:"正在生成",batchRetry:"仅重试失败项",batchCancel:"取消剩余任务",batchCancelling:"正在取消…",batchPending:"待生成",batchCompleted:"已完成",batchCompletedHint:"此组已生成并保留回执;需修改参数或再次生成,请复制为新任务。",batchFailed:"失败",batchCancelled:"已取消",batchCase:"参数组",batchProgress:"本轮已结束 {completed}/{total} · 失败 {failed} · 取消 {cancelled}",batchInvalid:"请修正参数错误后再生成;本次未启动任何任务。",batchEmpty:"添加一组参数开始批量生成",batchNoMatches:"当前状态没有参数组",batchFilter:"按生成状态筛选",batchAll:"全部",batchNextFailure:"下一失败项",batchNoInstance:"已完成,接入方未返回可打开的实例标识。",batchOpen:"打开报表实例",batchLimit:"当前最多支持 {count} 组参数。",batchChanged:"参数定义或执行配置已变更,已请求取消当前批次,请核对后重新生成。",batchPages:"参数组分页",batchPrevious:"上一页",batchNext:"下一页",batchPage:"第 {page}/{pages} 页 · 共 {total} 组"},Su={publicationChanged:"发布修订与目录不一致,请刷新目录后重新查看",continueDraft:"继续编辑草稿",viewPublished:"查看发布版",draft:"草稿",published:"已发布",draftPending:"草稿待发布",retrySearch:"重试目录查询",retryOpen:"重试打开模板",retryCopy:"重试创建副本",openingTarget:"正在打开 {name}…",creatingTarget:"正在创建 {name} 的副本…",title:"模板库",subtitle:"按业务分类查找、打开或复制模板",search:"搜索名称、编号或标签",all:"全部模板",refresh:"刷新",open:"打开设计器",copy:"复制模板",empty:"没有匹配的模板",emptyHint:"调整关键词或分类后重试",loadMore:"下一页",previous:"上一页",page:"页",loading:"正在加载…",retry:"重试",revision:"修订",copyTitle:"复制为新模板",newId:"新模板编号",newName:"新模板名称",create:"创建副本",cancel:"取消",count:"项",missing:"模板不存在或已不可访问",stale:"目录返回了重复项或无效分页游标",invalid:"模板目录响应格式无效"},Nu={applyFirst:"请先应用当前配置或修正模板问题,再切换打印预览。",saveFailed:"模板尚未保存,请检查提示后重试。",title:"标识打印",preview:"打印预览",design:"设计标签",records:"预览记录",all:"全部记录",record:"记录序号",single:"单条预览",faces:"个版面",labels:"张标签",session:"当前会话模板",flow:"成品预览 · 按记录生成",designHint:"设计使用前 3 条样本 · 完整记录用于预览和打印",guide:"使用指引",help:"先选成品样式与显示字段即可使用。需要追加内容或自由排版时,进入设计标签。",size:"纸张与份数",bindings:"字段与码图",count:"条记录",invalidCopies:"份数待校验",sheet:"A4 标签拼版",sheetHint:"2 列 × 4 行,保持原尺寸",printHint:"先试打一张,使用同规格纸张与 100% 比例核对尺寸和扫码。",empty:"暂无可打印记录",save:"保存标签模板",layout:"成品样式",materialPreset:"物料卡",pairedPreset:"双版标识",warehousePreset:"仓储标签",fields:"显示字段",findField:"查找业务字段",noFields:"没有匹配的字段",fieldLimit:"最多显示 5 个字段,取消已选项后可继续选择。",removeField:"取消字段",fieldSearchHint:"每次显示前 30 项,可搜索完整字段目录。",brand:"标题与品牌",brandName:"主标题",brandTagline:"副标题(可选)",applyLayout:"更新标签",restoreConfiguration:"还原轻配置",choosePreset:"请选择成品样式后更新标签,或还原轻配置继续使用当前模板。",discardTitle:"保留标签修改",discardDescription:"标签设计或轻配置存在未保存的修改,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃并继续",reflowHint:"按所选样式重新排版,可在设计中撤销恢复。",customTemplate:"自定义模板",readyTemplate:"成品模板 · 可直接打印"},wu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-BKFcSbTh.cjs"))),Vu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-B7aeRg46.cjs"))),Cu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-BVuRn_OQ.cjs"))),xu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ParamEditor-BdFMa1CX.cjs"))),Mu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportBatchPanel-DVpmB7tG.cjs"))),Bu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportTemplateLibrary-DjjyZnZB.cjs"))),Du=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateOutlinePanel-D6TXg1aV.cjs"))),$u=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReusePanel-wrSbd_mr.cjs"))),Tu=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ReportLabelStudio-Drsm9sAS.cjs")));exports.COLUMN_VISUAL_MESSAGES=Pt;exports.ChartBindingInspector=Rt;exports.ColumnVisualEditor=Ft;exports.DEFAULT_RULE_EDITOR_MESSAGES=bu;exports.DESIGNER_GUIDE_MESSAGES=Tt;exports.EXCEL_BINDING_MESSAGES=yu;exports.ExcelBindingWizard=Vu;exports.LABEL_STUDIO_MESSAGES=Nu;exports.PARAM_EDITOR_MESSAGES=ku;exports.ParamEditor=xu;exports.REPORT_BATCH_MESSAGES=Eu;exports.ReportBatchPanel=Mu;exports.ReportLabelStudio=Tu;exports.ReportTemplateEditor=gu;exports.ReportTemplateLibrary=Bu;exports.RuleEditor=Cu;exports.TEMPLATE_EDITOR_MESSAGES=ue;exports.TEMPLATE_LIBRARY_MESSAGES=Su;exports.TEMPLATE_PRODUCT_MESSAGES=Lt;exports.TEMPLATE_RECOVERY_MESSAGES=At;exports.TEMPLATE_REVIEW_MESSAGES=hu;exports.TemplateOutlinePanel=Du;exports.TemplateReusePanel=$u;exports.TemplateReviewPanel=wu;exports.createTemplateDraftStorage=ps;exports.useTemplateDiscard=Gt;exports.useTemplateToolDraft=as;