@agile-team/mach-report 2.9.0 → 2.9.1

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.
package/dist/designer.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),fe=require("@agile-team/mach-report/vue"),T=require("@agile-team/mach-report"),H=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),ve=require("./style-UgIJSA1F.cjs"),Pe=96/25.4;function ye(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((s,l)=>s+l,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function le(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:ye(t)}}function pe(t,s){return s?t.template.pages[s.pageIndex]?.components[s.componentIndex]:void 0}function Fe(t,s="detail"){const l={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:s,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...l,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...l,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...l,kind:t,widthMm:48,heightMm:24,imageData:`data:image/svg+xml;charset=utf-8,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="180" height="90" viewBox="0 0 180 90"><rect width="180" height="90" rx="5" fill="#eff6ff"/><path d="m25 68 32-32 25 23 27-35 45 44" fill="none" stroke="#94b8e5" stroke-width="3"/><circle cx="45" cy="24" r="7" fill="#bfd5ef"/></svg>')}`}}function ge(t,s,l=!1){const r=Math.max(2,Math.min(s.widthMm,t.widthMm)),n=Math.max(2,Math.min(s.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(s.widthMm-r,t.leftMm)),topMm:Math.max(0,Math.min(s.heightMm-(l?2:n),t.topMm)),widthMm:r,heightMm:n}}function Ve(t,s){const l=t.widthMm;if(Object.assign(t,{leftMm:s.leftMm,topMm:s.topMm,widthMm:s.widthMm}),t.kind!=="list")t.heightMm=s.heightMm;else if(l>0&&s.widthMm!==l){const r=s.widthMm/l;t.columns.forEach(n=>{n.widthMm=Math.round(n.widthMm*r*100)/100}),t.widthMm=t.columns.reduce((n,v)=>n+v.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(n=>n.widthMm))}}function ze(t,s,l){if(s===l||!t.columns[s]||!t.columns[l])return!1;if(t.headerGrid){if(T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:v})=>(v.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const n=ce(t);n.forEach(v=>{v.splice(l,0,v.splice(s,1)[0])}),t.headerGrid=de(n,t.columns.map(v=>v.widthMm),t.headerGrid.rowHeightsMm??n.map(()=>8))}return t.columns.splice(l,0,t.columns.splice(s,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(r=>r.widthMm)),!0}function ce(t){if(!t.headerGrid)return[t.columns.map(l=>({text:l.header}))];const s=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:l,ri:r,ci:n}of T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)s[r][n]=l;return s}function de(t,s,l){const r=new Set;return{cells:t.map((v,d)=>v.flatMap((E,i)=>{if(r.has(`${d}:${i}`))return[];if(!E)return[null];for(let g=d;g<d+(E.rowSpan??1);g++)for(let k=i;k<i+(E.colSpan??1);k++)(g!==d||k!==i)&&r.add(`${g}:${k}`);return[E]})),colWidthsMm:s,rowHeightsMm:l}}function He(t){const s=ce(t),l=t.headerGrid?.rowHeightsMm??s.map(()=>8);s.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=de(s,t.columns.map(r=>r.widthMm),[8,...l])}function je(t,s,l,r){if(l>=r||l<0||r>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const n=ce(t),v=n[s];if(!v)throw new Error("表头行不存在。");const d=v.slice(l,r+1);if(d.some(i=>!i||(i.colSpan??1)!==1||(i.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const E=d[0];v[l]={...E,colSpan:r-l+1};for(let i=l+1;i<=r;i++)v[i]=null;t.headerGrid=de(n,t.columns.map(i=>i.widthMm),t.headerGrid?.rowHeightsMm??[8])}function Oe(t,s,l){if(!t.headerGrid)return;const n=T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:g,ci:k,cell:V})=>s>=g&&s<g+(V.rowSpan??1)&&l>=k&&l<k+(V.colSpan??1));if(!n)return;const v=ce(t),{ri:d,ci:E,cell:i}=n;for(let g=d;g<d+(i.rowSpan??1);g++)for(let k=E;k<E+(i.colSpan??1);k++){const V={...i,text:g===v.length-1?t.columns[k].header:i.text};delete V.colSpan,delete V.rowSpan,v[g][k]=V}t.headerGrid=de(v,t.columns.map(g=>g.widthMm),t.headerGrid.rowHeightsMm??v.map(()=>8))}function Ne(t,s,l){const r=t.filter(n=>n!==s).flatMap(n=>{const v=n[l],d=l==="leftMm"?n.widthMm:ye(n);return[v,v+d/2,v+d]});return[...new Set(r)].sort((n,v)=>n-v)}function Ue(t,s){if(!t.length)return;let l=0,r=t.length;for(;l<r;){const d=l+r>>>1;t[d]<s?l=d+1:r=d}const n=t[Math.max(0,l-1)],v=t[Math.min(t.length-1,l)];return Math.abs(n-s)<Math.abs(v-s)?n:v}function xe(t,s,l,r){let n=1/0,v={value:Math.round(t*2)/2};for(const d of[0,s/2,s]){const E=Ue(l,t+d);if(E===void 0)continue;const i=Math.abs(E-t-d);i<=r&&i<n&&(n=i,v={value:E-d,guide:E})}return v}function Je(t){let s;function l(r,n,v=!1){if(t.disabled()||r.button!==0)return;r.preventDefault(),r.stopPropagation(),s?.();const d=r.currentTarget.closest("[data-canvas-component]"),E=le(n),i=r.clientX,g=r.clientY;let k=E,V=0;const _=t.scale.value,x=d.parentElement;let p,f;const N=()=>{for(const[B,L]of[["x",p],["y",f]])x.style.setProperty(`--mr-canvas-guide-${B}-display`,L===void 0?"none":"block"),L!==void 0&&x.style.setProperty(`--mr-canvas-guide-${B}`,`${L*_}px`)},h=()=>{V=0,N(),d.style.left=`${k.leftMm*_}px`,d.style.top=`${k.topMm*_}px`,d.style.width=`${k.widthMm*_}px`,d.style.height=`${k.heightMm*_}px`},w={leftMm:Ne(t.page().components,n,"leftMm"),topMm:Ne(t.page().components,n,"topMm")},c=B=>{const L=(B.clientX-i)/_,O=(B.clientY-g)/_,o=xe(E.leftMm+L,E.widthMm,w.leftMm,5/_),z=xe(E.topMm+O,E.heightMm,w.topMm,5/_);p=v?void 0:o.guide,f=v?void 0:z.guide,k=ge(v?{...E,widthMm:Math.round((E.widthMm+L)*2)/2,heightMm:Math.round((E.heightMm+O)*2)/2}:{...E,leftMm:o.value,topMm:z.value},t.page(),n.kind==="list"),V||(V=requestAnimationFrame(h))},y=B=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",b),window.removeEventListener("keydown",C),V&&cancelAnimationFrame(V),k=B?k:E,p=void 0,f=void 0,h(),s=void 0,B&&JSON.stringify(k)!==JSON.stringify(E)&&t.commit(k)},m=()=>y(!0),b=()=>y(!1),C=B=>{B.key==="Escape"&&(B.preventDefault(),b())};window.addEventListener("pointermove",c),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",b),window.addEventListener("keydown",C),s=b}return e.watch(t.disabled,r=>{r&&s?.()}),e.watch(t.page,()=>s?.()),e.onBeforeUnmount(()=>s?.()),{start:l}}const Ke={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:"请先修正模板错误,再预览或保存。"},We={repeatPage:"每页重复",repeatNone:"不重复",repeatHeader:"页眉",repeatFooter:"页脚",textFormat:"文字样式",fontSize:"字号(pt)",fontBold:"加粗",textColor:"文字颜色",backgroundColor:"背景颜色",canvasGridLimited:"设计窗口仅显示前 2000 个单元格;最终预览与导出保留完整内容。",design:"设计",preview:"预览",componentSection:"组件",toolsSection:"工具",component:"组件",components:"组件目录",canvasHint:"点击选择 · 拖动移动 · 方向键微调 · Shift 加速 · Esc 取消",zoom:"缩放",sampleRows:"数据预览区域",resizeComponent:"调整组件尺寸",resizeColumn:"调整列宽",insertComponent:"添加组件",insertText:"文本",insertList:"明细表",insertImage:"图片",insertRect:"矩形",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,支持 PNG/JPEG/WebP/SVG",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",rulesNeedList:"请先在字段区域选择明细表。",undo:"撤销",redo:"重做",columnsSearch:"搜索列名或字段",columnsSelected:"已选列",selectVisible:"选择当前结果",clearSelection:"清除选择",noColumns:"没有匹配的列",batchBody:"批量正文对齐",batchHeader:"批量表头对齐",chooseAlignment:"选择对齐方式",discardTitle:"保留当前修改?",discardDescription:"当前包含未保存的属性或尚未应用的 JSON,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃修改并继续",jsonPending:"JSON 尚未应用。请先校验并应用,或撤销 JSON 修改后继续属性编辑与保存。",fieldsSection:"字段",templateSection:"模板",advancedSection:"高级",sectionsLabel:"模板设置分区",columnDirectory:"字段目录",columnProperties:"字段属性",selectColumn:"选择字段",clearSearch:"清除搜索",fieldsCount:"个字段",templateDetails:"模板信息",advancedTitle:"完整配置",advancedDescription:"用于批量迁移或配置复杂模板。应用前会校验;未应用的内容会受到草稿保护。",templateIdentity:"模板标识",templateRevision:"当前修订",readonly:"只读",ready:"可编辑",previewTitle:"实时预览",contentGroup:"内容",formatGroup:"格式",autoShort:"自动",previousColumn:"上一字段",nextColumn:"下一字段",closeDirectory:"关闭字段目录",technicalDetails:"标识与修订",fieldPosition:"当前字段",previewFieldDirectory:"定位字段"},ae={...Ke,...We},qe={class:"mr-canvas"},Xe={class:"mr-canvas-heading"},Ye={class:"mr-canvas-scroll"},Qe=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],Ze={class:"mr-canvas-table"},et={key:1,class:"mr-canvas-table-row is-header"},tt=["onPointerdown"],nt={key:2,class:"mr-canvas-placeholder"},ot=["aria-label","onPointerdown"],lt={key:1,class:"mr-canvas-static-grid"},at={key:0,class:"mr-canvas-grid-limit"},rt=["src"],it=["aria-label","onPointerdown"],st=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{},pageIndex:{},datasets:{},disabled:{type:Boolean},messages:{}},emits:["select","geometry","column","width"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(.8),d=e.computed(()=>v.value*Pe),E=e.computed(()=>l.document.template.pages[l.pageIndex]),i=Je({scale:d,page:()=>E.value,disabled:()=>l.disabled===!0,commit:h=>r("geometry",h)});function g(h){return l.selection?.pageIndex===l.pageIndex&&l.selection.componentIndex===h}function k(h){const w=E.value.components[h];return{left:`${w.leftMm*d.value}px`,top:`${w.topMm*d.value}px`,width:`${w.widthMm*d.value}px`,height:`${ye(w)*d.value}px`}}function V(h,w){const c=E.value.components[w];if(l.disabled||!g(w))return;const y={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},m=y[h.key];if(!m)return;h.preventDefault(),h.stopPropagation();const b=le(c),C=h.shiftKey?5:.5;b.leftMm+=m[0]*C,b.topMm+=m[1]*C,r("geometry",b)}function _(h){let w=0;return h.columns.map(c=>(w+=c.widthMm,w))}function x(h){return h.grid?T.resolveGridLayout(h.grid,h.widthMm,h.heightMm).cells.slice(0,2e3):[]}function p(h){return h.headerGrid?T.resolveGridLayout(h.headerGrid,h.widthMm,h.headerGrid.rowHeightsMm?.reduce((w,c)=>w+c,0)??h.headerGrid.cells.length*8).cells:[]}let f;e.watch(()=>l.disabled,h=>{h&&f?.()}),e.watch(()=>l.document,()=>f?.()),e.onBeforeUnmount(()=>f?.());function N(h,w,c){if(l.disabled||h.button!==0)return;h.preventDefault(),h.stopPropagation(),f?.();const y=h.clientX,m=w.columns[c].widthMm;let b=m;const C=h.currentTarget,B=S=>{b=Math.max(2,Math.round((m+(S.clientX-y)/d.value)*2)/2),C.style.transform=`translateX(${(b-m)*d.value}px)`},L=()=>{window.removeEventListener("pointermove",B),window.removeEventListener("pointerup",O),window.removeEventListener("pointercancel",o),window.removeEventListener("keydown",z),C.style.transform="",f=void 0},O=()=>{L(),b!==m&&r("width",c,b)},o=()=>L(),z=S=>{S.key==="Escape"&&(S.preventDefault(),o())};window.addEventListener("pointermove",B),window.addEventListener("pointerup",O),window.addEventListener("pointercancel",o),window.addEventListener("keydown",z),f=o}return(h,w)=>(e.openBlock(),e.createElementBlock("div",qe,[e.createElementVNode("div",Xe,[e.createElementVNode("span",null,e.toDisplayString(n.value.canvasHint),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.zoom),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[0]||(w[0]=c=>v.value=c)},[...w[1]||(w[1]=[e.createElementVNode("option",{value:.5},"50%",-1),e.createElementVNode("option",{value:.8},"80%",-1),e.createElementVNode("option",{value:1},"100%",-1),e.createElementVNode("option",{value:1.25},"125%",-1)])],512),[[e.vModelSelect,v.value,void 0,{number:!0}]])])]),e.createElementVNode("div",Ye,[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${E.value.widthMm*d.value}px`,height:`${E.value.heightMm*d.value}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value.components,(c,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:e.normalizeClass(["mr-canvas-component",{"is-selected":g(y)}]),"data-canvas-component":y,style:e.normalizeStyle(k(y)),role:"button","aria-label":`${n.value.component} ${y+1} ${c.kind}`,"aria-pressed":g(y),tabindex:g(y)?0:-1,onFocus:m=>r("select",{pageIndex:t.pageIndex,componentIndex:y}),onPointerdown:m=>{r("select",{pageIndex:t.pageIndex,componentIndex:y}),e.unref(i).start(m,c)},onClick:m=>r("select",{pageIndex:t.pageIndex,componentIndex:y}),onKeydown:m=>V(m,y)},[c.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Ze,[c.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(c.headerGrid.rowHeightsMm?.reduce((m,b)=>m+b,0)??c.headerGrid.cells.length*8)*d.value}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p(c),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({left:`${m.xMm*d.value}px`,top:`${m.yMm*d.value}px`,width:`${m.widthMm*d.value}px`,height:`${m.heightMm*d.value}px`,textAlign:m.cell.style?.align??"center"})},e.toDisplayString(m.cell.text),5))),128))],4)):(e.openBlock(),e.createElementBlock("div",et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.columns,(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({width:`${m.widthMm*d.value}px`,opacity:m.hidden?.35:1}),onPointerdown:e.withModifiers(C=>{r("select",{pageIndex:t.pageIndex,componentIndex:y}),r("column",b)},["stop"])},e.toDisplayString(m.header),45,tt))),128))])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList((t.datasets?.[c.dataset]??[]).slice(0,3),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.columns,(C,B)=>(e.openBlock(),e.createElementBlock("div",{key:B,style:e.normalizeStyle({width:`${C.widthMm*d.value}px`,opacity:C.hidden?.35:1})},e.toDisplayString(m[C.field]??"—"),5))),128))]))),128)),t.datasets?.[c.dataset]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",nt,e.toDisplayString(c.dataset)+" · "+e.toDisplayString(n.value.sampleRows),1))]),g(y)&&!t.disabled?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_(c),(m,b)=>(e.openBlock(),e.createElementBlock("span",{key:b,class:"mr-canvas-column-handle","aria-label":`${n.value.resizeColumn} ${c.columns[b]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${m*d.value}px`}),onPointerdown:C=>N(C,c,b)},null,44,ot))),128)):e.createCommentVNode("",!0)],64)):c.grid?(e.openBlock(),e.createElementBlock("div",lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x(c),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({left:`${m.xMm*d.value}px`,top:`${m.yMm*d.value}px`,width:`${m.widthMm*d.value}px`,height:`${m.heightMm*d.value}px`,backgroundColor:m.cell.style?.backgroundColor,color:m.cell.style?.color,fontWeight:m.cell.style?.bold?"700":"400",fontSize:`${e.unref(ve.resolveFontSize)(m.cell.style).fontSizePx*v.value}px`,textAlign:m.cell.style?.align??"left"})},e.toDisplayString(m.cell.text),5))),128)),c.grid.cells.reduce((m,b)=>m+b.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",at,e.toDisplayString(n.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):c.imageData?(e.openBlock(),e.createElementBlock("img",{key:2,src:c.imageData,alt:"",draggable:"false"},null,8,rt)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mr-canvas-content",style:e.normalizeStyle({color:c.style?.color,backgroundColor:c.style?.backgroundColor,fontWeight:c.style?.bold?"700":"400",fontSize:`${e.unref(ve.resolveFontSize)(c.style).fontSizePx*v.value}px`,textAlign:c.style?.align})},e.toDisplayString(c.text??c.fallbackText??(c.kind==="rect"?"":c.kind)),5)),g(y)&&!t.disabled?(e.openBlock(),e.createElementBlock("span",{key:4,class:"mr-canvas-resize","aria-label":n.value.resizeComponent,role:"separator",onPointerdown:m=>e.unref(i).start(m,c,!0)},null,40,it)):e.createCommentVNode("",!0)],46,Qe))),128))],4)])]))}}),ct=H._export_sfc(st,[["__scopeId","data-v-0b2669dc"]]),dt=["aria-label"],ut=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],mt={key:0},pt={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},ft={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},vt={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},gt={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},ht={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},yt=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:s}){const l=t,r=s,n=()=>l.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function v(d,E){if(!["ArrowLeft","ArrowRight","Home","End"].includes(d.key))return;d.preventDefault();const g=n(),k=g.indexOf(E),V=d.key==="Home"?0:d.key==="End"?g.length-1:(k+(d.key==="ArrowRight"?1:-1)+g.length)%g.length;r("update:modelValue",g[V]);const _=d.currentTarget.parentElement;await e.nextTick(),_?.querySelector(`[data-align="${g[V]}"]`)?.focus()}return(d,E)=>(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(),i=>(e.openBlock(),e.createElementBlock("button",{key:i,type:"button",role:"radio","data-align":i,"aria-label":t.labels[i],title:t.labels[i],"aria-checked":t.modelValue===i,tabindex:t.modelValue===i?0:-1,onClick:g=>r("update:modelValue",i),onKeydown:g=>v(g,i)},[i==="auto"?(e.openBlock(),e.createElementBlock("span",mt,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",pt,[i==="left"?(e.openBlock(),e.createElementBlock("path",ft)):i==="center"?(e.openBlock(),e.createElementBlock("path",vt)):i==="right"?(e.openBlock(),e.createElementBlock("path",gt)):(e.openBlock(),e.createElementBlock("path",ht))]))],40,ut))),128))],8,dt))}}),he=H._export_sfc(yt,[["__scopeId","data-v-c85770c4"]]),kt=["disabled"],bt={class:"mr-component-dimensions"},Et=["min","value","onChange"],wt={key:0},St=["value"],Vt={value:""},Nt={value:"header"},xt={value:"footer"},Ct={key:1},Bt=["value"],Mt=["value"],Dt={class:"mr-component-upload"},_t=["aria-label"],Tt={key:0,role:"alert"},$t={key:3,class:"mr-component-type"},Rt={class:"mr-component-dimensions"},It=["value"],Lt=["checked"],At={class:"mr-component-dimensions"},Gt=["value"],Pt=["value"],Ft={key:4},zt=["value"],Ht=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["geometry","patch"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(""),d=["leftMm","topMm","widthMm","heightMm"],E=e.computed(()=>[n.value.leftPosition,n.value.topPosition,n.value.componentWidth,n.value.componentHeight]);function i(x,p){const f=Number(p.target.value);Number.isFinite(f)&&r("geometry",{...le(l.component),[x]:f})}function g(x,p){if(l.component.kind==="list")return;const f={...l.component.style,[x]:p};x==="fontSize"&&delete f.fontSizePx,r("patch",{style:f})}const k=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));function V(x){return x.target.value}async function _(x){const p=x.target,f=p.files?.[0];if(!f)return;v.value="";const N=l.component;try{if(f.size>4*1024*1024||!["image/png","image/jpeg","image/webp","image/svg+xml"].includes(f.type))throw new Error(n.value.imageBudget);const h=new FileReader,w=await new Promise((c,y)=>{h.onload=()=>c(String(h.result)),h.onerror=()=>y(h.error),h.readAsDataURL(f)});!l.disabled&&l.component===N&&r("patch",{imageData:w})}catch(h){v.value=h instanceof Error?h.message:String(h)}finally{p.value=""}}return(x,p)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("h3",null,e.toDisplayString(n.value.positionGroup),1),e.createElementVNode("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.filter(f=>t.component.kind!=="list"||f!=="heightMm"),(f,N)=>(e.openBlock(),e.createElementBlock("label",{key:f},[e.createTextVNode(e.toDisplayString(E.value[N]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:f==="widthMm"||f==="heightMm"?2:0,value:e.unref(le)(t.component)[f],onChange:h=>i(f,h)},null,40,Et)]))),128))]),t.component.kind!=="list"?(e.openBlock(),e.createElementBlock("label",wt,[e.createTextVNode(e.toDisplayString(n.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",onChange:p[0]||(p[0]=f=>r("patch",{pageAnchor:V(f)||void 0}))},[e.createElementVNode("option",Vt,e.toDisplayString(n.value.repeatNone),1),e.createElementVNode("option",Nt,e.toDisplayString(n.value.repeatHeader),1),e.createElementVNode("option",xt,e.toDisplayString(n.value.repeatFooter),1)],40,St)])):e.createCommentVNode("",!0),e.createElementVNode("h3",null,e.toDisplayString(n.value.componentContent),1),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("label",Ct,[e.createTextVNode(e.toDisplayString(n.value.componentText),1),e.createElementVNode("textarea",{rows:"4",value:t.component.text,onChange:p[1]||(p[1]=f=>r("patch",{text:V(f)}))},null,40,Bt)])):e.createCommentVNode("",!0),t.component.kind==="image"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:p[2]||(p[2]=f=>r("patch",{imageData:V(f)}))},null,40,Mt)]),e.createElementVNode("label",Dt,[e.createTextVNode(e.toDisplayString(n.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg,image/webp,image/svg+xml","aria-label":n.value.imageUpload,onChange:_},null,40,_t)]),v.value?(e.openBlock(),e.createElementBlock("p",Tt,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",$t,[e.createElementVNode("h3",null,e.toDisplayString(n.value.textFormat),1),e.createElementVNode("div",Rt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(ve.resolveFontSize)(t.component.style).fontSizePt,onChange:p[3]||(p[3]=f=>g("fontSize",Number(V(f))))},null,40,It)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:p[4]||(p[4]=f=>g("bold",f.target.checked))},null,40,Lt)])]),e.createVNode(he,{"model-value":t.component.style?.align??"left",label:n.value.bodyAlign,labels:k.value,"auto-label":n.value.autoShort,"onUpdate:modelValue":p[5]||(p[5]=f=>g("align",f))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",At,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:p[6]||(p[6]=f=>g("color",V(f)))},null,40,Gt)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:p[7]||(p[7]=f=>g("backgroundColor",V(f)))},null,40,Pt)])])])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",Ft,[e.createTextVNode(e.toDisplayString(n.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:p[8]||(p[8]=f=>r("patch",{dataset:V(f)}))},null,40,zt)])):e.createCommentVNode("",!0)],8,kt))}}),jt=H._export_sfc(Ht,[["__scopeId","data-v-2dcbd9cb"]]),Ot={class:"mr-header-editor"},Ut=["disabled"],Jt=["value"],Kt=["value"],Wt=["value"],qt=["disabled"],Xt=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(0),d=e.ref(0),E=e.ref(Math.min(1,l.list.columns.length-1));return e.watch(()=>l.list.columns.length,i=>{d.value=Math.min(d.value,i-1),E.value=Math.min(E.value,i-1)}),(i,g)=>(e.openBlock(),e.createElementBlock("details",Ot,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(n.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[0]||(g[0]=k=>v.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,k=>(e.openBlock(),e.createElementBlock("option",{key:k,value:k-1},e.toDisplayString(k),9,Jt))),128))],512),[[e.vModelSelect,v.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[1]||(g[1]=k=>d.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(k,V)=>(e.openBlock(),e.createElementBlock("option",{key:V,value:V},e.toDisplayString(V+1)+" · "+e.toDisplayString(k.header),9,Kt))),128))],512),[[e.vModelSelect,d.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[2]||(g[2]=k=>E.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(k,V)=>(e.openBlock(),e.createElementBlock("option",{key:V,value:V},e.toDisplayString(V+1)+" · "+e.toDisplayString(k.header),9,Wt))),128))],512),[[e.vModelSelect,E.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:g[3]||(g[3]=k=>r("command",{action:"add",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:d.value>=E.value,onClick:g[4]||(g[4]=k=>r("command",{action:"merge",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.mergeHeader),9,qt),e.createElementVNode("button",{type:"button",onClick:g[5]||(g[5]=k=>r("command",{action:"split",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.splitHeader),1)])],8,Ut)]))}}),Yt=H._export_sfc(Xt,[["__scopeId","data-v-acd607ef"]]);function Qt(t,s){const l=e.ref("preview"),r=e.ref(),n=e.ref(0),v=e.computed(()=>pe(t.value,r.value));e.watch(t,()=>{v.value||(r.value=void 0),t.value.template.pages[n.value]||(n.value=0)});function d(x){r.value=x,n.value=x.pageIndex}function E(x){const p=r.value;return p?s(f=>{const N=pe(f,p);N&&x(N,f)}):!1}function i(x){E((p,f)=>{const N=f.template.pages[r.value.pageIndex];Ve(p,ge(x,N,p.kind==="list"))})}function g(x){let p=-1;const f=n.value;s(N=>{const h=N.template.pages[f].components;h.push(Fe(x)),p=h.length-1})&&d({pageIndex:f,componentIndex:p})}function k(){const x=r.value;x&&s(p=>{p.template.pages[x.pageIndex].components.splice(x.componentIndex,1)})&&(r.value=void 0)}function V(){const x=r.value;if(!x)return;let p=-1;s(f=>{const N=f.template.pages[x.pageIndex],h=structuredClone(pe(f,x)),w=le(h);w.leftMm+=4,w.topMm+=4,Ve(h,ge(w,N,h.kind==="list")),h.kind==="list"?delete h.id:(delete h.nid,delete h.rkey),N.components.push(h),p=N.components.length-1})&&d({pageIndex:x.pageIndex,componentIndex:p})}function _(x){const p=r.value;if(!p)return;const f=p.componentIndex+x;t.value.template.pages[p.pageIndex]?.components[f]&&s(N=>{const h=N.template.pages[p.pageIndex].components;h.splice(f,0,h.splice(p.componentIndex,1)[0])})&&d({pageIndex:p.pageIndex,componentIndex:f})}return{mode:l,selection:r,pageIndex:n,active:v,select:d,mutate:E,geometry:i,insert:g,remove:k,duplicate:V,reorder:_}}function Zt(t,s,l){const{draft:r,lists:n,selected:v,activeList:d,blocked:E,jsonPending:i,error:g}=t,{section:k,activeIndex:V}=s,_=Qt(r,t.transaction),{mode:x,selection:p,pageIndex:f,active:N}=_,h=e.ref("excel"),w=e.ref(new Set);e.watch([k,h],()=>{k.value==="tools"&&(w.value=new Set([...w.value,h.value]))}),e.watch(p,S=>{if(!S)return;const M=n.value.findIndex(D=>D.pageIndex===S.pageIndex&&D.componentIndex===S.componentIndex);M>=0&&(v.value=M)});const c=e.computed(()=>t.editingReadonly.value||E.value||i.value),y=e.computed(()=>l()?.[d.value?.dataset??""]);function m(S){x.value=S,k.value==="tools"&&(k.value=S==="design"?"component":"fields")}function b(S){if(!r.value.template.pages[S.pageIndex]?.components[S.componentIndex])return;if(_.select(S),r.value.template.pages[S.pageIndex]?.components[S.componentIndex]?.kind==="list"){const D=n.value.findIndex($=>$.pageIndex===S.pageIndex&&$.componentIndex===S.componentIndex);D>=0&&(v.value=D),k.value="fields"}else k.value="component"}function C(S){const M=S.target;M.value&&(_.insert(M.value),x.value="design",k.value="component",M.value="")}function B(S){_.mutate((M,D)=>{if(M.kind!=="list"&&S.pageAnchor!==M.pageAnchor){const P=D.template.pages[p.value.pageIndex];S.pageAnchor==="header"&&(M.topMm=P.marginTopMm??0),S.pageAnchor==="footer"&&(M.topMm=Math.max(0,P.heightMm-(P.marginBottomMm??0)-M.heightMm))}const $=M;for(const[P,q]of Object.entries(S))q===void 0?delete $[P]:$[P]=q})}function L(S){const M=n.value[v.value];M&&t.transaction(D=>{D.template.pages[M.pageIndex].components[M.componentIndex]=S})}function O(S){const M=d.value;if(!M)return;const D=JSON.parse(JSON.stringify(M));try{ze(D,V.value,V.value+S)&&(L(D),s.activate(V.value+S))}catch($){g.value=$ instanceof Error?$.message:String($)}}function o(S){const M=n.value[v.value];M&&t.transaction(D=>{const $=D.template.pages[M.pageIndex].components[M.componentIndex];$?.kind==="list"&&(S.action==="add"?He($):S.action==="merge"?je($,S.row,S.first,S.last):Oe($,S.row,S.first))})}function z(S){const M=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(S.path??""),D=S.pageIndex??(M?Number(M[1]):void 0),$=S.componentIndex??(M?Number(M[2]):void 0);if(!(D===void 0||$===void 0)&&(x.value="design",b({pageIndex:D,componentIndex:$}),S.field)){const P=d.value?.columns.findIndex(q=>q.field===S.field);P!==void 0&&P>=0&&s.activate(P)}}return{mode:x,setMode:m,canvasSelection:p,canvasPage:f,canvasActive:N,tool:h,visitedTools:w,editDisabled:c,dataSchema:y,chooseCanvas:b,insertComponent:C,patchCanvas:B,changeList:L,moveColumn:O,headerCommand:o,locateReview:z,canvas:_}}function en(t,s,l){if(!t.length)return;const r=Math.max(0,t.indexOf(s)),v={ArrowDown:Math.min(r+1,t.length-1),ArrowUp:Math.max(r-1,0),Home:0,End:t.length-1}[l];return v===void 0?void 0:t[v]}function tn(t,s,l){const r=e.ref(!1),n=e.ref(t.activeIndex.value),v=e.ref(null),d=e.ref(null),E=e.ref(null),i=e.ref(null);function g(w=!1){const c=i.value,y=c?.querySelector(`button[data-column-index="${n.value}"]`);if(!c||!y)return;w&&y.focus({preventScroll:!0});const m=c.getBoundingClientRect(),b=y.getBoundingClientRect(),C=m.top+c.clientTop,B=C+c.clientHeight;b.top<C?c.scrollTop+=b.top-C:b.bottom>B&&(c.scrollTop+=b.bottom-B)}async function k(w=!1){r.value&&(r.value=!1,w&&(await e.nextTick(),v.value?.focus({preventScroll:!0})))}async function V(){if(r.value)return k(!0);const w=l.value.map(c=>c.index);n.value=w.includes(t.activeIndex.value)?t.activeIndex.value:w[0]??-1,r.value=!0,await e.nextTick(),E.value?.focus({preventScroll:!0}),g()}function _(w){t.activate(w),k(!0)}function x(w){r.value&&(w.preventDefault(),w.stopPropagation(),k(!0))}async function p(w){const c=en(l.value.map(y=>y.index),n.value,w.key);c!==void 0&&(n.value=c,w.preventDefault(),await e.nextTick(),g(!0))}async function f(w){if(!["ArrowDown","ArrowUp","Enter"].includes(w.key))return;w.preventDefault(),w.stopPropagation();const c=l.value.map(y=>y.index);if(c.length){if(w.key==="Enter"){c.includes(n.value)&&_(n.value);return}w.key==="ArrowUp"&&(n.value=c.at(-1)),await e.nextTick(),g(!0)}}function N(w){const c=w.target;!r.value||d.value?.contains(c)||v.value?.contains(c)||k()}function h(w){const c=w.relatedTarget;!c||d.value?.contains(c)||v.value?.contains(c)||k()}return e.watch(l,w=>{w.some(c=>c.index===n.value)||(n.value=w[0]?.index??-1)}),e.watch(s,()=>{k()}),e.onMounted(()=>document.addEventListener("pointerdown",N)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",N)),{open:r,cursor:n,trigger:v,panel:d,search:E,list:i,toggle:V,close:k,choose:_,escape:x,navigate:p,searchKeydown:f,leave:h}}function nn(t,s,l,r){const n=e.ref(0),v=e.ref(""),d=e.ref([]),E=e.computed(()=>t.value.template.pages.flatMap((c,y)=>c.components.flatMap((m,b)=>m.kind==="list"?[{component:m,pageIndex:y,componentIndex:b}]:[]))),i=e.computed(()=>E.value[n.value]?.component),g=e.computed(()=>{const c=i.value;if(!c)return[];const y=c.columns.map(m=>m.headerStyle?.align??m.headerAlign??c.headerStyle?.align??c.headerAlign??m.style?.align??"center");if(c.headerGrid&&s())for(const m of T.resolveGridLayout(c.headerGrid,c.widthMm,100).cells)for(let b=m.ci;b<m.ci+(m.cell.colSpan??1);b++)y[b]=m.cell.style?.align??"left";return y}),k=e.computed(()=>{const c=v.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(i.value?.columns??[]).flatMap((y,m)=>{const b=`${y.header} ${y.field}`.toLocaleLowerCase();return c.every(C=>b.includes(C))?[{column:y,index:m}]:[]})});function V(c,y){d.value=y?[...new Set([...d.value,c])]:d.value.filter(m=>m!==c)}function _(c){for(const y of k.value)V(y.index,c)}function x(){d.value=[]}function p(c,y,m){if(!l())return;const b=i.value?.columns[c];b&&(y==="hidden"&&m===!0&&!i.value?.columns.some((C,B)=>B!==c&&!C.hidden)||(Object.assign(b,{[y]:y==="widthMm"?Number(m):m}),y==="header"&&N(c,String(m)),y==="headerAlign"&&h(c,m),y==="widthMm"&&f(),r()))}function f(){const c=E.value[n.value];if(!c)return;const y=c.component,m=t.value.template.pages[c.pageIndex],b=y.columns.map(C=>C.widthMm);y.headerGrid&&(y.headerGrid.colWidthsMm=b),m.layout==="wide"&&b.every(C=>Number.isFinite(C)&&C>0)&&(y.widthMm=b.reduce((C,B)=>C+B,0),m.widthMm=Math.max(...m.components.map(C=>C.leftMm+C.widthMm))+(m.marginRightMm??0))}function N(c,y){const m=i.value;if(!m?.headerGrid)return;const C=T.resolveGridLayout(m.headerGrid,m.widthMm,100).cells.filter(({ci:B,cell:L})=>B<=c&&B+(L.colSpan??1)>c).slice(-1)[0];C&&(Object.assign(C.cell,{text:y,rawText:y,value:y}),m.columns.slice(C.ci,C.ci+(C.cell.colSpan??1)).forEach(B=>{B.header=y}))}function h(c,y){const m=i.value,b=m?.columns[c];if(b?.headerStyle?.align!==void 0&&(b.headerStyle={...b.headerStyle,align:y}),!m?.headerGrid)return;const B=T.resolveGridLayout(m.headerGrid,m.widthMm,100).cells.filter(({ci:L,cell:O})=>L<=c&&L+(O.colSpan??1)>c).slice(-1)[0];B&&(B.cell.style={...B.cell.style,align:y},m.columns.slice(B.ci,B.ci+(B.cell.colSpan??1)).forEach(L=>{L.headerAlign=y,L.headerStyle?.align!==void 0&&(L.headerStyle={...L.headerStyle,align:y})}))}function w(c,y){if(!(!l()||c==="headerAlign"&&y==="auto")){for(const m of d.value){const b=i.value?.columns[m];b&&(Object.assign(b,{[c]:y}),c==="headerAlign"&&h(m,y))}r()}}return{selected:n,query:v,selectedColumns:d,lists:E,activeList:i,headerAlignments:g,visibleColumns:k,toggleColumn:V,selectVisible:_,clearSelection:x,setColumn:p,alignColumns:w}}function ee(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function on(t,s,l=!1){const r={kind:"snapshot",value:s};if(l)return r;let n=0;const v=Math.min(t.length,s.length);for(;n<v&&t.charCodeAt(n)===s.charCodeAt(n);)n++;let d=t.length,E=s.length;for(;d>n&&E>n&&t.charCodeAt(d-1)===s.charCodeAt(E-1);)d--,E--;const i={kind:"patch",start:n,removed:t.slice(n,d),inserted:s.slice(n,E)};return ee(i)<ee(r)?i:r}function se(t,s,l=!1){if(s.kind==="snapshot")return s.value;const r=l?s.inserted:s.removed,n=l?s.removed:s.inserted;return t.slice(0,s.start)+n+t.slice(s.start+r.length)}function ln(t,s={entries:100,bytes:16*1024*1024}){if(![s.entries,s.bytes].every(p=>Number.isSafeInteger(p)&&p>0))throw new RangeError("History budgets must be positive safe integers");const l=e.shallowRef([{kind:"snapshot",value:t}]),r=e.ref(0),n=e.ref(t),v=e.computed(()=>r.value>0),d=e.computed(()=>r.value+1<l.value.length),E=e.computed(()=>n.value),i=e.computed(()=>l.value.reduce((p,f)=>p+ee(f),0));function g(p){l.value=[{kind:"snapshot",value:p}],r.value=0,n.value=p}function k(p){let f=p;for(;f>0&&l.value[f].kind!=="snapshot";)f--;let N="";for(;f<=p;f++)N=se(N,l.value[f]);return N}function V(p){let f=p.reduce((N,h)=>N+ee(h),0);for(;p.length>1&&(p.length>s.entries||f>s.bytes);){const N=p[0],h=p[1],w={kind:"snapshot",value:se(N.value,h)};f+=ee(w)-ee(N)-ee(h),p.splice(0,2,w)}return p}function _(p){if(n.value===p)return;const f=l.value.slice(0,r.value+1);f.push(on(n.value,p,f.length%20===0)),l.value=V(f),r.value=l.value.length-1,n.value=p}function x(p){if(p<0?!v.value:!d.value)return;const f=l.value[r.value];return p<0&&f.kind==="patch"?n.value=se(n.value,f,!0):p>0?n.value=se(n.value,l.value[r.value+1]):n.value=k(r.value-1),r.value+=p,n.value}return{canUndo:v,canRedo:d,current:E,retainedBytes:i,reset:g,record:_,move:x}}function an(t){const s=e.shallowRef(null),l=e.ref(!1);let r,n=0;function v(i){r?.(i),r=void 0,s.value=null}function d(){n++,v(!1),l.value=!1}async function E(i){d();const g=n,k=t();l.value=!0;try{const V=await new Promise((_,x)=>{if(r=_,!k){s.value=i;return}Promise.resolve().then(()=>n===g?k(i):!1).then(p=>{n===g&&v(p===!0)},p=>{n===g&&(r=void 0,s.value=null,x(p))})});return n===g&&V===!0}finally{n===g&&(l.value=!1)}}return e.onBeforeUnmount(d),{confirmation:s,pending:l,decide:v,request:E,cancel:d}}function rn(t,s){const l=e.ref(T.parseReportTemplate(t.modelValue)),r=e.ref(T.serializeReportTemplate(l.value)),n=e.ref(T.serializeReportTemplate(l.value)),v=e.ref(""),d=e.ref(!1),E=e.computed(()=>({...ae,...t.messages})),i=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}}));fe.provideMachReportConfig({get defaults(){return i.value}});let g,k=0;const V=e.computed(()=>T.validateReportTemplateDocument(l.value)),_=e.computed(()=>{try{return T.serializeReportTemplate(l.value)!==r.value}catch{return!0}}),x=e.ref(n.value),p=e.computed(()=>n.value!==x.value),f=e.computed(()=>_.value||n.value!==x.value),N=()=>JSON.stringify({document:l.value,json:n.value,appliedJson:x.value}),h=ln(N()),w=an(()=>t.beforeDiscard),c=e.computed(()=>d.value||w.pending.value),y=()=>!t.readonly&&!c.value&&!p.value,m=nn(l,()=>V.value.ok,y,$),{selected:b,lists:C,activeList:B,headerAlignments:L,setColumn:O}=m;e.watch(b,()=>m.clearSelection());const o=e.computed(()=>V.value.ok?fe.createLocalFetcher({draft:{template:l.value.template,datasets:t.datasets??{},params:[]}}):void 0);function z(){k++,g?.abort(),g=void 0,d.value=!1}let S=0;async function M(R="replace",I){if(!f.value)return!0;const G=N();try{return await w.request({reason:R,document:JSON.parse(JSON.stringify(l.value)),replacement:I?T.parseReportTemplate(I):void 0,pendingLocalChanges:!0})&&G===N()}catch(U){return v.value=U instanceof Error?U.message:String(U),!1}}function D(R){z(),l.value=R,r.value=T.serializeReportTemplate(R),n.value=r.value,x.value=n.value,v.value="",b.value=0,m.clearSelection(),h.reset(N())}e.watch(()=>t.modelValue,async R=>{let I;try{I=T.parseReportTemplate(R)}catch(U){v.value=U instanceof Error?U.message:String(U);return}try{if(T.serializeReportTemplate(I)===T.serializeReportTemplate(l.value))return}catch{}const G=++S;if(z(),!await M("replace",I)){G===S&&V.value.ok&&s("update:modelValue",T.parseReportTemplate(l.value));return}G===S&&D(I)}),e.onBeforeUnmount(()=>{S++,z()});function $(){w.cancel(),v.value="",V.value.ok&&(n.value=T.serializeReportTemplate(l.value),x.value=n.value,s("update:modelValue",T.parseReportTemplate(l.value))),h.record(N())}function P(R){if(!y())return!1;try{const I=T.parseReportTemplate(l.value);R(I);const G=T.validateReportTemplateDocument(I);if(!G.ok)throw new Error(G.errors.map(U=>`${U.path}: ${U.message}`).join(`
2
- `));return l.value=I,$(),!0}catch(I){return v.value=I instanceof Error?I.message:String(I),!1}}async function q(R){if(!y())return!1;try{const I=T.parseReportTemplate(R);return!await M("replace",I)||!y()?!1:(l.value=I,b.value=0,m.clearSelection(),$(),!0)}catch(I){return v.value=I instanceof Error?I.message:String(I),!1}}function oe(R){y()&&(l.value.name=R,$())}function re(R){y()&&(l.value.description=R,$())}function Y(){if(!(t.readonly||c.value))try{const R=T.parseReportTemplate(n.value);if(R.id!==l.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(R.revision!==l.value.revision)throw new Error("修订号由保存服务管理,不能在 JSON 中修改");l.value=R,b.value=0,m.clearSelection(),$()}catch(R){v.value=R instanceof Error?R.message:String(R)}}async function K(){c.value||t.readonly||!await M("reset")||(D(T.parseReportTemplate(r.value)),s("update:modelValue",T.parseReportTemplate(l.value)))}function W(R){if(c.value||t.readonly)return;h.record(N());const I=h.move(R);if(!I)return;w.cancel();const G=JSON.parse(I);l.value=G.document,n.value=G.json,x.value=G.appliedJson,v.value="",b.value=0,m.clearSelection(),V.value.ok&&s("update:modelValue",T.parseReportTemplate(l.value))}async function Q(){if(!t.save||!y()||!V.value.ok)return;const R=++k;g=new AbortController,d.value=!0,v.value="";const I=T.parseReportTemplate(l.value);try{const G=T.parseReportTemplate(await t.save(I,{expectedRevision:I.revision,signal:g.signal}));if(R!==k)return;if(G.id!==I.id)throw new Error("保存服务返回了其他模板的文档");l.value=G,r.value=T.serializeReportTemplate(G),n.value=r.value,x.value=n.value,h.reset(N()),s("saved",T.parseReportTemplate(G)),s("update:modelValue",T.parseReportTemplate(G))}catch(G){R===k&&(v.value=G instanceof Error?G.message:String(G))}finally{R===k&&(d.value=!1,g=void 0)}}const te=e.computed(()=>h.canUndo.value||N()!==h.current.value),J=e.computed(()=>h.canRedo.value&&N()===h.current.value);return{...m,editingReadonly:e.computed(()=>t.readonly===!0),transaction:P,replaceDocument:q,originalDocument:e.computed(()=>T.parseReportTemplate(r.value)),canUndo:te,canRedo:J,undo:()=>W(-1),redo:()=>W(1),pendingLocalChanges:f,jsonPending:p,blocked:c,confirmation:w.confirmation,decideDiscard:w.decide,guardChanges:M,draft:l,json:n,selected:b,error:v,saving:d,dirty:_,validation:V,lists:C,activeList:B,headerAlignments:L,previewOptions:i,fetcher:o,messages:E,setName:oe,setDescription:re,setColumn:O,applyJson:Y,reset:K,save:Q}}function sn(t,s){const l=e.ref("fields"),r=()=>s.value?.columns.length?0:-1,n=e.ref(r()),v=e.computed(()=>{const i=s.value?.columns[n.value];return i?{column:i,index:n.value}:void 0});e.watch(t,()=>{n.value=r()}),e.watch(s,i=>{i?.columns[n.value]||(n.value=r())});function d(i){s.value?.columns[i]&&(n.value=i)}function E(i){const g=s.value?.columns.length??0;g&&(n.value=Math.max(0,Math.min(g-1,n.value+i)))}return{section:l,activeIndex:n,activeColumn:v,activate:d,stepColumn:E}}const cn=["aria-label","aria-busy"],dn={class:"mr-designer-bar"},un={class:"mr-designer-heading"},mn=["aria-label"],pn=["id","aria-selected","aria-controls","tabindex","onClick"],fn=["aria-label"],vn=["aria-pressed"],gn=["aria-pressed"],hn={class:"mr-designer-actions"},yn={class:"mr-designer-history"},kn=["aria-label","title","disabled"],bn=["aria-label","title","disabled"],En=["disabled"],wn=["disabled"],Sn=["aria-label"],Vn={key:0,class:"mr-designer-tools"},Nn=["aria-label"],xn=["aria-pressed","onClick"],Cn={class:"mr-designer-tool-content"},Bn={key:2,class:"mr-designer-rule-workspace"},Mn={key:0},Dn=["value"],_n={key:2,class:"mr-designer-note"},Tn={key:1,class:"mr-designer-inspector"},$n=["id","aria-labelledby"],Rn={key:0,class:"mr-designer-area"},In=["value"],Ln={class:"mr-designer-current"},An=["aria-expanded","aria-controls"],Gn={class:"mr-designer-current-name"},Pn={class:"mr-designer-directory-entry"},Fn={class:"mr-designer-field-position"},zn=["aria-label"],Hn=["aria-label","title","disabled"],jn=["aria-label","title","disabled"],On=["disabled","aria-label"],Un={class:"mr-designer-property-group"},Jn=["value"],Kn=["value","list"],Wn=["id"],qn=["value"],Xn={class:"mr-designer-property-group"},Yn={class:"mr-designer-format-pair"},Qn={class:"mr-designer-stacked"},Zn=["value"],eo={class:"mr-designer-stacked"},to=["value"],no={value:"identifier"},oo={value:"dimension"},lo={value:"measure"},ao={value:"date"},ro={value:"text"},io={class:"mr-designer-control-row"},so={class:"mr-designer-control-row"},co={class:"mr-designer-toggle"},uo=["checked"],mo={class:"mr-designer-column-structure"},po=["aria-label","title","disabled"],fo=["aria-label","title","disabled"],vo=["checked","disabled"],go=["id","aria-label"],ho={class:"mr-designer-directory-heading"},yo=["aria-label"],ko={class:"mr-designer-search"},bo=["aria-label","placeholder"],Eo=["aria-label","title"],wo={class:"mr-designer-column-tools"},So=["disabled"],Vo={key:1,role:"status"},No={key:2},xo=["aria-label"],Co=["aria-label","checked","disabled","onChange"],Bo=["data-column-index","aria-pressed","tabindex","onClick"],Mo={class:"mr-designer-column-number"},Do={class:"mr-designer-column-name"},_o={key:0,role:"status",class:"mr-designer-empty"},To={key:0,class:"mr-designer-batch"},$o=["aria-label","disabled"],Ro={value:""},Io={value:"auto"},Lo={value:"left"},Ao={value:"center"},Go={value:"right"},Po={value:"justify"},Fo=["aria-label","disabled"],zo={value:""},Ho={value:"left"},jo={value:"center"},Oo={value:"right"},Uo={value:"justify"},Jo={key:2,role:"status",class:"mr-designer-empty"},Ko={class:"mr-designer-object-tools"},Wo=["aria-label","disabled"],qo={value:""},Xo={value:"text"},Yo={value:"list"},Qo={value:"image"},Zo={value:"rect"},el=["title","aria-label","disabled"],tl=["title","aria-label","disabled"],nl={key:0},ol=["value"],ll={class:"mr-designer-stacked"},al=["value"],rl={value:-1,disabled:""},il=["value"],sl={class:"mr-designer-layer-tools"},cl=["disabled"],dl=["disabled"],ul={key:2,class:"mr-designer-empty"},ml={class:"mr-designer-stacked"},pl=["value","disabled"],fl={class:"mr-designer-stacked"},vl=["value","disabled"],gl={class:"mr-designer-technical"},hl={class:"mr-designer-identity"},yl={class:"mr-designer-stacked mr-designer-json-label"},kl=["aria-label","disabled"],bl=["disabled"],El={key:4,role:"status",class:"mr-designer-note mr-designer-pending"},wl=["aria-label"],Sl={key:0,role:"alert",class:"mr-designer-error"},Vl={key:1,role:"alert",class:"mr-designer-error"},Nl={key:4,class:"mr-designer-note mr-designer-invalid"},xl=e.defineComponent({__name:"ReportTemplateEditor",props:{modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},preview:{},beforeDiscard:{type:Function},save:{type:Function}},emits:["update:modelValue","saved","excel-bound"],setup(t,{expose:s,emit:l}){const r=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-DiaxvWpQ.cjs"))),n=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-N4qnMZ-Z.cjs"))),v=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-C_Lmzis6.cjs"))),d=t,E=l,i=rn(d,(F,u)=>{E(F==="saved"?"saved":"update:modelValue",u)}),{draft:g,json:k,selected:V,error:_,saving:x,pendingLocalChanges:p,jsonPending:f,blocked:N,confirmation:h,canUndo:w,canRedo:c,validation:y,lists:m,activeList:b,visibleColumns:C,query:B,selectedColumns:L,fetcher:O,messages:o}=i,z=sn(V,b),{section:S,activeIndex:M,activeColumn:D}=z,$=`mr-designer-${e.getCurrentInstance()?.uid??0}`,P=["fields","component","template","tools","advanced"],q=Zt(i,z,()=>d.dataSchemas),{mode:oe,setMode:re,canvasSelection:Y,canvasPage:K,canvasActive:W,tool:Q,visitedTools:te,editDisabled:J,dataSchema:R,chooseCanvas:I,insertComponent:G,patchCanvas:U,changeList:Ce,moveColumn:ke,headerCommand:Be,locateReview:Me,canvas:X}=q,De=e.computed(()=>x.value?o.value.saving:d.readonly?o.value.readonly:p.value?o.value.dirty:o.value.ready),be=e.ref(null),ue=e.ref(null),j=tn(z,S,C),{open:Ee,cursor:_e,trigger:Te,panel:$e,search:Re,list:Ie}=j;e.watch(S,async()=>{await e.nextTick(),ue.value&&(ue.value.scrollTop=0)});const we=e.computed(()=>({auto:o.value.auto,left:o.value.left,center:o.value.center,right:o.value.right,justify:o.value.justify}));let ie=null;e.watch(h,async F=>{F?(ie=document.activeElement,await e.nextTick(),be.value?.focus()):(await e.nextTick(),ie?.isConnected&&ie.focus(),ie=null)}),s({get pendingLocalChanges(){return p.value},get saving(){return x.value},get blocked(){return N.value},guardChanges:i.guardChanges,reset:i.reset,save:i.save});async function Le(F){const u={...F.document,id:g.value.id};if(g.value.revision===void 0?delete u.revision:u.revision=g.value.revision,!await i.replaceDocument(u))return;const a=T.parseReportTemplate(i.draft.value);E("excel-bound",{...F,document:a,session:{...F.session,identity:{id:a.id,name:a.name}}})}function Z(F){return F.target.value}function me(F){return F.target.checked}function Se(F,u){const a=F.target;i.alignColumns(u,a.value),a.value=""}async function Ae(F){const a={ArrowRight:1,ArrowLeft:-1,Home:-P.length,End:P.length}[F.key];if(a===void 0)return;F.preventDefault();const A=P.indexOf(S.value),ne=F.key==="Home"?0:F.key==="End"?P.length-1:(A+a+P.length)%P.length;S.value=P[ne];const Ge=F.currentTarget.parentElement;await e.nextTick(),Ge?.querySelector(`#${$}-tab-${S.value}`)?.focus()}return(F,u)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(o).title,"aria-busy":e.unref(x)},[e.createElementVNode("header",dn,[e.createElementVNode("div",un,[e.createVNode(H._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(p)})},e.toDisplayString(De.value),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(o).sectionsLabel},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(P,a=>e.createElementVNode("button",{id:`${$}-tab-${a}`,key:a,type:"button",role:"tab","aria-selected":e.unref(S)===a,"aria-controls":`${$}-panel-${a}`,tabindex:e.unref(S)===a?0:-1,onClick:A=>S.value=a,onKeydown:Ae},e.toDisplayString(e.unref(o)[`${a}Section`]),41,pn)),64))],8,mn),e.createElementVNode("div",{class:"mr-designer-mode",role:"group","aria-label":e.unref(o).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(oe)==="design",onClick:u[0]||(u[0]=a=>e.unref(re)("design"))},e.toDisplayString(e.unref(o).design),9,vn),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(oe)==="preview",onClick:u[1]||(u[1]=a=>e.unref(re)("preview"))},e.toDisplayString(e.unref(o).preview),9,gn)],8,fn),e.createElementVNode("div",hn,[e.createElementVNode("div",yn,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).undo,title:e.unref(o).undo,disabled:t.readonly||e.unref(N)||!e.unref(w),onClick:u[2]||(u[2]=(...a)=>e.unref(i).undo&&e.unref(i).undo(...a))},[...u[48]||(u[48]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)])],8,kn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).redo,title:e.unref(o).redo,disabled:t.readonly||e.unref(N)||!e.unref(c),onClick:u[3]||(u[3]=(...a)=>e.unref(i).redo&&e.unref(i).redo(...a))},[...u[49]||(u[49]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)])],8,bn)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(N)||!e.unref(p),onClick:u[4]||(u[4]=(...a)=>e.unref(i).reset&&e.unref(i).reset(...a))},e.toDisplayString(e.unref(o).reset),9,En),t.save?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",disabled:t.readonly||e.unref(N)||e.unref(f)||!e.unref(y).ok||!e.unref(p),onClick:u[5]||(u[5]=(...a)=>e.unref(i).save&&e.unref(i).save(...a))},[e.createVNode(H._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(x)?e.unref(o).saving:e.unref(o).save),1)],8,wn)):e.createCommentVNode("",!0)])]),e.unref(h)?(e.openBlock(),e.createElementBlock("div",{key:0,role:"alertdialog","aria-label":e.unref(o).discardTitle,class:"mr-designer-confirm",onKeydown:u[8]||(u[8]=e.withKeys(e.withModifiers(a=>e.unref(i).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(o).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:be,type:"button",onClick:u[6]||(u[6]=a=>e.unref(i).decideDiscard(!1))},e.toDisplayString(e.unref(o).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:u[7]||(u[7]=a=>e.unref(i).decideDiscard(!0))},e.toDisplayString(e.unref(o).discard),1)])],40,Sn)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(S)==="tools"}])},[e.unref(te).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",Vn,[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(o).toolsSection},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["excel","rules","review"],a=>e.createElementVNode("button",{key:a,type:"button","aria-pressed":e.unref(Q)===a,onClick:A=>Q.value=a},e.toDisplayString(e.unref(o)[`${a}Tool`]),9,xn)),64)),e.createElementVNode("span",null,e.toDisplayString(e.unref(o).toolsDescription),1)],8,Nn),e.createElementVNode("div",Cn,[e.unref(te).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(r),{key:0,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(g).id,name:e.unref(g).name},"lock-id":"",readonly:e.unref(J),onApply:Le},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(Q)==="excel"]]):e.createCommentVNode("",!0),e.unref(te).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(v),{key:1,document:e.unref(g),previous:e.unref(i).originalDocument.value,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(Me)},null,8,["document","previous","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(Q)==="review"]]):e.createCommentVNode("",!0),e.unref(te).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Bn,[e.unref(m).length>1?(e.openBlock(),e.createElementBlock("label",Mn,[e.createTextVNode(e.toDisplayString(e.unref(o).area),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[9]||(u[9]=a=>e.isRef(V)?V.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(a.component.title||a.component.dataset),9,Dn))),128))],512),[[e.vModelSelect,e.unref(V)]])])):e.createCommentVNode("",!0),e.unref(b)?(e.openBlock(),e.createBlock(e.unref(n),{key:1,list:e.unref(b),datasets:t.datasets,"dataset-schema":e.unref(R),"dataset-schemas":t.dataSchemas,readonly:e.unref(J),onChange:e.unref(Ce)},null,8,["list","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",_n,e.toDisplayString(e.unref(o).rulesNeedList),1))],512)),[[e.vShow,e.unref(Q)==="rules"]]):e.createCommentVNode("",!0)])],512)),[[e.vShow,e.unref(S)==="tools"]]):e.createCommentVNode("",!0),e.unref(S)!=="tools"?(e.openBlock(),e.createElementBlock("aside",Tn,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:ue,id:`${$}-panel-${e.unref(S)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(S)==="advanced"}]),role:"tabpanel","aria-labelledby":`${$}-tab-${e.unref(S)}`},[e.unref(S)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(m).length>1?(e.openBlock(),e.createElementBlock("label",Rn,[e.createTextVNode(e.toDisplayString(e.unref(o).area),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[10]||(u[10]=a=>e.isRef(V)?V.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(a.pageIndex+1)+" "+e.toDisplayString(e.unref(o).page)+" · "+e.toDisplayString(a.component.title||a.component.dataset),9,In))),128))],512),[[e.vModelSelect,e.unref(V)]])])):e.createCommentVNode("",!0),e.unref(b)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ln,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:Te,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(Ee),"aria-controls":`${$}-directory`,"aria-haspopup":"dialog",onClick:u[11]||(u[11]=(...a)=>e.unref(j).toggle&&e.unref(j).toggle(...a)),onKeydown:u[12]||(u[12]=e.withKeys((...a)=>e.unref(j).escape&&e.unref(j).escape(...a),["esc"]))},[e.createElementVNode("span",Gn,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(D)?.column.header||e.unref(o).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(D)?.column.field||"—"),1)]),e.createElementVNode("span",Pn,[e.createTextVNode(e.toDisplayString(e.unref(o).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(b).columns.length),1),e.createVNode(H._sfc_main,{name:"chevron-down",size:13})])],40,An),e.createElementVNode("div",Fn,[e.createElementVNode("span",{"aria-label":e.unref(o).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(M)>=0?e.unref(M)+1:0),1),u[50]||(u[50]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(b).columns.length),1)],8,zn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).previousColumn,title:e.unref(o).previousColumn,disabled:e.unref(M)<=0,onClick:u[13]||(u[13]=a=>e.unref(z).stepColumn(-1))},[e.createVNode(H._sfc_main,{name:"chevron-left",size:14})],8,Hn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).nextColumn,title:e.unref(o).nextColumn,disabled:e.unref(M)>=e.unref(b).columns.length-1,onClick:u[14]||(u[14]=a=>e.unref(z).stepColumn(1))},[e.createVNode(H._sfc_main,{name:"chevron-right",size:14})],8,jn)])]),e.unref(D)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(N)||e.unref(f),"aria-label":e.unref(o).columnProperties},[e.createElementVNode("div",Un,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).header),1),e.createElementVNode("input",{value:e.unref(D).column.header,onInput:u[15]||(u[15]=a=>e.unref(i).setColumn(e.unref(D).index,"header",Z(a)))},null,40,Jn)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).field),1),e.createElementVNode("input",{value:e.unref(D).column.field,list:e.unref(R)?`${$}-fields`:void 0,onChange:u[16]||(u[16]=a=>e.unref(i).setColumn(e.unref(D).index,"field",Z(a)))},null,40,Kn)]),e.unref(R)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${$}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(R).fields,a=>(e.openBlock(),e.createElementBlock("option",{key:a.field,value:a.field},e.toDisplayString(a.label)+" · "+e.toDisplayString(a.type)+" "+e.toDisplayString(a.unit),9,qn))),128))],8,Wn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Xn,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).formatGroup),1),e.createElementVNode("div",Yn,[e.createElementVNode("label",Qn,[e.createTextVNode(e.toDisplayString(e.unref(o).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(D).column.widthMm,onChange:u[17]||(u[17]=a=>e.unref(i).setColumn(e.unref(D).index,"widthMm",Z(a)))},null,40,Zn)]),e.createElementVNode("label",eo,[e.createTextVNode(e.toDisplayString(e.unref(o).semantic),1),e.createElementVNode("select",{value:e.unref(D).column.semanticRole||"text",onChange:u[18]||(u[18]=a=>e.unref(i).setColumn(e.unref(D).index,"semanticRole",Z(a)))},[e.createElementVNode("option",no,e.toDisplayString(e.unref(o).identifier),1),e.createElementVNode("option",oo,e.toDisplayString(e.unref(o).dimension),1),e.createElementVNode("option",lo,e.toDisplayString(e.unref(o).measure),1),e.createElementVNode("option",ao,e.toDisplayString(e.unref(o).date),1),e.createElementVNode("option",ro,e.toDisplayString(e.unref(o).text),1)],40,to)])]),e.createElementVNode("div",io,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).bodyAlign),1),e.createVNode(he,{"model-value":e.unref(D).column.align??e.unref(D).column.style?.align??e.unref(b).align??"left",label:e.unref(o).bodyAlign,labels:we.value,"auto-label":e.unref(o).autoShort,"allow-auto":"","onUpdate:modelValue":u[19]||(u[19]=a=>e.unref(i).setColumn(e.unref(D).index,"align",a))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",so,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).headerAlign),1),e.createVNode(he,{"model-value":e.unref(i).headerAlignments.value[e.unref(D).index]||"left",label:e.unref(o).headerAlign,labels:we.value,"auto-label":e.unref(o).autoShort,"onUpdate:modelValue":u[20]||(u[20]=a=>e.unref(i).setColumn(e.unref(D).index,"headerAlign",a))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",co,[e.createTextVNode(e.toDisplayString(e.unref(o).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(D).column.editable===!0,onChange:u[21]||(u[21]=a=>e.unref(i).setColumn(e.unref(D).index,"editable",me(a)))},null,40,uo)]),e.createElementVNode("div",mo,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).moveColumnLeft,title:e.unref(o).moveColumnLeft,disabled:e.unref(M)<=0,onClick:u[22]||(u[22]=a=>e.unref(ke)(-1))},[e.createVNode(H._sfc_main,{name:"chevron-left",size:13})],8,po),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).moveColumnRight,title:e.unref(o).moveColumnRight,disabled:e.unref(M)>=e.unref(b).columns.length-1,onClick:u[23]||(u[23]=a=>e.unref(ke)(1))},[e.createVNode(H._sfc_main,{name:"chevron-right",size:13})],8,fo),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(D).column.hidden!==!0,disabled:e.unref(D).column.hidden!==!0&&e.unref(b).columns.filter(a=>!a.hidden).length===1,onChange:u[24]||(u[24]=a=>e.unref(i).setColumn(e.unref(D).index,"hidden",!me(a)))},null,40,vo)])])],8,On)):e.createCommentVNode("",!0),e.unref(Ee)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${$}-directory`,ref_key:"directoryPanel",ref:$e,role:"dialog","aria-label":e.unref(o).columnDirectory,class:"mr-designer-directory",onKeydown:u[34]||(u[34]=e.withKeys((...a)=>e.unref(j).escape&&e.unref(j).escape(...a),["esc"])),onFocusout:u[35]||(u[35]=(...a)=>e.unref(j).leave&&e.unref(j).leave(...a))},[e.createElementVNode("div",ho,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(o).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(o).closeDirectory,onClick:u[25]||(u[25]=a=>e.unref(j).close(!0))},[e.createVNode(H._sfc_main,{name:"close",size:15})],8,yo)]),e.createElementVNode("div",ko,[e.createVNode(H._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:Re,"onUpdate:modelValue":u[26]||(u[26]=a=>e.isRef(B)?B.value=a:null),type:"search","aria-label":e.unref(o).columnsSearch,placeholder:e.unref(o).columnsSearch,onKeydown:u[27]||(u[27]=(...a)=>e.unref(j).searchKeydown&&e.unref(j).searchKeydown(...a))},null,40,bo),[[e.vModelText,e.unref(B)]]),e.unref(B)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).clearSearch,title:e.unref(o).clearSearch,onClick:u[28]||(u[28]=a=>B.value="")},[e.createVNode(H._sfc_main,{name:"close",size:13})],8,Eo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",wo,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(N)||e.unref(f)||!e.unref(C).length,onClick:u[29]||(u[29]=a=>e.unref(i).selectVisible(!0))},e.toDisplayString(e.unref(o).selectVisible),9,So),e.unref(L).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:u[30]||(u[30]=(...a)=>e.unref(i).clearSelection&&e.unref(i).clearSelection(...a))},e.toDisplayString(e.unref(o).clearSelection),1)):e.createCommentVNode("",!0),e.unref(L).length?(e.openBlock(),e.createElementBlock("span",Vo,e.toDisplayString(e.unref(o).columnsSelected)+" "+e.toDisplayString(e.unref(L).length),1)):(e.openBlock(),e.createElementBlock("span",No,e.toDisplayString(e.unref(C).length)+" / "+e.toDisplayString(e.unref(b).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:Ie,class:"mr-designer-column-list","aria-label":e.unref(o).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(C),({column:a,index:A})=>(e.openBlock(),e.createElementBlock("div",{key:A,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(M)===A}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(o).selectColumn} ${a.header}`,checked:e.unref(L).includes(A),disabled:t.readonly||e.unref(N)||e.unref(f),onChange:ne=>e.unref(i).toggleColumn(A,me(ne))},null,40,Co),e.createElementVNode("button",{type:"button","data-column-index":A,"aria-pressed":e.unref(M)===A,tabindex:e.unref(_e)===A?0:-1,onClick:ne=>e.unref(j).choose(A),onKeydown:u[31]||(u[31]=(...ne)=>e.unref(j).navigate&&e.unref(j).navigate(...ne))},[e.createElementVNode("span",Mo,e.toDisplayString(A+1),1),e.createElementVNode("span",Do,[e.createElementVNode("strong",null,e.toDisplayString(a.header),1),e.createElementVNode("small",null,e.toDisplayString(a.field),1)]),e.unref(M)===A?(e.openBlock(),e.createBlock(H._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,Bo)],2))),128)),e.unref(C).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",_o,[e.createVNode(H._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(o).noColumns),1)]))],8,xo),e.unref(L).length?(e.openBlock(),e.createElementBlock("div",To,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(o).batchBody,disabled:t.readonly||e.unref(N)||e.unref(f),onChange:u[32]||(u[32]=a=>Se(a,"align"))},[e.createElementVNode("option",Ro,e.toDisplayString(e.unref(o).chooseAlignment),1),e.createElementVNode("option",Io,e.toDisplayString(e.unref(o).auto),1),e.createElementVNode("option",Lo,e.toDisplayString(e.unref(o).left),1),e.createElementVNode("option",Ao,e.toDisplayString(e.unref(o).center),1),e.createElementVNode("option",Go,e.toDisplayString(e.unref(o).right),1),e.createElementVNode("option",Po,e.toDisplayString(e.unref(o).justify),1)],40,$o)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(o).batchHeader,disabled:t.readonly||e.unref(N)||e.unref(f),onChange:u[33]||(u[33]=a=>Se(a,"headerAlign"))},[e.createElementVNode("option",zo,e.toDisplayString(e.unref(o).chooseAlignment),1),e.createElementVNode("option",Ho,e.toDisplayString(e.unref(o).left),1),e.createElementVNode("option",jo,e.toDisplayString(e.unref(o).center),1),e.createElementVNode("option",Oo,e.toDisplayString(e.unref(o).right),1),e.createElementVNode("option",Uo,e.toDisplayString(e.unref(o).justify),1)],40,Fo)])])):e.createCommentVNode("",!0)],40,go)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Jo,e.toDisplayString(e.unref(o).noColumns),1))],64)):e.unref(S)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ko,[e.createElementVNode("select",{"aria-label":e.unref(o).insertComponent,disabled:e.unref(J),onChange:u[36]||(u[36]=(...a)=>e.unref(G)&&e.unref(G)(...a))},[e.createElementVNode("option",qo,e.toDisplayString(e.unref(o).insertComponent),1),e.createElementVNode("option",Xo,e.toDisplayString(e.unref(o).insertText),1),e.createElementVNode("option",Yo,e.toDisplayString(e.unref(o).insertList),1),e.createElementVNode("option",Qo,e.toDisplayString(e.unref(o).insertImage),1),e.createElementVNode("option",Zo,e.toDisplayString(e.unref(o).insertRect),1)],40,Wo),e.createElementVNode("button",{type:"button",title:e.unref(o).duplicateComponent,"aria-label":e.unref(o).duplicateComponent,disabled:e.unref(J)||!e.unref(W),onClick:u[37]||(u[37]=(...a)=>e.unref(X).duplicate&&e.unref(X).duplicate(...a))}," + ",8,el),e.createElementVNode("button",{type:"button",title:e.unref(o).removeComponent,"aria-label":e.unref(o).removeComponent,disabled:e.unref(J)||!e.unref(W),onClick:u[38]||(u[38]=(...a)=>e.unref(X).remove&&e.unref(X).remove(...a))},[e.createVNode(H._sfc_main,{name:"close",size:14})],8,tl)]),e.unref(g).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",nl,[e.createTextVNode(e.toDisplayString(e.unref(o).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[39]||(u[39]=a=>e.isRef(K)?K.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g).template.pages,(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(A+1),9,ol))),128))],512),[[e.vModelSelect,e.unref(K),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",ll,[e.createTextVNode(e.toDisplayString(e.unref(o).components),1),e.createElementVNode("select",{value:e.unref(Y)?.pageIndex===e.unref(K)?e.unref(Y).componentIndex:-1,onChange:u[40]||(u[40]=a=>e.unref(I)({pageIndex:e.unref(K),componentIndex:Number(Z(a))}))},[e.createElementVNode("option",rl,e.toDisplayString(e.unref(o).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g).template.pages[e.unref(K)]?.components,(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(A+1)+" · "+e.toDisplayString(a.kind==="list"?a.title||a.dataset:a.text||a.kind),9,il))),128))],40,al)]),e.unref(W)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",sl,[e.createElementVNode("button",{type:"button",disabled:e.unref(J)||e.unref(Y)?.componentIndex===0,onClick:u[41]||(u[41]=a=>e.unref(X).reorder(-1))},e.toDisplayString(e.unref(o).backward),9,cl),e.createElementVNode("button",{type:"button",disabled:e.unref(J)||e.unref(Y)?.componentIndex===(e.unref(g).template.pages[e.unref(K)]?.components.length??0)-1,onClick:u[42]||(u[42]=a=>e.unref(X).reorder(1))},e.toDisplayString(e.unref(o).forward),9,dl)]),e.createVNode(jt,{component:e.unref(W),disabled:e.unref(J),messages:e.unref(o),onGeometry:e.unref(X).geometry,onPatch:e.unref(U)},null,8,["component","disabled","messages","onGeometry","onPatch"]),e.unref(W).kind==="list"?(e.openBlock(),e.createBlock(Yt,{key:0,list:e.unref(W),disabled:e.unref(J),messages:e.unref(o),onCommand:e.unref(Be)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",ul,e.toDisplayString(e.unref(o).noComponent),1))],64)):e.unref(S)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).templateDetails),1),e.createElementVNode("label",ml,[e.createTextVNode(e.toDisplayString(e.unref(o).name),1),e.createElementVNode("input",{value:e.unref(g).name,disabled:t.readonly||e.unref(N)||e.unref(f),onInput:u[43]||(u[43]=a=>e.unref(i).setName(Z(a)))},null,40,pl)]),e.createElementVNode("label",fl,[e.createTextVNode(e.toDisplayString(e.unref(o).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(g).description,disabled:t.readonly||e.unref(N)||e.unref(f),onInput:u[44]||(u[44]=a=>e.unref(i).setDescription(Z(a)))},null,40,vl)]),e.createElementVNode("details",gl,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(o).technicalDetails),1),e.createElementVNode("dl",hl,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(o).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(g).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(o).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(g).revision||e.unref(o).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).advancedTitle),1),e.createElementVNode("label",yl,[e.createTextVNode(e.toDisplayString(e.unref(o).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[45]||(u[45]=a=>e.isRef(k)?k.value=a:null),class:"mr-designer-json","aria-label":e.unref(o).json,disabled:t.readonly||e.unref(N),spellcheck:"false"},null,8,kl),[[e.vModelText,e.unref(k)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(N),onClick:u[46]||(u[46]=(...a)=>e.unref(i).applyJson&&e.unref(i).applyJson(...a))},e.toDisplayString(e.unref(o).applyJson),9,bl)],64)),e.unref(f)?(e.openBlock(),e.createElementBlock("p",El,e.toDisplayString(e.unref(o).jsonPending),1)):e.createCommentVNode("",!0)],10,$n)])):e.createCommentVNode("",!0),e.unref(S)!=="tools"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(o).previewTitle},[e.unref(_)?(e.openBlock(),e.createElementBlock("div",Sl,e.toDisplayString(e.unref(_)),1)):e.createCommentVNode("",!0),e.unref(y).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).errors,a=>(e.openBlock(),e.createElementBlock("li",{key:a.path},e.toDisplayString(a.path)+":"+e.toDisplayString(a.message),1))),128))])),e.unref(oe)==="design"&&e.unref(y).ok?(e.openBlock(),e.createBlock(ct,{key:2,document:e.unref(g),selection:e.unref(Y),"page-index":e.unref(K),datasets:t.datasets,disabled:e.unref(J),messages:e.unref(o),onSelect:e.unref(I),onGeometry:e.unref(X).geometry,onColumn:e.unref(z).activate,onWidth:u[47]||(u[47]=(a,A)=>e.unref(i).setColumn(a,"widthMm",String(A)))},null,8,["document","selection","page-index","datasets","disabled","messages","onSelect","onGeometry","onColumn"])):e.unref(O)&&e.unref(y).ok?(e.openBlock(),e.createBlock(e.unref(fe.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(O),messages:{title:e.unref(o).previewTitle,columnDirectory:e.unref(o).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",Nl,e.toDisplayString(e.unref(o).invalid),1))],8,wl)):e.createCommentVNode("",!0)],2)],8,cn))}}),Cl=H._export_sfc(xl,[["__scopeId","data-v-9e22163e"]]),Bl={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:"调序"}},Ml={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:"契约字段,不执行接口查询"},Dl={detail:"主从",matrix:"矩阵",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},_l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-C_Lmzis6.cjs"))),Tl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-DiaxvWpQ.cjs"))),$l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-N4qnMZ-Z.cjs")));exports.EXCEL_BINDING_MESSAGES=Ml;exports.ExcelBindingWizard=Tl;exports.RULE_EDITOR_MESSAGES=Dl;exports.ReportTemplateEditor=Cl;exports.RuleEditor=$l;exports.TEMPLATE_EDITOR_MESSAGES=ae;exports.TEMPLATE_REVIEW_MESSAGES=Bl;exports.TemplateReviewPanel=_l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),fe=require("@agile-team/mach-report/vue"),T=require("@agile-team/mach-report"),H=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),ve=require("./style-UgIJSA1F.cjs"),Pe=96/25.4;function ye(t){return t.kind==="list"?Math.max(16,(t.headerGrid?.rowHeightsMm?.reduce((s,l)=>s+l,0)??8)+(t.rowHeightMm??8)*3):t.heightMm}function le(t){return{leftMm:t.leftMm,topMm:t.topMm,widthMm:t.widthMm,heightMm:ye(t)}}function pe(t,s){return s?t.template.pages[s.pageIndex]?.components[s.componentIndex]:void 0}function Fe(t,s="detail"){const l={leftMm:10,topMm:10,widthMm:60,heightMm:10};return t==="list"?{kind:t,leftMm:10,topMm:30,widthMm:90,dataset:s,columns:[{header:"字段",field:"field",widthMm:45},{header:"数值",field:"value",widthMm:45}],border:!0,headerBackgroundColor:"#eaf2fc",headerAlign:"center"}:t==="text"?{...l,kind:t,text:"文本",style:{fontSize:12,color:"#233c5c"}}:t==="rect"?{...l,kind:t,style:{borderColor:"#cbd5e1",lineWidthPt:.75,backgroundColor:"#eff6ff"}}:{...l,kind:t,widthMm:48,heightMm:24,imageData:`data:image/svg+xml;charset=utf-8,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="180" height="90" viewBox="0 0 180 90"><rect width="180" height="90" rx="5" fill="#eff6ff"/><path d="m25 68 32-32 25 23 27-35 45 44" fill="none" stroke="#94b8e5" stroke-width="3"/><circle cx="45" cy="24" r="7" fill="#bfd5ef"/></svg>')}`}}function ge(t,s,l=!1){const r=Math.max(2,Math.min(s.widthMm,t.widthMm)),n=Math.max(2,Math.min(s.heightMm,t.heightMm));return{leftMm:Math.max(0,Math.min(s.widthMm-r,t.leftMm)),topMm:Math.max(0,Math.min(s.heightMm-(l?2:n),t.topMm)),widthMm:r,heightMm:n}}function Ve(t,s){const l=t.widthMm;if(Object.assign(t,{leftMm:s.leftMm,topMm:s.topMm,widthMm:s.widthMm}),t.kind!=="list")t.heightMm=s.heightMm;else if(l>0&&s.widthMm!==l){const r=s.widthMm/l;t.columns.forEach(n=>{n.widthMm=Math.round(n.widthMm*r*100)/100}),t.widthMm=t.columns.reduce((n,v)=>n+v.widthMm,0),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(n=>n.widthMm))}}function ze(t,s,l){if(s===l||!t.columns[s]||!t.columns[l])return!1;if(t.headerGrid){if(T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.some(({cell:v})=>(v.colSpan??1)>1))throw new Error("请先拆分跨列合并表头,再调整列顺序,避免改变业务分组。");const n=ce(t);n.forEach(v=>{v.splice(l,0,v.splice(s,1)[0])}),t.headerGrid=de(n,t.columns.map(v=>v.widthMm),t.headerGrid.rowHeightsMm??n.map(()=>8))}return t.columns.splice(l,0,t.columns.splice(s,1)[0]),t.headerGrid&&(t.headerGrid.colWidthsMm=t.columns.map(r=>r.widthMm)),!0}function ce(t){if(!t.headerGrid)return[t.columns.map(l=>({text:l.header}))];const s=Array.from({length:t.headerGrid.cells.length},()=>Array.from({length:t.columns.length},()=>null));for(const{cell:l,ri:r,ci:n}of T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells)s[r][n]=l;return s}function de(t,s,l){const r=new Set;return{cells:t.map((v,d)=>v.flatMap((E,i)=>{if(r.has(`${d}:${i}`))return[];if(!E)return[null];for(let g=d;g<d+(E.rowSpan??1);g++)for(let k=i;k<i+(E.colSpan??1);k++)(g!==d||k!==i)&&r.add(`${g}:${k}`);return[E]})),colWidthsMm:s,rowHeightsMm:l}}function He(t){const s=ce(t),l=t.headerGrid?.rowHeightsMm??s.map(()=>8);s.unshift(t.columns.map(()=>({text:"分组",style:{align:"center",backgroundColor:"#eaf2fc",bold:!0}}))),t.headerGrid=de(s,t.columns.map(r=>r.widthMm),[8,...l])}function Oe(t,s,l,r){if(l>=r||l<0||r>=t.columns.length)throw new Error("请选择同一行的至少两个连续表头。");const n=ce(t),v=n[s];if(!v)throw new Error("表头行不存在。");const d=v.slice(l,r+1);if(d.some(i=>!i||(i.colSpan??1)!==1||(i.rowSpan??1)!==1))throw new Error("选择包含合并区域,请先拆分,再重新合并。");const E=d[0];v[l]={...E,colSpan:r-l+1};for(let i=l+1;i<=r;i++)v[i]=null;t.headerGrid=de(n,t.columns.map(i=>i.widthMm),t.headerGrid?.rowHeightsMm??[8])}function je(t,s,l){if(!t.headerGrid)return;const n=T.resolveGridLayout(t.headerGrid,t.widthMm,100).cells.find(({ri:g,ci:k,cell:V})=>s>=g&&s<g+(V.rowSpan??1)&&l>=k&&l<k+(V.colSpan??1));if(!n)return;const v=ce(t),{ri:d,ci:E,cell:i}=n;for(let g=d;g<d+(i.rowSpan??1);g++)for(let k=E;k<E+(i.colSpan??1);k++){const V={...i,text:g===v.length-1?t.columns[k].header:i.text};delete V.colSpan,delete V.rowSpan,v[g][k]=V}t.headerGrid=de(v,t.columns.map(g=>g.widthMm),t.headerGrid.rowHeightsMm??v.map(()=>8))}function Ne(t,s,l){const r=t.filter(n=>n!==s).flatMap(n=>{const v=n[l],d=l==="leftMm"?n.widthMm:ye(n);return[v,v+d/2,v+d]});return[...new Set(r)].sort((n,v)=>n-v)}function Ue(t,s){if(!t.length)return;let l=0,r=t.length;for(;l<r;){const d=l+r>>>1;t[d]<s?l=d+1:r=d}const n=t[Math.max(0,l-1)],v=t[Math.min(t.length-1,l)];return Math.abs(n-s)<Math.abs(v-s)?n:v}function xe(t,s,l,r){let n=1/0,v={value:Math.round(t*2)/2};for(const d of[0,s/2,s]){const E=Ue(l,t+d);if(E===void 0)continue;const i=Math.abs(E-t-d);i<=r&&i<n&&(n=i,v={value:E-d,guide:E})}return v}function Je(t){let s;function l(r,n,v=!1){if(t.disabled()||r.button!==0)return;r.preventDefault(),r.stopPropagation(),s?.();const d=r.currentTarget.closest("[data-canvas-component]"),E=le(n),i=r.clientX,g=r.clientY;let k=E,V=0;const _=t.scale.value,x=d.parentElement;let p,f;const N=()=>{for(const[B,L]of[["x",p],["y",f]])x.style.setProperty(`--mr-canvas-guide-${B}-display`,L===void 0?"none":"block"),L!==void 0&&x.style.setProperty(`--mr-canvas-guide-${B}`,`${L*_}px`)},h=()=>{V=0,N(),d.style.left=`${k.leftMm*_}px`,d.style.top=`${k.topMm*_}px`,d.style.width=`${k.widthMm*_}px`,d.style.height=`${k.heightMm*_}px`},w={leftMm:Ne(t.page().components,n,"leftMm"),topMm:Ne(t.page().components,n,"topMm")},c=B=>{const L=(B.clientX-i)/_,j=(B.clientY-g)/_,o=xe(E.leftMm+L,E.widthMm,w.leftMm,5/_),z=xe(E.topMm+j,E.heightMm,w.topMm,5/_);p=v?void 0:o.guide,f=v?void 0:z.guide,k=ge(v?{...E,widthMm:Math.round((E.widthMm+L)*2)/2,heightMm:Math.round((E.heightMm+j)*2)/2}:{...E,leftMm:o.value,topMm:z.value},t.page(),n.kind==="list"),V||(V=requestAnimationFrame(h))},y=B=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",b),window.removeEventListener("keydown",C),V&&cancelAnimationFrame(V),k=B?k:E,p=void 0,f=void 0,h(),s=void 0,B&&JSON.stringify(k)!==JSON.stringify(E)&&t.commit(k)},m=()=>y(!0),b=()=>y(!1),C=B=>{B.key==="Escape"&&(B.preventDefault(),b())};window.addEventListener("pointermove",c),window.addEventListener("pointerup",m),window.addEventListener("pointercancel",b),window.addEventListener("keydown",C),s=b}return e.watch(t.disabled,r=>{r&&s?.()}),e.watch(t.page,()=>s?.()),e.onBeforeUnmount(()=>s?.()),{start:l}}const Ke={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:"请先修正模板错误,再预览或保存。"},We={repeatPage:"每页重复",repeatNone:"不重复",repeatHeader:"页眉",repeatFooter:"页脚",textFormat:"文字样式",fontSize:"字号(pt)",fontBold:"加粗",textColor:"文字颜色",backgroundColor:"背景颜色",canvasGridLimited:"设计窗口仅显示前 2000 个单元格;最终预览与导出保留完整内容。",design:"设计",preview:"预览",componentSection:"组件",toolsSection:"工具",component:"组件",components:"组件目录",canvasHint:"点击选择 · 拖动移动 · 方向键微调 · Shift 加速 · Esc 取消",zoom:"缩放",sampleRows:"数据预览区域",resizeComponent:"调整组件尺寸",resizeColumn:"调整列宽",insertComponent:"添加组件",insertText:"文本",insertList:"明细表",insertImage:"图片",insertRect:"矩形",removeComponent:"删除组件",duplicateComponent:"复制组件",forward:"向上移动层级",backward:"向下移动层级",positionGroup:"位置与尺寸 · mm",componentContent:"组件内容",componentText:"文本内容",imageSource:"图片地址或 data URI",imageUpload:"上传图片",imageBudget:"图片不超过 4 MB,支持 PNG/JPEG/WebP/SVG",leftPosition:"左侧",topPosition:"顶部",componentWidth:"宽度",componentHeight:"高度",noComponent:"在画布或目录选择组件",listDataset:"数据集",columnOrder:"列结构",moveColumnLeft:"向前移动列",moveColumnRight:"向后移动列",columnVisible:"显示此列",headerStructure:"多层表头",addHeaderRow:"添加分组行",mergeHeader:"合并所选表头",splitHeader:"拆分表头",headerRow:"表头行",headerFirst:"开始列",headerLast:"结束列",excelTool:"Excel 绑定",rulesTool:"计算与规则",reviewTool:"发布检查",toolsDescription:"按需绑定数据、定义规则并验证模板。",rulesNeedList:"请先在字段区域选择明细表。",undo:"撤销",redo:"重做",columnsSearch:"搜索列名或字段",columnsSelected:"已选列",selectVisible:"选择当前结果",clearSelection:"清除选择",noColumns:"没有匹配的列",batchBody:"批量正文对齐",batchHeader:"批量表头对齐",chooseAlignment:"选择对齐方式",discardTitle:"保留当前修改?",discardDescription:"当前包含未保存的属性或尚未应用的 JSON,继续将丢弃这些修改。",keepEditing:"继续编辑",discard:"丢弃修改并继续",jsonPending:"JSON 尚未应用。请先校验并应用,或撤销 JSON 修改后继续属性编辑与保存。",fieldsSection:"字段",templateSection:"模板",advancedSection:"高级",sectionsLabel:"模板设置分区",columnDirectory:"字段目录",columnProperties:"字段属性",selectColumn:"选择字段",clearSearch:"清除搜索",fieldsCount:"个字段",templateDetails:"模板信息",advancedTitle:"完整配置",advancedDescription:"用于批量迁移或配置复杂模板。应用前会校验;未应用的内容会受到草稿保护。",templateIdentity:"模板标识",templateRevision:"当前修订",readonly:"只读",ready:"可编辑",previewTitle:"实时预览",contentGroup:"内容",formatGroup:"格式",autoShort:"自动",previousColumn:"上一字段",nextColumn:"下一字段",closeDirectory:"关闭字段目录",technicalDetails:"标识与修订",fieldPosition:"当前字段",previewFieldDirectory:"定位字段"},ae={...Ke,...We},qe={class:"mr-canvas"},Xe={class:"mr-canvas-heading"},Ye={class:"mr-canvas-scroll"},Qe=["data-canvas-component","aria-label","aria-pressed","tabindex","onFocus","onPointerdown","onClick","onKeydown"],Ze={class:"mr-canvas-table"},et={key:1,class:"mr-canvas-table-row is-header"},tt=["onPointerdown"],nt={key:2,class:"mr-canvas-placeholder"},ot=["aria-label","onPointerdown"],lt={key:1,class:"mr-canvas-static-grid"},at={key:0,class:"mr-canvas-grid-limit"},rt=["src"],it=["aria-label","onPointerdown"],st=e.defineComponent({__name:"TemplateDesignCanvas",props:{document:{},selection:{},pageIndex:{},datasets:{},disabled:{type:Boolean},messages:{}},emits:["select","geometry","column","width"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(.8),d=e.computed(()=>v.value*Pe),E=e.computed(()=>l.document.template.pages[l.pageIndex]),i=Je({scale:d,page:()=>E.value,disabled:()=>l.disabled===!0,commit:h=>r("geometry",h)});function g(h){return l.selection?.pageIndex===l.pageIndex&&l.selection.componentIndex===h}function k(h){const w=E.value.components[h];return{left:`${w.leftMm*d.value}px`,top:`${w.topMm*d.value}px`,width:`${w.widthMm*d.value}px`,height:`${ye(w)*d.value}px`}}function V(h,w){const c=E.value.components[w];if(l.disabled||!g(w))return;const y={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},m=y[h.key];if(!m)return;h.preventDefault(),h.stopPropagation();const b=le(c),C=h.shiftKey?5:.5;b.leftMm+=m[0]*C,b.topMm+=m[1]*C,r("geometry",b)}function _(h){let w=0;return h.columns.map(c=>(w+=c.widthMm,w))}function x(h){return h.grid?T.resolveGridLayout(h.grid,h.widthMm,h.heightMm).cells.slice(0,2e3):[]}function p(h){return h.headerGrid?T.resolveGridLayout(h.headerGrid,h.widthMm,h.headerGrid.rowHeightsMm?.reduce((w,c)=>w+c,0)??h.headerGrid.cells.length*8).cells:[]}let f;e.watch(()=>l.disabled,h=>{h&&f?.()}),e.watch(()=>l.document,()=>f?.()),e.onBeforeUnmount(()=>f?.());function N(h,w,c){if(l.disabled||h.button!==0)return;h.preventDefault(),h.stopPropagation(),f?.();const y=h.clientX,m=w.columns[c].widthMm;let b=m;const C=h.currentTarget,B=S=>{b=Math.max(2,Math.round((m+(S.clientX-y)/d.value)*2)/2),C.style.transform=`translateX(${(b-m)*d.value}px)`},L=()=>{window.removeEventListener("pointermove",B),window.removeEventListener("pointerup",j),window.removeEventListener("pointercancel",o),window.removeEventListener("keydown",z),C.style.transform="",f=void 0},j=()=>{L(),b!==m&&r("width",c,b)},o=()=>L(),z=S=>{S.key==="Escape"&&(S.preventDefault(),o())};window.addEventListener("pointermove",B),window.addEventListener("pointerup",j),window.addEventListener("pointercancel",o),window.addEventListener("keydown",z),f=o}return(h,w)=>(e.openBlock(),e.createElementBlock("div",qe,[e.createElementVNode("div",Xe,[e.createElementVNode("span",null,e.toDisplayString(n.value.canvasHint),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.zoom),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[0]||(w[0]=c=>v.value=c)},[...w[1]||(w[1]=[e.createElementVNode("option",{value:.5},"50%",-1),e.createElementVNode("option",{value:.8},"80%",-1),e.createElementVNode("option",{value:1},"100%",-1),e.createElementVNode("option",{value:1.25},"125%",-1)])],512),[[e.vModelSelect,v.value,void 0,{number:!0}]])])]),e.createElementVNode("div",Ye,[e.createElementVNode("div",{class:"mr-canvas-paper",style:e.normalizeStyle({width:`${E.value.widthMm*d.value}px`,height:`${E.value.heightMm*d.value}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value.components,(c,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:e.normalizeClass(["mr-canvas-component",{"is-selected":g(y)}]),"data-canvas-component":y,style:e.normalizeStyle(k(y)),role:"button","aria-label":`${n.value.component} ${y+1} ${c.kind}`,"aria-pressed":g(y),tabindex:g(y)?0:-1,onFocus:m=>r("select",{pageIndex:t.pageIndex,componentIndex:y}),onPointerdown:m=>{r("select",{pageIndex:t.pageIndex,componentIndex:y}),e.unref(i).start(m,c)},onClick:m=>r("select",{pageIndex:t.pageIndex,componentIndex:y}),onKeydown:m=>V(m,y)},[c.kind==="list"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Ze,[c.headerGrid?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-canvas-merged",style:e.normalizeStyle({height:`${(c.headerGrid.rowHeightsMm?.reduce((m,b)=>m+b,0)??c.headerGrid.cells.length*8)*d.value}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p(c),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({left:`${m.xMm*d.value}px`,top:`${m.yMm*d.value}px`,width:`${m.widthMm*d.value}px`,height:`${m.heightMm*d.value}px`,textAlign:m.cell.style?.align??"center"})},e.toDisplayString(m.cell.text),5))),128))],4)):(e.openBlock(),e.createElementBlock("div",et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.columns,(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({width:`${m.widthMm*d.value}px`,opacity:m.hidden?.35:1}),onPointerdown:e.withModifiers(C=>{r("select",{pageIndex:t.pageIndex,componentIndex:y}),r("column",b)},["stop"])},e.toDisplayString(m.header),45,tt))),128))])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList((t.datasets?.[c.dataset]??[]).slice(0,3),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,class:"mr-canvas-table-row"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.columns,(C,B)=>(e.openBlock(),e.createElementBlock("div",{key:B,style:e.normalizeStyle({width:`${C.widthMm*d.value}px`,opacity:C.hidden?.35:1})},e.toDisplayString(m[C.field]??"—"),5))),128))]))),128)),t.datasets?.[c.dataset]?.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",nt,e.toDisplayString(c.dataset)+" · "+e.toDisplayString(n.value.sampleRows),1))]),g(y)&&!t.disabled?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_(c),(m,b)=>(e.openBlock(),e.createElementBlock("span",{key:b,class:"mr-canvas-column-handle","aria-label":`${n.value.resizeColumn} ${c.columns[b]?.header}`,role:"separator","aria-orientation":"vertical",style:e.normalizeStyle({left:`${m*d.value}px`}),onPointerdown:C=>N(C,c,b)},null,44,ot))),128)):e.createCommentVNode("",!0)],64)):c.grid?(e.openBlock(),e.createElementBlock("div",lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x(c),(m,b)=>(e.openBlock(),e.createElementBlock("div",{key:b,style:e.normalizeStyle({left:`${m.xMm*d.value}px`,top:`${m.yMm*d.value}px`,width:`${m.widthMm*d.value}px`,height:`${m.heightMm*d.value}px`,backgroundColor:m.cell.style?.backgroundColor,color:m.cell.style?.color,fontWeight:m.cell.style?.bold?"700":"400",fontSize:`${e.unref(ve.resolveFontSize)(m.cell.style).fontSizePx*v.value}px`,textAlign:m.cell.style?.align??"left"})},e.toDisplayString(m.cell.text),5))),128)),c.grid.cells.reduce((m,b)=>m+b.length,0)>2e3?(e.openBlock(),e.createElementBlock("span",at,e.toDisplayString(n.value.canvasGridLimited),1)):e.createCommentVNode("",!0)])):c.imageData?(e.openBlock(),e.createElementBlock("img",{key:2,src:c.imageData,alt:"",draggable:"false"},null,8,rt)):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mr-canvas-content",style:e.normalizeStyle({color:c.style?.color,backgroundColor:c.style?.backgroundColor,fontWeight:c.style?.bold?"700":"400",fontSize:`${e.unref(ve.resolveFontSize)(c.style).fontSizePx*v.value}px`,textAlign:c.style?.align})},e.toDisplayString(c.text??c.fallbackText??(c.kind==="rect"?"":c.kind)),5)),g(y)&&!t.disabled?(e.openBlock(),e.createElementBlock("span",{key:4,class:"mr-canvas-resize","aria-label":n.value.resizeComponent,role:"separator",onPointerdown:m=>e.unref(i).start(m,c,!0)},null,40,it)):e.createCommentVNode("",!0)],46,Qe))),128))],4)])]))}}),ct=H._export_sfc(st,[["__scopeId","data-v-0b2669dc"]]),dt=["aria-label"],ut=["data-align","aria-label","title","aria-checked","tabindex","onClick","onKeydown"],mt={key:0},pt={key:1,viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},ft={key:0,d:"M3 4h14M3 8h9M3 12h14M3 16h9"},vt={key:1,d:"M3 4h14M6 8h8M3 12h14M6 16h8"},gt={key:2,d:"M3 4h14M8 8h9M3 12h14M8 16h9"},ht={key:3,d:"M3 4h14M3 8h14M3 12h14M3 16h14"},yt=e.defineComponent({__name:"AlignmentControl",props:{modelValue:{},label:{},labels:{},autoLabel:{},allowAuto:{type:Boolean}},emits:["update:modelValue"],setup(t,{emit:s}){const l=t,r=s,n=()=>l.allowAuto?["auto","left","center","right","justify"]:["left","center","right","justify"];async function v(d,E){if(!["ArrowLeft","ArrowRight","Home","End"].includes(d.key))return;d.preventDefault();const g=n(),k=g.indexOf(E),V=d.key==="Home"?0:d.key==="End"?g.length-1:(k+(d.key==="ArrowRight"?1:-1)+g.length)%g.length;r("update:modelValue",g[V]);const _=d.currentTarget.parentElement;await e.nextTick(),_?.querySelector(`[data-align="${g[V]}"]`)?.focus()}return(d,E)=>(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(),i=>(e.openBlock(),e.createElementBlock("button",{key:i,type:"button",role:"radio","data-align":i,"aria-label":t.labels[i],title:t.labels[i],"aria-checked":t.modelValue===i,tabindex:t.modelValue===i?0:-1,onClick:g=>r("update:modelValue",i),onKeydown:g=>v(g,i)},[i==="auto"?(e.openBlock(),e.createElementBlock("span",mt,e.toDisplayString(t.autoLabel),1)):(e.openBlock(),e.createElementBlock("svg",pt,[i==="left"?(e.openBlock(),e.createElementBlock("path",ft)):i==="center"?(e.openBlock(),e.createElementBlock("path",vt)):i==="right"?(e.openBlock(),e.createElementBlock("path",gt)):(e.openBlock(),e.createElementBlock("path",ht))]))],40,ut))),128))],8,dt))}}),he=H._export_sfc(yt,[["__scopeId","data-v-c85770c4"]]),kt=["disabled"],bt={class:"mr-component-dimensions"},Et=["min","value","onChange"],wt={key:0},St=["value"],Vt={value:""},Nt={value:"header"},xt={value:"footer"},Ct={key:1},Bt=["value"],Mt=["value"],Dt={class:"mr-component-upload"},_t=["aria-label"],Tt={key:0,role:"alert"},$t={key:3,class:"mr-component-type"},Rt={class:"mr-component-dimensions"},It=["value"],Lt=["checked"],At={class:"mr-component-dimensions"},Gt=["value"],Pt=["value"],Ft={key:4},zt=["value"],Ht=e.defineComponent({__name:"CanvasComponentInspector",props:{component:{},disabled:{type:Boolean},messages:{}},emits:["geometry","patch"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(""),d=["leftMm","topMm","widthMm","heightMm"],E=e.computed(()=>[n.value.leftPosition,n.value.topPosition,n.value.componentWidth,n.value.componentHeight]);function i(x,p){const f=Number(p.target.value);Number.isFinite(f)&&r("geometry",{...le(l.component),[x]:f})}function g(x,p){if(l.component.kind==="list")return;const f={...l.component.style,[x]:p};x==="fontSize"&&delete f.fontSizePx,r("patch",{style:f})}const k=e.computed(()=>({auto:n.value.auto,left:n.value.left,center:n.value.center,right:n.value.right,justify:n.value.justify}));function V(x){return x.target.value}async function _(x){const p=x.target,f=p.files?.[0];if(!f)return;v.value="";const N=l.component;try{if(f.size>4*1024*1024||!["image/png","image/jpeg","image/webp","image/svg+xml"].includes(f.type))throw new Error(n.value.imageBudget);const h=new FileReader,w=await new Promise((c,y)=>{h.onload=()=>c(String(h.result)),h.onerror=()=>y(h.error),h.readAsDataURL(f)});!l.disabled&&l.component===N&&r("patch",{imageData:w})}catch(h){v.value=h instanceof Error?h.message:String(h)}finally{p.value=""}}return(x,p)=>(e.openBlock(),e.createElementBlock("fieldset",{class:"mr-component-properties",disabled:t.disabled},[e.createElementVNode("h3",null,e.toDisplayString(n.value.positionGroup),1),e.createElementVNode("div",bt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.filter(f=>t.component.kind!=="list"||f!=="heightMm"),(f,N)=>(e.openBlock(),e.createElementBlock("label",{key:f},[e.createTextVNode(e.toDisplayString(E.value[N]),1),e.createElementVNode("input",{type:"number",step:"0.5",min:f==="widthMm"||f==="heightMm"?2:0,value:e.unref(le)(t.component)[f],onChange:h=>i(f,h)},null,40,Et)]))),128))]),t.component.kind!=="list"?(e.openBlock(),e.createElementBlock("label",wt,[e.createTextVNode(e.toDisplayString(n.value.repeatPage),1),e.createElementVNode("select",{value:t.component.pageAnchor??"",onChange:p[0]||(p[0]=f=>r("patch",{pageAnchor:V(f)||void 0}))},[e.createElementVNode("option",Vt,e.toDisplayString(n.value.repeatNone),1),e.createElementVNode("option",Nt,e.toDisplayString(n.value.repeatHeader),1),e.createElementVNode("option",xt,e.toDisplayString(n.value.repeatFooter),1)],40,St)])):e.createCommentVNode("",!0),e.createElementVNode("h3",null,e.toDisplayString(n.value.componentContent),1),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("label",Ct,[e.createTextVNode(e.toDisplayString(n.value.componentText),1),e.createElementVNode("textarea",{rows:"4",value:t.component.text,onChange:p[1]||(p[1]=f=>r("patch",{text:V(f)}))},null,40,Bt)])):e.createCommentVNode("",!0),t.component.kind==="image"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.imageSource),1),e.createElementVNode("textarea",{rows:"2",value:t.component.imageData,onChange:p[2]||(p[2]=f=>r("patch",{imageData:V(f)}))},null,40,Mt)]),e.createElementVNode("label",Dt,[e.createTextVNode(e.toDisplayString(n.value.imageUpload),1),e.createElementVNode("input",{type:"file",accept:"image/png,image/jpeg,image/webp,image/svg+xml","aria-label":n.value.imageUpload,onChange:_},null,40,_t)]),v.value?(e.openBlock(),e.createElementBlock("p",Tt,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.component.kind==="text"?(e.openBlock(),e.createElementBlock("div",$t,[e.createElementVNode("h3",null,e.toDisplayString(n.value.textFormat),1),e.createElementVNode("div",Rt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontSize),1),e.createElementVNode("input",{type:"number",min:"1",max:"200",value:e.unref(ve.resolveFontSize)(t.component.style).fontSizePt,onChange:p[3]||(p[3]=f=>g("fontSize",Number(V(f))))},null,40,It)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.fontBold),1),e.createElementVNode("input",{type:"checkbox",checked:t.component.style?.bold===!0,onChange:p[4]||(p[4]=f=>g("bold",f.target.checked))},null,40,Lt)])]),e.createVNode(he,{"model-value":t.component.style?.align??"left",label:n.value.bodyAlign,labels:k.value,"auto-label":n.value.autoShort,"onUpdate:modelValue":p[5]||(p[5]=f=>g("align",f))},null,8,["model-value","label","labels","auto-label"]),e.createElementVNode("div",At,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.textColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.color??"#233c5c",onChange:p[6]||(p[6]=f=>g("color",V(f)))},null,40,Gt)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.backgroundColor),1),e.createElementVNode("input",{type:"color",value:t.component.style?.backgroundColor??"#ffffff",onChange:p[7]||(p[7]=f=>g("backgroundColor",V(f)))},null,40,Pt)])])])):e.createCommentVNode("",!0),t.component.kind==="list"?(e.openBlock(),e.createElementBlock("label",Ft,[e.createTextVNode(e.toDisplayString(n.value.listDataset),1),e.createElementVNode("input",{value:t.component.dataset,onChange:p[8]||(p[8]=f=>r("patch",{dataset:V(f)}))},null,40,zt)])):e.createCommentVNode("",!0)],8,kt))}}),Ot=H._export_sfc(Ht,[["__scopeId","data-v-2dcbd9cb"]]),jt={class:"mr-header-editor"},Ut=["disabled"],Jt=["value"],Kt=["value"],Wt=["value"],qt=["disabled"],Xt=e.defineComponent({__name:"HeaderStructureEditor",props:{list:{},disabled:{type:Boolean},messages:{}},emits:["command"],setup(t,{emit:s}){const l=t,r=s,n=e.computed(()=>({...ae,...l.messages})),v=e.ref(0),d=e.ref(0),E=e.ref(Math.min(1,l.list.columns.length-1));return e.watch(()=>l.list.columns.length,i=>{d.value=Math.min(d.value,i-1),E.value=Math.min(E.value,i-1)}),(i,g)=>(e.openBlock(),e.createElementBlock("details",jt,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(n.value.headerStructure),1),e.createElementVNode("span",null,e.toDisplayString(t.list.headerGrid?.cells.length??1)+" "+e.toDisplayString(n.value.headerRow),1)]),e.createElementVNode("fieldset",{disabled:t.disabled},[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerRow),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[0]||(g[0]=k=>v.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.headerGrid?.cells.length??1,k=>(e.openBlock(),e.createElementBlock("option",{key:k,value:k-1},e.toDisplayString(k),9,Jt))),128))],512),[[e.vModelSelect,v.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerFirst),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[1]||(g[1]=k=>d.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(k,V)=>(e.openBlock(),e.createElementBlock("option",{key:V,value:V},e.toDisplayString(V+1)+" · "+e.toDisplayString(k.header),9,Kt))),128))],512),[[e.vModelSelect,d.value,void 0,{number:!0}]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(n.value.headerLast),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[2]||(g[2]=k=>E.value=k)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.list.columns,(k,V)=>(e.openBlock(),e.createElementBlock("option",{key:V,value:V},e.toDisplayString(V+1)+" · "+e.toDisplayString(k.header),9,Wt))),128))],512),[[e.vModelSelect,E.value,void 0,{number:!0}]])]),e.createElementVNode("div",null,[e.createElementVNode("button",{type:"button",onClick:g[3]||(g[3]=k=>r("command",{action:"add",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.addHeaderRow),1),e.createElementVNode("button",{type:"button",disabled:d.value>=E.value,onClick:g[4]||(g[4]=k=>r("command",{action:"merge",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.mergeHeader),9,qt),e.createElementVNode("button",{type:"button",onClick:g[5]||(g[5]=k=>r("command",{action:"split",row:v.value,first:d.value,last:E.value}))},e.toDisplayString(n.value.splitHeader),1)])],8,Ut)]))}}),Yt=H._export_sfc(Xt,[["__scopeId","data-v-acd607ef"]]);function Qt(t,s){const l=e.ref("preview"),r=e.ref(),n=e.ref(0),v=e.computed(()=>pe(t.value,r.value));e.watch(t,()=>{v.value||(r.value=void 0),t.value.template.pages[n.value]||(n.value=0)});function d(x){r.value=x,n.value=x.pageIndex}function E(x){const p=r.value;return p?s(f=>{const N=pe(f,p);N&&x(N,f)}):!1}function i(x){E((p,f)=>{const N=f.template.pages[r.value.pageIndex];Ve(p,ge(x,N,p.kind==="list"))})}function g(x){let p=-1;const f=n.value;s(N=>{const h=N.template.pages[f].components;h.push(Fe(x)),p=h.length-1})&&d({pageIndex:f,componentIndex:p})}function k(){const x=r.value;x&&s(p=>{p.template.pages[x.pageIndex].components.splice(x.componentIndex,1)})&&(r.value=void 0)}function V(){const x=r.value;if(!x)return;let p=-1;s(f=>{const N=f.template.pages[x.pageIndex],h=JSON.parse(JSON.stringify(pe(f,x))),w=le(h);w.leftMm+=4,w.topMm+=4,Ve(h,ge(w,N,h.kind==="list")),h.kind==="list"?delete h.id:(delete h.nid,delete h.rkey),N.components.push(h),p=N.components.length-1})&&d({pageIndex:x.pageIndex,componentIndex:p})}function _(x){const p=r.value;if(!p)return;const f=p.componentIndex+x;t.value.template.pages[p.pageIndex]?.components[f]&&s(N=>{const h=N.template.pages[p.pageIndex].components;h.splice(f,0,h.splice(p.componentIndex,1)[0])})&&d({pageIndex:p.pageIndex,componentIndex:f})}return{mode:l,selection:r,pageIndex:n,active:v,select:d,mutate:E,geometry:i,insert:g,remove:k,duplicate:V,reorder:_}}function Zt(t,s,l){const{draft:r,lists:n,selected:v,activeList:d,blocked:E,jsonPending:i,error:g}=t,{section:k,activeIndex:V}=s,_=Qt(r,t.transaction),{mode:x,selection:p,pageIndex:f,active:N}=_,h=e.ref("excel"),w=e.ref(new Set);e.watch([k,h],()=>{k.value==="tools"&&(w.value=new Set([...w.value,h.value]))}),e.watch(p,S=>{if(!S)return;const M=n.value.findIndex(D=>D.pageIndex===S.pageIndex&&D.componentIndex===S.componentIndex);M>=0&&(v.value=M)});const c=e.computed(()=>t.editingReadonly.value||E.value||i.value),y=e.computed(()=>l()?.[d.value?.dataset??""]);function m(S){x.value=S,k.value==="tools"&&(k.value=S==="design"?"component":"fields")}function b(S){if(!r.value.template.pages[S.pageIndex]?.components[S.componentIndex])return;if(_.select(S),r.value.template.pages[S.pageIndex]?.components[S.componentIndex]?.kind==="list"){const D=n.value.findIndex($=>$.pageIndex===S.pageIndex&&$.componentIndex===S.componentIndex);D>=0&&(v.value=D),k.value="fields"}else k.value="component"}function C(S){const M=S.target;M.value&&(_.insert(M.value),x.value="design",k.value="component",M.value="")}function B(S){_.mutate((M,D)=>{if(M.kind!=="list"&&S.pageAnchor!==M.pageAnchor){const P=D.template.pages[p.value.pageIndex];S.pageAnchor==="header"&&(M.topMm=P.marginTopMm??0),S.pageAnchor==="footer"&&(M.topMm=Math.max(0,P.heightMm-(P.marginBottomMm??0)-M.heightMm))}const $=M;for(const[P,q]of Object.entries(S))q===void 0?delete $[P]:$[P]=q})}function L(S){const M=n.value[v.value];M&&t.transaction(D=>{D.template.pages[M.pageIndex].components[M.componentIndex]=S})}function j(S){const M=d.value;if(!M)return;const D=JSON.parse(JSON.stringify(M));try{ze(D,V.value,V.value+S)&&(L(D),s.activate(V.value+S))}catch($){g.value=$ instanceof Error?$.message:String($)}}function o(S){const M=n.value[v.value];M&&t.transaction(D=>{const $=D.template.pages[M.pageIndex].components[M.componentIndex];$?.kind==="list"&&(S.action==="add"?He($):S.action==="merge"?Oe($,S.row,S.first,S.last):je($,S.row,S.first))})}function z(S){const M=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(S.path??""),D=S.pageIndex??(M?Number(M[1]):void 0),$=S.componentIndex??(M?Number(M[2]):void 0);if(!(D===void 0||$===void 0)&&(x.value="design",b({pageIndex:D,componentIndex:$}),S.field)){const P=d.value?.columns.findIndex(q=>q.field===S.field);P!==void 0&&P>=0&&s.activate(P)}}return{mode:x,setMode:m,canvasSelection:p,canvasPage:f,canvasActive:N,tool:h,visitedTools:w,editDisabled:c,dataSchema:y,chooseCanvas:b,insertComponent:C,patchCanvas:B,changeList:L,moveColumn:j,headerCommand:o,locateReview:z,canvas:_}}function en(t,s,l){if(!t.length)return;const r=Math.max(0,t.indexOf(s)),v={ArrowDown:Math.min(r+1,t.length-1),ArrowUp:Math.max(r-1,0),Home:0,End:t.length-1}[l];return v===void 0?void 0:t[v]}function tn(t,s,l){const r=e.ref(!1),n=e.ref(t.activeIndex.value),v=e.ref(null),d=e.ref(null),E=e.ref(null),i=e.ref(null);function g(w=!1){const c=i.value,y=c?.querySelector(`button[data-column-index="${n.value}"]`);if(!c||!y)return;w&&y.focus({preventScroll:!0});const m=c.getBoundingClientRect(),b=y.getBoundingClientRect(),C=m.top+c.clientTop,B=C+c.clientHeight;b.top<C?c.scrollTop+=b.top-C:b.bottom>B&&(c.scrollTop+=b.bottom-B)}async function k(w=!1){r.value&&(r.value=!1,w&&(await e.nextTick(),v.value?.focus({preventScroll:!0})))}async function V(){if(r.value)return k(!0);const w=l.value.map(c=>c.index);n.value=w.includes(t.activeIndex.value)?t.activeIndex.value:w[0]??-1,r.value=!0,await e.nextTick(),E.value?.focus({preventScroll:!0}),g()}function _(w){t.activate(w),k(!0)}function x(w){r.value&&(w.preventDefault(),w.stopPropagation(),k(!0))}async function p(w){const c=en(l.value.map(y=>y.index),n.value,w.key);c!==void 0&&(n.value=c,w.preventDefault(),await e.nextTick(),g(!0))}async function f(w){if(!["ArrowDown","ArrowUp","Enter"].includes(w.key))return;w.preventDefault(),w.stopPropagation();const c=l.value.map(y=>y.index);if(c.length){if(w.key==="Enter"){c.includes(n.value)&&_(n.value);return}w.key==="ArrowUp"&&(n.value=c.at(-1)),await e.nextTick(),g(!0)}}function N(w){const c=w.target;!r.value||d.value?.contains(c)||v.value?.contains(c)||k()}function h(w){const c=w.relatedTarget;!c||d.value?.contains(c)||v.value?.contains(c)||k()}return e.watch(l,w=>{w.some(c=>c.index===n.value)||(n.value=w[0]?.index??-1)}),e.watch(s,()=>{k()}),e.onMounted(()=>document.addEventListener("pointerdown",N)),e.onBeforeUnmount(()=>document.removeEventListener("pointerdown",N)),{open:r,cursor:n,trigger:v,panel:d,search:E,list:i,toggle:V,close:k,choose:_,escape:x,navigate:p,searchKeydown:f,leave:h}}function nn(t,s,l,r){const n=e.ref(0),v=e.ref(""),d=e.ref([]),E=e.computed(()=>t.value.template.pages.flatMap((c,y)=>c.components.flatMap((m,b)=>m.kind==="list"?[{component:m,pageIndex:y,componentIndex:b}]:[]))),i=e.computed(()=>E.value[n.value]?.component),g=e.computed(()=>{const c=i.value;if(!c)return[];const y=c.columns.map(m=>m.headerStyle?.align??m.headerAlign??c.headerStyle?.align??c.headerAlign??m.style?.align??"center");if(c.headerGrid&&s())for(const m of T.resolveGridLayout(c.headerGrid,c.widthMm,100).cells)for(let b=m.ci;b<m.ci+(m.cell.colSpan??1);b++)y[b]=m.cell.style?.align??"left";return y}),k=e.computed(()=>{const c=v.value.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return(i.value?.columns??[]).flatMap((y,m)=>{const b=`${y.header} ${y.field}`.toLocaleLowerCase();return c.every(C=>b.includes(C))?[{column:y,index:m}]:[]})});function V(c,y){d.value=y?[...new Set([...d.value,c])]:d.value.filter(m=>m!==c)}function _(c){for(const y of k.value)V(y.index,c)}function x(){d.value=[]}function p(c,y,m){if(!l())return;const b=i.value?.columns[c];b&&(y==="hidden"&&m===!0&&!i.value?.columns.some((C,B)=>B!==c&&!C.hidden)||(Object.assign(b,{[y]:y==="widthMm"?Number(m):m}),y==="header"&&N(c,String(m)),y==="headerAlign"&&h(c,m),y==="widthMm"&&f(),r()))}function f(){const c=E.value[n.value];if(!c)return;const y=c.component,m=t.value.template.pages[c.pageIndex],b=y.columns.map(C=>C.widthMm);y.headerGrid&&(y.headerGrid.colWidthsMm=b),m.layout==="wide"&&b.every(C=>Number.isFinite(C)&&C>0)&&(y.widthMm=b.reduce((C,B)=>C+B,0),m.widthMm=Math.max(...m.components.map(C=>C.leftMm+C.widthMm))+(m.marginRightMm??0))}function N(c,y){const m=i.value;if(!m?.headerGrid)return;const C=T.resolveGridLayout(m.headerGrid,m.widthMm,100).cells.filter(({ci:B,cell:L})=>B<=c&&B+(L.colSpan??1)>c).slice(-1)[0];C&&(Object.assign(C.cell,{text:y,rawText:y,value:y}),m.columns.slice(C.ci,C.ci+(C.cell.colSpan??1)).forEach(B=>{B.header=y}))}function h(c,y){const m=i.value,b=m?.columns[c];if(b?.headerStyle?.align!==void 0&&(b.headerStyle={...b.headerStyle,align:y}),!m?.headerGrid)return;const B=T.resolveGridLayout(m.headerGrid,m.widthMm,100).cells.filter(({ci:L,cell:j})=>L<=c&&L+(j.colSpan??1)>c).slice(-1)[0];B&&(B.cell.style={...B.cell.style,align:y},m.columns.slice(B.ci,B.ci+(B.cell.colSpan??1)).forEach(L=>{L.headerAlign=y,L.headerStyle?.align!==void 0&&(L.headerStyle={...L.headerStyle,align:y})}))}function w(c,y){if(!(!l()||c==="headerAlign"&&y==="auto")){for(const m of d.value){const b=i.value?.columns[m];b&&(Object.assign(b,{[c]:y}),c==="headerAlign"&&h(m,y))}r()}}return{selected:n,query:v,selectedColumns:d,lists:E,activeList:i,headerAlignments:g,visibleColumns:k,toggleColumn:V,selectVisible:_,clearSelection:x,setColumn:p,alignColumns:w}}function ee(t){return t.kind==="snapshot"?t.value.length*2:(t.removed.length+t.inserted.length)*2+16}function on(t,s,l=!1){const r={kind:"snapshot",value:s};if(l)return r;let n=0;const v=Math.min(t.length,s.length);for(;n<v&&t.charCodeAt(n)===s.charCodeAt(n);)n++;let d=t.length,E=s.length;for(;d>n&&E>n&&t.charCodeAt(d-1)===s.charCodeAt(E-1);)d--,E--;const i={kind:"patch",start:n,removed:t.slice(n,d),inserted:s.slice(n,E)};return ee(i)<ee(r)?i:r}function se(t,s,l=!1){if(s.kind==="snapshot")return s.value;const r=l?s.inserted:s.removed,n=l?s.removed:s.inserted;return t.slice(0,s.start)+n+t.slice(s.start+r.length)}function ln(t,s={entries:100,bytes:16*1024*1024}){if(![s.entries,s.bytes].every(p=>Number.isSafeInteger(p)&&p>0))throw new RangeError("History budgets must be positive safe integers");const l=e.shallowRef([{kind:"snapshot",value:t}]),r=e.ref(0),n=e.ref(t),v=e.computed(()=>r.value>0),d=e.computed(()=>r.value+1<l.value.length),E=e.computed(()=>n.value),i=e.computed(()=>l.value.reduce((p,f)=>p+ee(f),0));function g(p){l.value=[{kind:"snapshot",value:p}],r.value=0,n.value=p}function k(p){let f=p;for(;f>0&&l.value[f].kind!=="snapshot";)f--;let N="";for(;f<=p;f++)N=se(N,l.value[f]);return N}function V(p){let f=p.reduce((N,h)=>N+ee(h),0);for(;p.length>1&&(p.length>s.entries||f>s.bytes);){const N=p[0],h=p[1],w={kind:"snapshot",value:se(N.value,h)};f+=ee(w)-ee(N)-ee(h),p.splice(0,2,w)}return p}function _(p){if(n.value===p)return;const f=l.value.slice(0,r.value+1);f.push(on(n.value,p,f.length%20===0)),l.value=V(f),r.value=l.value.length-1,n.value=p}function x(p){if(p<0?!v.value:!d.value)return;const f=l.value[r.value];return p<0&&f.kind==="patch"?n.value=se(n.value,f,!0):p>0?n.value=se(n.value,l.value[r.value+1]):n.value=k(r.value-1),r.value+=p,n.value}return{canUndo:v,canRedo:d,current:E,retainedBytes:i,reset:g,record:_,move:x}}function an(t){const s=e.shallowRef(null),l=e.ref(!1);let r,n=0;function v(i){r?.(i),r=void 0,s.value=null}function d(){n++,v(!1),l.value=!1}async function E(i){d();const g=n,k=t();l.value=!0;try{const V=await new Promise((_,x)=>{if(r=_,!k){s.value=i;return}Promise.resolve().then(()=>n===g?k(i):!1).then(p=>{n===g&&v(p===!0)},p=>{n===g&&(r=void 0,s.value=null,x(p))})});return n===g&&V===!0}finally{n===g&&(l.value=!1)}}return e.onBeforeUnmount(d),{confirmation:s,pending:l,decide:v,request:E,cancel:d}}function rn(t,s){const l=e.ref(T.parseReportTemplate(t.modelValue)),r=e.ref(T.serializeReportTemplate(l.value)),n=e.ref(T.serializeReportTemplate(l.value)),v=e.ref(""),d=e.ref(!1),E=e.computed(()=>({...ae,...t.messages})),i=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}}));fe.provideMachReportConfig({get defaults(){return i.value}});let g,k=0;const V=e.computed(()=>T.validateReportTemplateDocument(l.value)),_=e.computed(()=>{try{return T.serializeReportTemplate(l.value)!==r.value}catch{return!0}}),x=e.ref(n.value),p=e.computed(()=>n.value!==x.value),f=e.computed(()=>_.value||n.value!==x.value),N=()=>JSON.stringify({document:l.value,json:n.value,appliedJson:x.value}),h=ln(N()),w=an(()=>t.beforeDiscard),c=e.computed(()=>d.value||w.pending.value),y=()=>!t.readonly&&!c.value&&!p.value,m=nn(l,()=>V.value.ok,y,$),{selected:b,lists:C,activeList:B,headerAlignments:L,setColumn:j}=m;e.watch(b,()=>m.clearSelection());const o=e.computed(()=>V.value.ok?fe.createLocalFetcher({draft:{template:l.value.template,datasets:t.datasets??{},params:[]}}):void 0);function z(){k++,g?.abort(),g=void 0,d.value=!1}let S=0;async function M(R="replace",I){if(!f.value)return!0;const G=N();try{return await w.request({reason:R,document:JSON.parse(JSON.stringify(l.value)),replacement:I?T.parseReportTemplate(I):void 0,pendingLocalChanges:!0})&&G===N()}catch(U){return v.value=U instanceof Error?U.message:String(U),!1}}function D(R){z(),l.value=R,r.value=T.serializeReportTemplate(R),n.value=r.value,x.value=n.value,v.value="",b.value=0,m.clearSelection(),h.reset(N())}e.watch(()=>t.modelValue,async R=>{let I;try{I=T.parseReportTemplate(R)}catch(U){v.value=U instanceof Error?U.message:String(U);return}try{if(T.serializeReportTemplate(I)===T.serializeReportTemplate(l.value))return}catch{}const G=++S;if(z(),!await M("replace",I)){G===S&&V.value.ok&&s("update:modelValue",T.parseReportTemplate(l.value));return}G===S&&D(I)}),e.onBeforeUnmount(()=>{S++,z()});function $(){w.cancel(),v.value="",V.value.ok&&(n.value=T.serializeReportTemplate(l.value),x.value=n.value,s("update:modelValue",T.parseReportTemplate(l.value))),h.record(N())}function P(R){if(!y())return!1;try{const I=T.parseReportTemplate(l.value);R(I);const G=T.validateReportTemplateDocument(I);if(!G.ok)throw new Error(G.errors.map(U=>`${U.path}: ${U.message}`).join(`
2
+ `));return l.value=I,$(),!0}catch(I){return v.value=I instanceof Error?I.message:String(I),!1}}async function q(R){if(!y())return!1;try{const I=T.parseReportTemplate(R);return!await M("replace",I)||!y()?!1:(l.value=I,b.value=0,m.clearSelection(),$(),!0)}catch(I){return v.value=I instanceof Error?I.message:String(I),!1}}function oe(R){y()&&(l.value.name=R,$())}function re(R){y()&&(l.value.description=R,$())}function Y(){if(!(t.readonly||c.value))try{const R=T.parseReportTemplate(n.value);if(R.id!==l.value.id)throw new Error("属性编辑不允许更换模板 ID,请另存为新模板");if(R.revision!==l.value.revision)throw new Error("修订号由保存服务管理,不能在 JSON 中修改");l.value=R,b.value=0,m.clearSelection(),$()}catch(R){v.value=R instanceof Error?R.message:String(R)}}async function K(){c.value||t.readonly||!await M("reset")||(D(T.parseReportTemplate(r.value)),s("update:modelValue",T.parseReportTemplate(l.value)))}function W(R){if(c.value||t.readonly)return;h.record(N());const I=h.move(R);if(!I)return;w.cancel();const G=JSON.parse(I);l.value=G.document,n.value=G.json,x.value=G.appliedJson,v.value="",b.value=0,m.clearSelection(),V.value.ok&&s("update:modelValue",T.parseReportTemplate(l.value))}async function Q(){if(!t.save||!y()||!V.value.ok)return;const R=++k;g=new AbortController,d.value=!0,v.value="";const I=T.parseReportTemplate(l.value);try{const G=T.parseReportTemplate(await t.save(I,{expectedRevision:I.revision,signal:g.signal}));if(R!==k)return;if(G.id!==I.id)throw new Error("保存服务返回了其他模板的文档");l.value=G,r.value=T.serializeReportTemplate(G),n.value=r.value,x.value=n.value,h.reset(N()),s("saved",T.parseReportTemplate(G)),s("update:modelValue",T.parseReportTemplate(G))}catch(G){R===k&&(v.value=G instanceof Error?G.message:String(G))}finally{R===k&&(d.value=!1,g=void 0)}}const te=e.computed(()=>h.canUndo.value||N()!==h.current.value),J=e.computed(()=>h.canRedo.value&&N()===h.current.value);return{...m,editingReadonly:e.computed(()=>t.readonly===!0),transaction:P,replaceDocument:q,originalDocument:e.computed(()=>T.parseReportTemplate(r.value)),canUndo:te,canRedo:J,undo:()=>W(-1),redo:()=>W(1),pendingLocalChanges:f,jsonPending:p,blocked:c,confirmation:w.confirmation,decideDiscard:w.decide,guardChanges:M,draft:l,json:n,selected:b,error:v,saving:d,dirty:_,validation:V,lists:C,activeList:B,headerAlignments:L,previewOptions:i,fetcher:o,messages:E,setName:oe,setDescription:re,setColumn:j,applyJson:Y,reset:K,save:Q}}function sn(t,s){const l=e.ref("fields"),r=()=>s.value?.columns.length?0:-1,n=e.ref(r()),v=e.computed(()=>{const i=s.value?.columns[n.value];return i?{column:i,index:n.value}:void 0});e.watch(t,()=>{n.value=r()}),e.watch(s,i=>{i?.columns[n.value]||(n.value=r())});function d(i){s.value?.columns[i]&&(n.value=i)}function E(i){const g=s.value?.columns.length??0;g&&(n.value=Math.max(0,Math.min(g-1,n.value+i)))}return{section:l,activeIndex:n,activeColumn:v,activate:d,stepColumn:E}}const cn=["aria-label","aria-busy"],dn={class:"mr-designer-bar"},un={class:"mr-designer-heading"},mn=["aria-label"],pn=["id","aria-selected","aria-controls","tabindex","onClick"],fn=["aria-label"],vn=["aria-pressed"],gn=["aria-pressed"],hn={class:"mr-designer-actions"},yn={class:"mr-designer-history"},kn=["aria-label","title","disabled"],bn=["aria-label","title","disabled"],En=["disabled"],wn=["disabled"],Sn=["aria-label"],Vn={key:0,class:"mr-designer-tools"},Nn=["aria-label"],xn=["aria-pressed","onClick"],Cn={class:"mr-designer-tool-content"},Bn={key:2,class:"mr-designer-rule-workspace"},Mn={key:0},Dn=["value"],_n={key:2,class:"mr-designer-note"},Tn={key:1,class:"mr-designer-inspector"},$n=["id","aria-labelledby"],Rn={key:0,class:"mr-designer-area"},In=["value"],Ln={class:"mr-designer-current"},An=["aria-expanded","aria-controls"],Gn={class:"mr-designer-current-name"},Pn={class:"mr-designer-directory-entry"},Fn={class:"mr-designer-field-position"},zn=["aria-label"],Hn=["aria-label","title","disabled"],On=["aria-label","title","disabled"],jn=["disabled","aria-label"],Un={class:"mr-designer-property-group"},Jn=["value"],Kn=["value","list"],Wn=["id"],qn=["value"],Xn={class:"mr-designer-property-group"},Yn={class:"mr-designer-format-pair"},Qn={class:"mr-designer-stacked"},Zn=["value"],eo={class:"mr-designer-stacked"},to=["value"],no={value:"identifier"},oo={value:"dimension"},lo={value:"measure"},ao={value:"date"},ro={value:"text"},io={class:"mr-designer-control-row"},so={class:"mr-designer-control-row"},co={class:"mr-designer-toggle"},uo=["checked"],mo={class:"mr-designer-column-structure"},po=["aria-label","title","disabled"],fo=["aria-label","title","disabled"],vo=["checked","disabled"],go=["id","aria-label"],ho={class:"mr-designer-directory-heading"},yo=["aria-label"],ko={class:"mr-designer-search"},bo=["aria-label","placeholder"],Eo=["aria-label","title"],wo={class:"mr-designer-column-tools"},So=["disabled"],Vo={key:1,role:"status"},No={key:2},xo=["aria-label"],Co=["aria-label","checked","disabled","onChange"],Bo=["data-column-index","aria-pressed","tabindex","onClick"],Mo={class:"mr-designer-column-number"},Do={class:"mr-designer-column-name"},_o={key:0,role:"status",class:"mr-designer-empty"},To={key:0,class:"mr-designer-batch"},$o=["aria-label","disabled"],Ro={value:""},Io={value:"auto"},Lo={value:"left"},Ao={value:"center"},Go={value:"right"},Po={value:"justify"},Fo=["aria-label","disabled"],zo={value:""},Ho={value:"left"},Oo={value:"center"},jo={value:"right"},Uo={value:"justify"},Jo={key:2,role:"status",class:"mr-designer-empty"},Ko={class:"mr-designer-object-tools"},Wo=["aria-label","disabled"],qo={value:""},Xo={value:"text"},Yo={value:"list"},Qo={value:"image"},Zo={value:"rect"},el=["title","aria-label","disabled"],tl=["title","aria-label","disabled"],nl={key:0},ol=["value"],ll={class:"mr-designer-stacked"},al=["value"],rl={value:-1,disabled:""},il=["value"],sl={class:"mr-designer-layer-tools"},cl=["disabled"],dl=["disabled"],ul={key:2,class:"mr-designer-empty"},ml={class:"mr-designer-stacked"},pl=["value","disabled"],fl={class:"mr-designer-stacked"},vl=["value","disabled"],gl={class:"mr-designer-technical"},hl={class:"mr-designer-identity"},yl={class:"mr-designer-stacked mr-designer-json-label"},kl=["aria-label","disabled"],bl=["disabled"],El={key:4,role:"status",class:"mr-designer-note mr-designer-pending"},wl=["aria-label"],Sl={key:0,role:"alert",class:"mr-designer-error"},Vl={key:1,role:"alert",class:"mr-designer-error"},Nl={key:4,class:"mr-designer-note mr-designer-invalid"},xl=e.defineComponent({__name:"ReportTemplateEditor",props:{modelValue:{},datasets:{},dataSchemas:{},bindingDatasets:{},bindingSession:{},readonly:{type:Boolean},messages:{},preview:{},beforeDiscard:{type:Function},save:{type:Function}},emits:["update:modelValue","saved","excel-bound"],setup(t,{expose:s,emit:l}){const r=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-DiaxvWpQ.cjs"))),n=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-CskN5Fr3.cjs"))),v=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-C_Lmzis6.cjs"))),d=t,E=l,i=rn(d,(F,u)=>{E(F==="saved"?"saved":"update:modelValue",u)}),{draft:g,json:k,selected:V,error:_,saving:x,pendingLocalChanges:p,jsonPending:f,blocked:N,confirmation:h,canUndo:w,canRedo:c,validation:y,lists:m,activeList:b,visibleColumns:C,query:B,selectedColumns:L,fetcher:j,messages:o}=i,z=sn(V,b),{section:S,activeIndex:M,activeColumn:D}=z,$=`mr-designer-${e.getCurrentInstance()?.uid??0}`,P=["fields","component","template","tools","advanced"],q=Zt(i,z,()=>d.dataSchemas),{mode:oe,setMode:re,canvasSelection:Y,canvasPage:K,canvasActive:W,tool:Q,visitedTools:te,editDisabled:J,dataSchema:R,chooseCanvas:I,insertComponent:G,patchCanvas:U,changeList:Ce,moveColumn:ke,headerCommand:Be,locateReview:Me,canvas:X}=q,De=e.computed(()=>x.value?o.value.saving:d.readonly?o.value.readonly:p.value?o.value.dirty:o.value.ready),be=e.ref(null),ue=e.ref(null),O=tn(z,S,C),{open:Ee,cursor:_e,trigger:Te,panel:$e,search:Re,list:Ie}=O;e.watch(S,async()=>{await e.nextTick(),ue.value&&(ue.value.scrollTop=0)});const we=e.computed(()=>({auto:o.value.auto,left:o.value.left,center:o.value.center,right:o.value.right,justify:o.value.justify}));let ie=null;e.watch(h,async F=>{F?(ie=document.activeElement,await e.nextTick(),be.value?.focus()):(await e.nextTick(),ie?.isConnected&&ie.focus(),ie=null)}),s({get pendingLocalChanges(){return p.value},get saving(){return x.value},get blocked(){return N.value},guardChanges:i.guardChanges,reset:i.reset,save:i.save});async function Le(F){const u={...F.document,id:g.value.id};if(g.value.revision===void 0?delete u.revision:u.revision=g.value.revision,!await i.replaceDocument(u))return;const a=T.parseReportTemplate(i.draft.value);E("excel-bound",{...F,document:a,session:{...F.session,identity:{id:a.id,name:a.name}}})}function Z(F){return F.target.value}function me(F){return F.target.checked}function Se(F,u){const a=F.target;i.alignColumns(u,a.value),a.value=""}async function Ae(F){const a={ArrowRight:1,ArrowLeft:-1,Home:-P.length,End:P.length}[F.key];if(a===void 0)return;F.preventDefault();const A=P.indexOf(S.value),ne=F.key==="Home"?0:F.key==="End"?P.length-1:(A+a+P.length)%P.length;S.value=P[ne];const Ge=F.currentTarget.parentElement;await e.nextTick(),Ge?.querySelector(`#${$}-tab-${S.value}`)?.focus()}return(F,u)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-designer","aria-label":e.unref(o).title,"aria-busy":e.unref(x)},[e.createElementVNode("header",dn,[e.createElementVNode("div",un,[e.createVNode(H._sfc_main,{name:"columns",size:15}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).heading),1),e.createElementVNode("span",{class:e.normalizeClass({"mr-designer-dirty":e.unref(p)})},e.toDisplayString(De.value),3)]),e.createElementVNode("nav",{class:"mr-designer-tabs",role:"tablist","aria-label":e.unref(o).sectionsLabel},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(P,a=>e.createElementVNode("button",{id:`${$}-tab-${a}`,key:a,type:"button",role:"tab","aria-selected":e.unref(S)===a,"aria-controls":`${$}-panel-${a}`,tabindex:e.unref(S)===a?0:-1,onClick:A=>S.value=a,onKeydown:Ae},e.toDisplayString(e.unref(o)[`${a}Section`]),41,pn)),64))],8,mn),e.createElementVNode("div",{class:"mr-designer-mode",role:"group","aria-label":e.unref(o).design},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(oe)==="design",onClick:u[0]||(u[0]=a=>e.unref(re)("design"))},e.toDisplayString(e.unref(o).design),9,vn),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(oe)==="preview",onClick:u[1]||(u[1]=a=>e.unref(re)("preview"))},e.toDisplayString(e.unref(o).preview),9,gn)],8,fn),e.createElementVNode("div",hn,[e.createElementVNode("div",yn,[e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).undo,title:e.unref(o).undo,disabled:t.readonly||e.unref(N)||!e.unref(w),onClick:u[2]||(u[2]=(...a)=>e.unref(i).undo&&e.unref(i).undo(...a))},[...u[48]||(u[48]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 10h10a6 6 0 0 1 0 12M4 10l5-5M4 10l5 5"})],-1)])],8,kn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).redo,title:e.unref(o).redo,disabled:t.readonly||e.unref(N)||!e.unref(c),onClick:u[3]||(u[3]=(...a)=>e.unref(i).redo&&e.unref(i).redo(...a))},[...u[49]||(u[49]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 10H10a6 6 0 0 0 0 12m10-12-5-5m5 5-5 5"})],-1)])],8,bn)]),e.createElementVNode("button",{type:"button",class:"mr-designer-reset",disabled:t.readonly||e.unref(N)||!e.unref(p),onClick:u[4]||(u[4]=(...a)=>e.unref(i).reset&&e.unref(i).reset(...a))},e.toDisplayString(e.unref(o).reset),9,En),t.save?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-save",disabled:t.readonly||e.unref(N)||e.unref(f)||!e.unref(y).ok||!e.unref(p),onClick:u[5]||(u[5]=(...a)=>e.unref(i).save&&e.unref(i).save(...a))},[e.createVNode(H._sfc_main,{name:"file",size:13}),e.createTextVNode(e.toDisplayString(e.unref(x)?e.unref(o).saving:e.unref(o).save),1)],8,wn)):e.createCommentVNode("",!0)])]),e.unref(h)?(e.openBlock(),e.createElementBlock("div",{key:0,role:"alertdialog","aria-label":e.unref(o).discardTitle,class:"mr-designer-confirm",onKeydown:u[8]||(u[8]=e.withKeys(e.withModifiers(a=>e.unref(i).decideDiscard(!1),["prevent","stop"]),["esc"]))},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(o).discardDescription),1)]),e.createElementVNode("div",null,[e.createElementVNode("button",{ref_key:"keepButton",ref:be,type:"button",onClick:u[6]||(u[6]=a=>e.unref(i).decideDiscard(!1))},e.toDisplayString(e.unref(o).keepEditing),513),e.createElementVNode("button",{type:"button",onClick:u[7]||(u[7]=a=>e.unref(i).decideDiscard(!0))},e.toDisplayString(e.unref(o).discard),1)])],40,Sn)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["mr-designer-body",{"is-tools":e.unref(S)==="tools"}])},[e.unref(te).size?e.withDirectives((e.openBlock(),e.createElementBlock("div",Vn,[e.createElementVNode("nav",{class:"mr-designer-tool-tabs","aria-label":e.unref(o).toolsSection},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["excel","rules","review"],a=>e.createElementVNode("button",{key:a,type:"button","aria-pressed":e.unref(Q)===a,onClick:A=>Q.value=a},e.toDisplayString(e.unref(o)[`${a}Tool`]),9,xn)),64)),e.createElementVNode("span",null,e.toDisplayString(e.unref(o).toolsDescription),1)],8,Nn),e.createElementVNode("div",Cn,[e.unref(te).has("excel")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(r),{key:0,datasets:t.bindingDatasets??[],session:t.bindingSession,identity:{id:e.unref(g).id,name:e.unref(g).name},"lock-id":"",readonly:e.unref(J),onApply:Le},null,8,["datasets","session","identity","readonly"])),[[e.vShow,e.unref(Q)==="excel"]]):e.createCommentVNode("",!0),e.unref(te).has("review")?e.withDirectives((e.openBlock(),e.createBlock(e.unref(v),{key:1,document:e.unref(g),previous:e.unref(i).originalDocument.value,datasets:t.datasets,"data-schemas":t.dataSchemas,onLocate:e.unref(Me)},null,8,["document","previous","datasets","data-schemas","onLocate"])),[[e.vShow,e.unref(Q)==="review"]]):e.createCommentVNode("",!0),e.unref(te).has("rules")?e.withDirectives((e.openBlock(),e.createElementBlock("div",Bn,[e.unref(m).length>1?(e.openBlock(),e.createElementBlock("label",Mn,[e.createTextVNode(e.toDisplayString(e.unref(o).area),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[9]||(u[9]=a=>e.isRef(V)?V.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(a.component.title||a.component.dataset),9,Dn))),128))],512),[[e.vModelSelect,e.unref(V)]])])):e.createCommentVNode("",!0),e.unref(b)?(e.openBlock(),e.createBlock(e.unref(n),{key:1,list:e.unref(b),datasets:t.datasets,"dataset-schema":e.unref(R),"dataset-schemas":t.dataSchemas,readonly:e.unref(J),onChange:e.unref(Ce)},null,8,["list","datasets","dataset-schema","dataset-schemas","readonly","onChange"])):(e.openBlock(),e.createElementBlock("p",_n,e.toDisplayString(e.unref(o).rulesNeedList),1))],512)),[[e.vShow,e.unref(Q)==="rules"]]):e.createCommentVNode("",!0)])],512)),[[e.vShow,e.unref(S)==="tools"]]):e.createCommentVNode("",!0),e.unref(S)!=="tools"?(e.openBlock(),e.createElementBlock("aside",Tn,[e.createElementVNode("div",{ref_key:"inspectorPanel",ref:ue,id:`${$}-panel-${e.unref(S)}`,class:e.normalizeClass(["mr-designer-panel",{"is-advanced":e.unref(S)==="advanced"}]),role:"tabpanel","aria-labelledby":`${$}-tab-${e.unref(S)}`},[e.unref(S)==="fields"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(m).length>1?(e.openBlock(),e.createElementBlock("label",Rn,[e.createTextVNode(e.toDisplayString(e.unref(o).area),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[10]||(u[10]=a=>e.isRef(V)?V.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(a.pageIndex+1)+" "+e.toDisplayString(e.unref(o).page)+" · "+e.toDisplayString(a.component.title||a.component.dataset),9,In))),128))],512),[[e.vModelSelect,e.unref(V)]])])):e.createCommentVNode("",!0),e.unref(b)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ln,[e.createElementVNode("button",{ref_key:"directoryTrigger",ref:Te,type:"button",class:"mr-designer-field-trigger","aria-expanded":e.unref(Ee),"aria-controls":`${$}-directory`,"aria-haspopup":"dialog",onClick:u[11]||(u[11]=(...a)=>e.unref(O).toggle&&e.unref(O).toggle(...a)),onKeydown:u[12]||(u[12]=e.withKeys((...a)=>e.unref(O).escape&&e.unref(O).escape(...a),["esc"]))},[e.createElementVNode("span",Gn,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(D)?.column.header||e.unref(o).noColumns),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(D)?.column.field||"—"),1)]),e.createElementVNode("span",Pn,[e.createTextVNode(e.toDisplayString(e.unref(o).columnDirectory)+" ",1),e.createElementVNode("b",null,e.toDisplayString(e.unref(b).columns.length),1),e.createVNode(H._sfc_main,{name:"chevron-down",size:13})])],40,An),e.createElementVNode("div",Fn,[e.createElementVNode("span",{"aria-label":e.unref(o).fieldPosition},[e.createTextVNode(e.toDisplayString(e.unref(M)>=0?e.unref(M)+1:0),1),u[50]||(u[50]=e.createElementVNode("i",null,"/",-1)),e.createTextVNode(e.toDisplayString(e.unref(b).columns.length),1)],8,zn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).previousColumn,title:e.unref(o).previousColumn,disabled:e.unref(M)<=0,onClick:u[13]||(u[13]=a=>e.unref(z).stepColumn(-1))},[e.createVNode(H._sfc_main,{name:"chevron-left",size:14})],8,Hn),e.createElementVNode("button",{type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).nextColumn,title:e.unref(o).nextColumn,disabled:e.unref(M)>=e.unref(b).columns.length-1,onClick:u[14]||(u[14]=a=>e.unref(z).stepColumn(1))},[e.createVNode(H._sfc_main,{name:"chevron-right",size:14})],8,On)])]),e.unref(D)?(e.openBlock(),e.createElementBlock("fieldset",{key:0,class:"mr-designer-properties",disabled:t.readonly||e.unref(N)||e.unref(f),"aria-label":e.unref(o).columnProperties},[e.createElementVNode("div",Un,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).contentGroup),1),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).header),1),e.createElementVNode("input",{value:e.unref(D).column.header,onInput:u[15]||(u[15]=a=>e.unref(i).setColumn(e.unref(D).index,"header",Z(a)))},null,40,Jn)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).field),1),e.createElementVNode("input",{value:e.unref(D).column.field,list:e.unref(R)?`${$}-fields`:void 0,onChange:u[16]||(u[16]=a=>e.unref(i).setColumn(e.unref(D).index,"field",Z(a)))},null,40,Kn)]),e.unref(R)?(e.openBlock(),e.createElementBlock("datalist",{key:0,id:`${$}-fields`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(R).fields,a=>(e.openBlock(),e.createElementBlock("option",{key:a.field,value:a.field},e.toDisplayString(a.label)+" · "+e.toDisplayString(a.type)+" "+e.toDisplayString(a.unit),9,qn))),128))],8,Wn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Xn,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).formatGroup),1),e.createElementVNode("div",Yn,[e.createElementVNode("label",Qn,[e.createTextVNode(e.toDisplayString(e.unref(o).width),1),e.createElementVNode("input",{type:"number",min:"0.1",step:"0.5",value:e.unref(D).column.widthMm,onChange:u[17]||(u[17]=a=>e.unref(i).setColumn(e.unref(D).index,"widthMm",Z(a)))},null,40,Zn)]),e.createElementVNode("label",eo,[e.createTextVNode(e.toDisplayString(e.unref(o).semantic),1),e.createElementVNode("select",{value:e.unref(D).column.semanticRole||"text",onChange:u[18]||(u[18]=a=>e.unref(i).setColumn(e.unref(D).index,"semanticRole",Z(a)))},[e.createElementVNode("option",no,e.toDisplayString(e.unref(o).identifier),1),e.createElementVNode("option",oo,e.toDisplayString(e.unref(o).dimension),1),e.createElementVNode("option",lo,e.toDisplayString(e.unref(o).measure),1),e.createElementVNode("option",ao,e.toDisplayString(e.unref(o).date),1),e.createElementVNode("option",ro,e.toDisplayString(e.unref(o).text),1)],40,to)])]),e.createElementVNode("div",io,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).bodyAlign),1),e.createVNode(he,{"model-value":e.unref(D).column.align??e.unref(D).column.style?.align??e.unref(b).align??"left",label:e.unref(o).bodyAlign,labels:we.value,"auto-label":e.unref(o).autoShort,"allow-auto":"","onUpdate:modelValue":u[19]||(u[19]=a=>e.unref(i).setColumn(e.unref(D).index,"align",a))},null,8,["model-value","label","labels","auto-label"])]),e.createElementVNode("div",so,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).headerAlign),1),e.createVNode(he,{"model-value":e.unref(i).headerAlignments.value[e.unref(D).index]||"left",label:e.unref(o).headerAlign,labels:we.value,"auto-label":e.unref(o).autoShort,"onUpdate:modelValue":u[20]||(u[20]=a=>e.unref(i).setColumn(e.unref(D).index,"headerAlign",a))},null,8,["model-value","label","labels","auto-label"])])]),e.createElementVNode("label",co,[e.createTextVNode(e.toDisplayString(e.unref(o).editable),1),e.createElementVNode("input",{type:"checkbox",role:"switch",checked:e.unref(D).column.editable===!0,onChange:u[21]||(u[21]=a=>e.unref(i).setColumn(e.unref(D).index,"editable",me(a)))},null,40,uo)]),e.createElementVNode("div",mo,[e.createElementVNode("span",null,e.toDisplayString(e.unref(o).columnOrder),1),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).moveColumnLeft,title:e.unref(o).moveColumnLeft,disabled:e.unref(M)<=0,onClick:u[22]||(u[22]=a=>e.unref(ke)(-1))},[e.createVNode(H._sfc_main,{name:"chevron-left",size:13})],8,po),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).moveColumnRight,title:e.unref(o).moveColumnRight,disabled:e.unref(M)>=e.unref(b).columns.length-1,onClick:u[23]||(u[23]=a=>e.unref(ke)(1))},[e.createVNode(H._sfc_main,{name:"chevron-right",size:13})],8,fo),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).columnVisible),1),e.createElementVNode("input",{type:"checkbox",checked:e.unref(D).column.hidden!==!0,disabled:e.unref(D).column.hidden!==!0&&e.unref(b).columns.filter(a=>!a.hidden).length===1,onChange:u[24]||(u[24]=a=>e.unref(i).setColumn(e.unref(D).index,"hidden",!me(a)))},null,40,vo)])])],8,jn)):e.createCommentVNode("",!0),e.unref(Ee)?(e.openBlock(),e.createElementBlock("div",{key:1,id:`${$}-directory`,ref_key:"directoryPanel",ref:$e,role:"dialog","aria-label":e.unref(o).columnDirectory,class:"mr-designer-directory",onKeydown:u[34]||(u[34]=e.withKeys((...a)=>e.unref(O).escape&&e.unref(O).escape(...a),["esc"])),onFocusout:u[35]||(u[35]=(...a)=>e.unref(O).leave&&e.unref(O).leave(...a))},[e.createElementVNode("div",ho,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(e.unref(o).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(o).closeDirectory,onClick:u[25]||(u[25]=a=>e.unref(O).close(!0))},[e.createVNode(H._sfc_main,{name:"close",size:15})],8,yo)]),e.createElementVNode("div",ko,[e.createVNode(H._sfc_main,{name:"search",size:14}),e.withDirectives(e.createElementVNode("input",{ref_key:"directorySearch",ref:Re,"onUpdate:modelValue":u[26]||(u[26]=a=>e.isRef(B)?B.value=a:null),type:"search","aria-label":e.unref(o).columnsSearch,placeholder:e.unref(o).columnsSearch,onKeydown:u[27]||(u[27]=(...a)=>e.unref(O).searchKeydown&&e.unref(O).searchKeydown(...a))},null,40,bo),[[e.vModelText,e.unref(B)]]),e.unref(B)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-designer-icon-button","aria-label":e.unref(o).clearSearch,title:e.unref(o).clearSearch,onClick:u[28]||(u[28]=a=>B.value="")},[e.createVNode(H._sfc_main,{name:"close",size:13})],8,Eo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",wo,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(N)||e.unref(f)||!e.unref(C).length,onClick:u[29]||(u[29]=a=>e.unref(i).selectVisible(!0))},e.toDisplayString(e.unref(o).selectVisible),9,So),e.unref(L).length?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:u[30]||(u[30]=(...a)=>e.unref(i).clearSelection&&e.unref(i).clearSelection(...a))},e.toDisplayString(e.unref(o).clearSelection),1)):e.createCommentVNode("",!0),e.unref(L).length?(e.openBlock(),e.createElementBlock("span",Vo,e.toDisplayString(e.unref(o).columnsSelected)+" "+e.toDisplayString(e.unref(L).length),1)):(e.openBlock(),e.createElementBlock("span",No,e.toDisplayString(e.unref(C).length)+" / "+e.toDisplayString(e.unref(b).columns.length),1))]),e.createElementVNode("div",{ref_key:"columnList",ref:Ie,class:"mr-designer-column-list","aria-label":e.unref(o).columnDirectory,role:"group"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(C),({column:a,index:A})=>(e.openBlock(),e.createElementBlock("div",{key:A,class:e.normalizeClass(["mr-designer-column-row",{"is-active":e.unref(M)===A}])},[e.createElementVNode("input",{type:"checkbox","aria-label":`${e.unref(o).selectColumn} ${a.header}`,checked:e.unref(L).includes(A),disabled:t.readonly||e.unref(N)||e.unref(f),onChange:ne=>e.unref(i).toggleColumn(A,me(ne))},null,40,Co),e.createElementVNode("button",{type:"button","data-column-index":A,"aria-pressed":e.unref(M)===A,tabindex:e.unref(_e)===A?0:-1,onClick:ne=>e.unref(O).choose(A),onKeydown:u[31]||(u[31]=(...ne)=>e.unref(O).navigate&&e.unref(O).navigate(...ne))},[e.createElementVNode("span",Mo,e.toDisplayString(A+1),1),e.createElementVNode("span",Do,[e.createElementVNode("strong",null,e.toDisplayString(a.header),1),e.createElementVNode("small",null,e.toDisplayString(a.field),1)]),e.unref(M)===A?(e.openBlock(),e.createBlock(H._sfc_main,{key:0,name:"chevron-right",size:13})):e.createCommentVNode("",!0)],40,Bo)],2))),128)),e.unref(C).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",_o,[e.createVNode(H._sfc_main,{name:"search",size:20}),e.createTextVNode(e.toDisplayString(e.unref(o).noColumns),1)]))],8,xo),e.unref(L).length?(e.openBlock(),e.createElementBlock("div",To,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).batchBody),1),e.createElementVNode("select",{"aria-label":e.unref(o).batchBody,disabled:t.readonly||e.unref(N)||e.unref(f),onChange:u[32]||(u[32]=a=>Se(a,"align"))},[e.createElementVNode("option",Ro,e.toDisplayString(e.unref(o).chooseAlignment),1),e.createElementVNode("option",Io,e.toDisplayString(e.unref(o).auto),1),e.createElementVNode("option",Lo,e.toDisplayString(e.unref(o).left),1),e.createElementVNode("option",Ao,e.toDisplayString(e.unref(o).center),1),e.createElementVNode("option",Go,e.toDisplayString(e.unref(o).right),1),e.createElementVNode("option",Po,e.toDisplayString(e.unref(o).justify),1)],40,$o)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).batchHeader),1),e.createElementVNode("select",{"aria-label":e.unref(o).batchHeader,disabled:t.readonly||e.unref(N)||e.unref(f),onChange:u[33]||(u[33]=a=>Se(a,"headerAlign"))},[e.createElementVNode("option",zo,e.toDisplayString(e.unref(o).chooseAlignment),1),e.createElementVNode("option",Ho,e.toDisplayString(e.unref(o).left),1),e.createElementVNode("option",Oo,e.toDisplayString(e.unref(o).center),1),e.createElementVNode("option",jo,e.toDisplayString(e.unref(o).right),1),e.createElementVNode("option",Uo,e.toDisplayString(e.unref(o).justify),1)],40,Fo)])])):e.createCommentVNode("",!0)],40,go)):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",Jo,e.toDisplayString(e.unref(o).noColumns),1))],64)):e.unref(S)==="component"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ko,[e.createElementVNode("select",{"aria-label":e.unref(o).insertComponent,disabled:e.unref(J),onChange:u[36]||(u[36]=(...a)=>e.unref(G)&&e.unref(G)(...a))},[e.createElementVNode("option",qo,e.toDisplayString(e.unref(o).insertComponent),1),e.createElementVNode("option",Xo,e.toDisplayString(e.unref(o).insertText),1),e.createElementVNode("option",Yo,e.toDisplayString(e.unref(o).insertList),1),e.createElementVNode("option",Qo,e.toDisplayString(e.unref(o).insertImage),1),e.createElementVNode("option",Zo,e.toDisplayString(e.unref(o).insertRect),1)],40,Wo),e.createElementVNode("button",{type:"button",title:e.unref(o).duplicateComponent,"aria-label":e.unref(o).duplicateComponent,disabled:e.unref(J)||!e.unref(W),onClick:u[37]||(u[37]=(...a)=>e.unref(X).duplicate&&e.unref(X).duplicate(...a))}," + ",8,el),e.createElementVNode("button",{type:"button",title:e.unref(o).removeComponent,"aria-label":e.unref(o).removeComponent,disabled:e.unref(J)||!e.unref(W),onClick:u[38]||(u[38]=(...a)=>e.unref(X).remove&&e.unref(X).remove(...a))},[e.createVNode(H._sfc_main,{name:"close",size:14})],8,tl)]),e.unref(g).template.pages.length>1?(e.openBlock(),e.createElementBlock("label",nl,[e.createTextVNode(e.toDisplayString(e.unref(o).page),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[39]||(u[39]=a=>e.isRef(K)?K.value=a:null)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g).template.pages,(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(A+1),9,ol))),128))],512),[[e.vModelSelect,e.unref(K),void 0,{number:!0}]])])):e.createCommentVNode("",!0),e.createElementVNode("label",ll,[e.createTextVNode(e.toDisplayString(e.unref(o).components),1),e.createElementVNode("select",{value:e.unref(Y)?.pageIndex===e.unref(K)?e.unref(Y).componentIndex:-1,onChange:u[40]||(u[40]=a=>e.unref(I)({pageIndex:e.unref(K),componentIndex:Number(Z(a))}))},[e.createElementVNode("option",rl,e.toDisplayString(e.unref(o).noComponent),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(g).template.pages[e.unref(K)]?.components,(a,A)=>(e.openBlock(),e.createElementBlock("option",{key:A,value:A},e.toDisplayString(A+1)+" · "+e.toDisplayString(a.kind==="list"?a.title||a.dataset:a.text||a.kind),9,il))),128))],40,al)]),e.unref(W)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",sl,[e.createElementVNode("button",{type:"button",disabled:e.unref(J)||e.unref(Y)?.componentIndex===0,onClick:u[41]||(u[41]=a=>e.unref(X).reorder(-1))},e.toDisplayString(e.unref(o).backward),9,cl),e.createElementVNode("button",{type:"button",disabled:e.unref(J)||e.unref(Y)?.componentIndex===(e.unref(g).template.pages[e.unref(K)]?.components.length??0)-1,onClick:u[42]||(u[42]=a=>e.unref(X).reorder(1))},e.toDisplayString(e.unref(o).forward),9,dl)]),e.createVNode(Ot,{component:e.unref(W),disabled:e.unref(J),messages:e.unref(o),onGeometry:e.unref(X).geometry,onPatch:e.unref(U)},null,8,["component","disabled","messages","onGeometry","onPatch"]),e.unref(W).kind==="list"?(e.openBlock(),e.createBlock(Yt,{key:0,list:e.unref(W),disabled:e.unref(J),messages:e.unref(o),onCommand:e.unref(Be)},null,8,["list","disabled","messages","onCommand"])):e.createCommentVNode("",!0)],64)):(e.openBlock(),e.createElementBlock("p",ul,e.toDisplayString(e.unref(o).noComponent),1))],64)):e.unref(S)==="template"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).templateDetails),1),e.createElementVNode("label",ml,[e.createTextVNode(e.toDisplayString(e.unref(o).name),1),e.createElementVNode("input",{value:e.unref(g).name,disabled:t.readonly||e.unref(N)||e.unref(f),onInput:u[43]||(u[43]=a=>e.unref(i).setName(Z(a)))},null,40,pl)]),e.createElementVNode("label",fl,[e.createTextVNode(e.toDisplayString(e.unref(o).description),1),e.createElementVNode("textarea",{rows:"2",value:e.unref(g).description,disabled:t.readonly||e.unref(N)||e.unref(f),onInput:u[44]||(u[44]=a=>e.unref(i).setDescription(Z(a)))},null,40,vl)]),e.createElementVNode("details",gl,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(o).technicalDetails),1),e.createElementVNode("dl",hl,[e.createElementVNode("dt",null,e.toDisplayString(e.unref(o).templateIdentity),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(g).id),1),e.createElementVNode("dt",null,e.toDisplayString(e.unref(o).templateRevision),1),e.createElementVNode("dd",null,e.toDisplayString(e.unref(g).revision||e.unref(o).unpublished),1)])])],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).advancedTitle),1),e.createElementVNode("label",yl,[e.createTextVNode(e.toDisplayString(e.unref(o).json),1),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[45]||(u[45]=a=>e.isRef(k)?k.value=a:null),class:"mr-designer-json","aria-label":e.unref(o).json,disabled:t.readonly||e.unref(N),spellcheck:"false"},null,8,kl),[[e.vModelText,e.unref(k)]])]),e.createElementVNode("button",{type:"button",class:"mr-designer-apply-json",disabled:t.readonly||e.unref(N),onClick:u[46]||(u[46]=(...a)=>e.unref(i).applyJson&&e.unref(i).applyJson(...a))},e.toDisplayString(e.unref(o).applyJson),9,bl)],64)),e.unref(f)?(e.openBlock(),e.createElementBlock("p",El,e.toDisplayString(e.unref(o).jsonPending),1)):e.createCommentVNode("",!0)],10,$n)])):e.createCommentVNode("",!0),e.unref(S)!=="tools"?(e.openBlock(),e.createElementBlock("div",{key:2,class:"mr-designer-preview","aria-label":e.unref(o).previewTitle},[e.unref(_)?(e.openBlock(),e.createElementBlock("div",Sl,e.toDisplayString(e.unref(_)),1)):e.createCommentVNode("",!0),e.unref(y).ok?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("ul",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).errors,a=>(e.openBlock(),e.createElementBlock("li",{key:a.path},e.toDisplayString(a.path)+":"+e.toDisplayString(a.message),1))),128))])),e.unref(oe)==="design"&&e.unref(y).ok?(e.openBlock(),e.createBlock(ct,{key:2,document:e.unref(g),selection:e.unref(Y),"page-index":e.unref(K),datasets:t.datasets,disabled:e.unref(J),messages:e.unref(o),onSelect:e.unref(I),onGeometry:e.unref(X).geometry,onColumn:e.unref(z).activate,onWidth:u[47]||(u[47]=(a,A)=>e.unref(i).setColumn(a,"widthMm",String(A)))},null,8,["document","selection","page-index","datasets","disabled","messages","onSelect","onGeometry","onColumn"])):e.unref(j)&&e.unref(y).ok?(e.openBlock(),e.createBlock(e.unref(fe.ReportPreview),{key:3,"report-id":"draft",fetcher:e.unref(j),messages:{title:e.unref(o).previewTitle,columnDirectory:e.unref(o).previewFieldDirectory},"show-params":!1,editable:!1,"excel-import":!1,height:"100%"},null,8,["fetcher","messages"])):(e.openBlock(),e.createElementBlock("p",Nl,e.toDisplayString(e.unref(o).invalid),1))],8,wl)):e.createCommentVNode("",!0)],2)],8,cn))}}),Cl=H._export_sfc(xl,[["__scopeId","data-v-9e22163e"]]),Bl={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:"调序"}},Ml={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:"契约字段,不执行接口查询"},Dl={detail:"主从",matrix:"矩阵",measureLabel:"显示名称",childDataset:"明细数据集",parentKey:"主表关联键",foreignKey:"明细外键",rowKey:"明细业务主键",noRowKey:"只读明细,不绑定编辑身份",childColumns:"明细展示字段",title:"明细标题",unmatched:"未关联明细",ignore:"显式忽略",childHeader:"展示明细表头",rowFields:"行维度",columnFields:"列维度",totals:"原始样本总计",widthSettings:"动态列宽 · mm",dimensionWidth:"维度列宽",measureWidth:"度量列宽",detailHint:"以业务键关联宿主提供的数据集。应用主从布局将替换矩阵配置。",matrixHint:"查询时按维度生成动态列。应用矩阵将替换普通分组、主从和总计;可撤销恢复。",computations:"计算",groups:"分组",conditions:"条件",target:"结果字段",newField:"新增计算字段",select:"选择字段",row:"当前行",group:"当前组",dataset:"整个数据集",scope:"计算范围",numeric:"数值模式",number:"普通数值",decimal:"精确小数",digits:"小数位",groupFields:"分组依据",field:"字段",constant:"常量",operation:"运算",aggregate:"聚合",text:"文本",boolean:"布尔",null:"空值",true:"是",false:"否",add:"相加",subtract:"相减",multiply:"相乘",divide:"相除",coalesce:"首个非空值",sum:"求和",count:"计数",avg:"平均值",min:"最小值",max:"最大值",weightedAvg:"加权平均",subtotalLabel:"小计",weight:"权重字段",argument:"参数",addArgument:"添加参数",remove:"移除",apply:"应用规则",check:"样例验算",addGroup:"添加分组",noGroups:"尚未配置分组",header:"组头模板",footer:"组尾标签",repeat:"跨页重复组头",orphan:"组头与首行保持同页",outer:"外层",inner:"内层",addAggregate:"添加聚合",measure:"度量字段",output:"输出字段",condition:"条件字段",comparison:"比较方式",threshold:"比较值",effect:"效果",style:"条件样式",cell:"单元格可见",rowVisibility:"明细行可见",color:"文字颜色",background:"背景颜色",bold:"加粗",column:"目标列",newCondition:"新增条件样式",removeCondition:"移除此规则",advanced:"计算边界",nulls:"空值处理",propagate:"保留为空",error:"报告错误",division:"除零处理",dependencies:"计算顺序",noData:"尚无样例数据",sample:"样例前 1000 行 · 仅验算,不修改来源",preview:"计算结果",existing:"已有规则",ready:"规则已通过结构校验",allRows:"全部行",noFields:"当前数据集尚无字段",resultType:"常量类型",settings:"规则设置",moveUp:"向外移动",moveDown:"向内移动",missingTarget:"请选择或填写结果字段",noSelection:"请先选择列",countHint:"留空度量字段可统计行数",decimalHint:"精确小数以文本保存,避免大数精度丢失。",readonly:"只读",formatMode:"条件规则",rule:"规则",sampleError:"验算未通过",new:"新增",enabled:"启用"},_l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./TemplateReviewPanel-C_Lmzis6.cjs"))),Tl=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./ExcelBindingWizard-DiaxvWpQ.cjs"))),$l=e.defineAsyncComponent(()=>Promise.resolve().then(()=>require("./RuleEditor-CskN5Fr3.cjs")));exports.EXCEL_BINDING_MESSAGES=Ml;exports.ExcelBindingWizard=Tl;exports.RULE_EDITOR_MESSAGES=Dl;exports.ReportTemplateEditor=Cl;exports.RuleEditor=$l;exports.TEMPLATE_EDITOR_MESSAGES=ae;exports.TEMPLATE_REVIEW_MESSAGES=Bl;exports.TemplateReviewPanel=_l;