@worm-vue3-print/canvas 1.3.0 → 1.3.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/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ge=require("@worm-vue3-print/core"),h=require("@worm-vue3-print/core/designer"),Ue=require("@worm-vue3-print/core/browser"),Bt=require("jsbarcode"),xt=require("qrcode"),Ft=require("dompurify"),$t=Symbol("selected-ids"),Tt=Symbol("preview-ids");function Ut(o){const i=e.ref(new Set),t=e.ref(new Set),n=e.computed(()=>o.value.filter(k=>i.value.has(k.id))),l=e.computed(()=>i.value.size>0);function d(k,y=!1){if(y){const R=new Set(i.value);R.has(k)?R.delete(k):R.add(k),i.value=R}else i.value=new Set([k])}function s(){i.value=new Set}function a(k){i.value=new Set(k)}function r(k){t.value=new Set(k)}function u(){t.value=new Set}function m(){i.value=new Set(t.value),t.value=new Set}function g(){const k=n.value;if(k.length===0)return null;let y=1/0,R=1/0,C=-1/0,v=-1/0;return k.forEach(f=>{y=Math.min(y,f.options.left),R=Math.min(R,f.options.top),C=Math.max(C,f.options.left+f.options.width),v=Math.max(v,f.options.top+f.options.height)}),{left:y,top:R,width:C-y,height:v-R}}return{selectedIds:i,selectedElements:n,hasSelection:l,select:d,clearSelection:s,selectAll:a,getSelectionBounds:g,previewIds:t,setPreview:r,clearPreview:u,commitPreview:m}}function Ht(){const o=e.ref(null);function i(l){o.value=l.map(d=>({options:{...d.options},printElementType:{...d.printElementType}}))}function t(l=10){if(!o.value)return null;const d=new Map;for(const a of o.value){const r=a.options.groupId;r&&d.set(r,(d.get(r)??0)+1)}const s=new Map;for(const[a,r]of d)s.set(a,r>=2?h.generateGroupId():void 0);return o.value.map(a=>({id:h.generateId(),options:{...a.options,left:a.options.left+l,top:a.options.top+l,groupId:a.options.groupId?s.get(a.options.groupId):void 0},printElementType:{...a.printElementType}}))}function n(){return o.value!==null&&o.value.length>0}return{clipboard:o,copy:i,paste:t,hasData:n}}function Ot(o){const t=e.ref([]),n=e.ref([]),l=e.ref(!1),d=e.ref(!1);function s(){l.value=t.value.length>0,d.value=n.value.length>0}function a(y){const R={elements:JSON.parse(JSON.stringify(y?.elements??[])),templateData:JSON.parse(JSON.stringify(y?.templateData??{}))};return y?.pages&&(R.pages=JSON.parse(JSON.stringify(y.pages)),y.activePageIndex!==void 0&&(R.activePageIndex=y.activePageIndex)),R}function r(y){return a(y)}function u(y){t.value.push(r(y)),n.value=[],t.value.length>50&&t.value.shift(),s()}function m(y){if(t.value.length===0)return null;const R=t.value.pop();return n.value.push(y?r(y):a(R)),s(),t.value.length>0?a(t.value[t.value.length-1]):null}function g(y){if(n.value.length===0)return null;const R=n.value.pop();return t.value.push(y?r(y):a(R)),s(),a(R)}function k(){t.value=[],n.value=[],s()}return{push:u,undo:m,redo:g,canUndo:l,canRedo:d,clear:k}}const rt="开启拼版后只能有一个设计页面";function Re(){return{paperSize:"A4",orientation:"portrait",unit:"mm",margins:{top:10,right:10,bottom:10,left:10},header:{height:10,elements:[]},footer:{height:10,elements:[]},firstPageOverlay:{height:0,elements:[]},elements:[],watermark:{}}}function Ze(o){const i=(t,n)=>(t??[]).map(l=>{const d={...l.options};return(l.printElementType?.type??l.type)==="table"&&h.syncTableElementSize(d),{id:l.id||h.generateId(),zone:n,options:d,printElementType:{...l.printElementType}}});return{...o,margins:{...o.margins},header:{height:o.header?.height??10,elements:[]},footer:{height:o.footer?.height??10,elements:[]},firstPageOverlay:{height:o.firstPageOverlay?.height??0,elements:[...o.firstPageOverlay?.elements??[]]},guides:[...o.guides??[]],elements:[...i(o.elements??[],"content"),...i(o.header?.elements??[],"header"),...i(o.footer?.elements??[],"footer")]}}function vt(o){const i=(n,l)=>{const d=Ze(h.normalizeTemplateUnits(n));return d.name||(d.name=`页面 ${l+1}`),d};if(!o)return[i(Re(),0)];const t=Array.isArray(o.pages)?o.pages:[o];return t.length?t.map(i):[i(Re(),0)]}function ft(o){const i=o.elements,t=n=>i.filter(l=>(l.zone||"content")===n).map(l=>({id:l.id,type:l.printElementType.type,options:{...l.options},printElementType:{...l.printElementType}}));return{unit:"mm",...o,header:{...o.header,elements:t("header")},footer:{...o.footer,elements:t("footer")},firstPageOverlay:{...o.firstPageOverlay,elements:(o.firstPageOverlay?.elements??[]).map(n=>({id:n.id||h.generateId(),type:n.printElementType?.type||"text",options:{...n.options},printElementType:{...n.printElementType}}))},elements:t("content"),guides:[...o.guides??[]]}}function Wt(o={}){const i=e.ref(100),t=e.ref(!0),n=e.ref(!0),l=e.ref(!1),d=e.ref(!0),s=e.ref(vt(o.initialTemplate)),a=e.ref(0),r=e.ref(s.value[0]??Ze(Re())),u=e.computed(()=>s.value.some(L=>L.tiling?.enabled===!0));function m(){return u.value?(alert(rt),!0):!1}function g(){s.value[a.value]=r.value}function k(L){L<0||L>=s.value.length||(g(),a.value=L,r.value=s.value[L],ce())}const y=e.computed({get:()=>r.value.elements,set:L=>{r.value.elements=L}}),R=e.ref(o.initialFields||[]),{selectedIds:C,selectedElements:v,select:f,clearSelection:M,selectAll:j,previewIds:ne,setPreview:H,clearPreview:K,commitPreview:b}=Ut(y),{group:B,ungroup:S,getGroupedIds:x}=h.useGroup(),{copy:T,paste:X,hasData:ee}=Ht(),{align:le}=h.useAlign(),{push:ie,undo:ue,redo:J,canUndo:c,canRedo:N}=Ot(),W=e.computed(()=>{if(C.value.size===0)return null;const L=C.value.values().next().value;return y.value.find(te=>te.id===L)||null}),he=e.ref(null);function pe(L){he.value=L}function ce(){M(),pe(null)}function ve(){return{elements:y.value.map(L=>({id:L.id,zone:L.zone,options:JSON.parse(JSON.stringify(L.options)),printElementType:{...L.printElementType}})),templateData:{paperSize:r.value.paperSize,orientation:r.value.orientation,outputRotation:r.value.outputRotation,margins:{...r.value.margins},header:{height:r.value.header.height,elements:[]},footer:{height:r.value.footer.height,elements:[]},firstPageOverlay:{height:r.value.firstPageOverlay.height,elements:[]},elements:[],customWidth:r.value.customWidth,customHeight:r.value.customHeight,watermark:r.value.watermark?{...r.value.watermark}:void 0,guides:[...r.value.guides??[]]},pages:JSON.parse(JSON.stringify(s.value)),activePageIndex:a.value}}function z(){ie(ve())}function V(L){return L.pages?.[L.activePageIndex??0]?.elements??L.elements}function w(){const L=ue(ve());L?.pages?(s.value=L.pages,a.value=L.activePageIndex??0,r.value=s.value[a.value]??s.value[0],ce()):L?.templateData&&(r.value={...L.templateData,elements:L.elements})}function F(){const L=J(ve());L?.pages?(s.value=L.pages,a.value=L.activePageIndex??0,r.value=s.value[a.value]??s.value[0],ce()):L?.templateData&&(r.value={...L.templateData,elements:L.elements})}function p(){T(v.value)}function E(){T(v.value),Z()}function $(){const L=X();L&&L.length>0&&(y.value.push(...L),z())}function Y(){T(v.value);const L=X();L&&L.length>0&&(L.forEach(te=>{te.options.left+=5,te.options.top+=5}),y.value.push(...L),f(L[0].id,!1),z())}function Q(){i.value=100}const oe=e.computed(()=>ee());let me=!1,P=null;const I=300;function O(L,te){const ae=v.value.filter(ye=>!ye.options.locked);ae.length!==0&&(ae.forEach(ye=>{ye.options.left+=L,ye.options.top+=te}),me||(me=!0,z()),P&&clearTimeout(P),P=setTimeout(()=>{me=!1,P=null},I))}function _(){j(y.value.map(L=>L.id))}function q(L){le(v.value,L),z()}function fe(L,te=!1){if(te){f(L,!0);return}C.value=new Set(x(y.value,L))}function A(){y.value=B(y.value,C.value),z()}function D(){y.value=S(y.value,C.value),z()}function Z(){C.value.size!==0&&(y.value=y.value.filter(L=>!C.value.has(L.id)),M(),z())}const{setup:be,cleanup:ke}=h.useKeyboard({onMove:O,onDelete:Z,onCopy:p,onPaste:$,onSelectAll:_,onUndo:w,onRedo:F,onDuplicate:Y,onResetZoom:Q,onAlignLeft:()=>q("left"),onAlignRight:()=>q("right"),onAlignCenterH:()=>q("vertical"),onAlignTop:()=>q("top"),onAlignBottom:()=>q("bottom"),onGroup:A,onUngroup:D});let Ve=null;function xe(){Ve=ve()}function Qe(){if(!Ve)return;const L=new Map(Ve.elements.map(Ee=>[Ee.id,Ee]));let te=!1;for(const Ee of y.value){const Be=L.get(Ee.id);if(!Be)continue;(Be.options.left!==Ee.options.left||Be.options.top!==Ee.options.top||Be.options.width!==Ee.options.width||Be.options.height!==Ee.options.height)&&h.finalizeElementZone(Ee,r.value).rejected&&(te=!0)}te&&alert("该元素类型不能放入页眉/页脚");const ae=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ye=V(Ve).map(ae).join("|"),Se=V(ve()).map(ae).join("|");Ve=null,ye!==Se&&z()}function We(L,te){const ae=h.zoneFromPaperPoint(r.value,te.x,te.y);if(ae!=="content"&&!h.ZONE_ALLOWED_TYPES.includes(L.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ye=h.getZoneRects(r.value)[ae];return L.zone=ae,L.options.left=te.x-ye.left,L.options.top=te.y-ye.top,ae!=="content"&&h.clampToZone(L,ye),!0}function Ae(L,te){const ae=h.createRuntimeElement(L);te&&!We(ae,te)||(y.value.push(ae),f(ae.id,!1),z())}function Me(L,te){const ae=h.createFieldElement(L);te&&!We(ae,te)||(y.value.push(ae),f(ae.id,!1),z())}function De(L){if(C.value.size===0)return;const te=C.value.values().next().value,ae=y.value.find(ze=>ze.id===te);if(!ae)return;const ye=ae.options.zIndex??0,Se=y.value.map(ze=>ze.options.zIndex??0),Ee=Math.max(...Se,0),Be=Math.min(...Se,0);switch(L){case"top":ae.options.zIndex=Ee+1;break;case"bottom":ae.options.zIndex=Be-1;break;case"up":ae.options.zIndex=ye+1;break;case"down":ae.options.zIndex=ye-1;break}z()}function Pe(L,te){const{width:ae,height:ye}=h.getPaperDimensions(r.value),Se=96/25.4;i.value=h.computeFitScale(L,te,ae*Se,ye*Se)}function _e(L){if(r.value={...L},s.value[a.value]=r.value,s.value.length>1){const te={paperSize:L.paperSize,orientation:L.orientation,outputRotation:L.outputRotation,customWidth:L.customWidth,customHeight:L.customHeight};for(const ae of s.value)Object.assign(ae,te)}z()}function et(){return g(),s.value.length<=1?ft(s.value[0]):{version:1,pages:s.value.map(ft)}}function Ge(L,te){s.value=vt(L),a.value=0,r.value=s.value[0],te&&(r.value={...r.value,elements:te.map(ae=>({...ae,id:ae.id||h.generateId(),zone:ae.zone||"content",options:{...ae.options},printElementType:{...ae.printElementType}}))},s.value[a.value]=r.value),ie(ve())}function tt(){const L=new Set(s.value.map(ae=>ae.name));let te=s.value.length+1;for(;L.has(`页面 ${te}`);)te++;return`页面 ${te}`}function ot(){if(m())return;g();const L=s.value[a.value]??Re(),te=Ze({...Re(),paperSize:L.paperSize,orientation:L.orientation,customWidth:L.customWidth,customHeight:L.customHeight,name:tt()});s.value.push(te),a.value=s.value.length-1,r.value=te,ce(),z()}function Ke(){if(m())return;g();const L=s.value[a.value],te=JSON.parse(JSON.stringify(L));te.name=`${L.name??`页面 ${a.value+1}`} 副本`,te.elements=te.elements.map(ae=>({...ae,id:h.generateId()})),te.firstPageOverlay={...te.firstPageOverlay,elements:(te.firstPageOverlay?.elements??[]).map(ae=>({...ae,id:h.generateId()}))},s.value.splice(a.value+1,0,te),k(a.value+1),z()}function nt(L){s.value.length<=1||(g(),s.value.splice(L,1),L<a.value?a.value--:L===a.value&&a.value>=s.value.length&&(a.value=s.value.length-1),r.value=s.value[a.value],ce(),z())}function lt(L,te){s.value[L]&&(s.value[L].name=te)}function qe(L,te){if(L===te)return;g();const[ae]=s.value.splice(L,1);s.value.splice(te,0,ae),a.value=te,r.value=ae,ce(),z()}return ie(ve()),e.onMounted(()=>be()),e.onUnmounted(()=>{ke(),P&&(clearTimeout(P),P=null)}),{scale:i,showRuler:t,showGrid:n,snapToGrid:l,showTableGhostBorder:d,templateData:r,elements:y,fields:R,tilingEnabled:u,pages:s,activePageIndex:a,switchPage:k,addPage:ot,duplicatePage:Ke,deletePage:nt,renamePage:lt,movePage:qe,selectedIds:C,selectedElements:v,selectedElement:W,select:f,selectElement:fe,clearSelection:M,selectAll:_,previewIds:ne,setPreview:H,clearPreview:K,commitPreview:b,hasClipboard:oe,copy:p,paste:$,cutSelected:E,tableSelection:he,setTableSelection:pe,canUndo:c,canRedo:N,undo:w,redo:F,recordHistory:z,alignSelected:q,groupSelected:A,ungroupSelected:D,deleteSelected:Z,duplicateSelected:Y,resetZoom:Q,dragStart:xe,dragStop:Qe,addElement:Ae,addFieldElement:Me,moveLayer:De,fitToWindow:Pe,updateTemplateData:_e,getTemplateJson:et,loadTemplate:Ge}}let gt=0;function Gt(){return gt+=1,`guide-${gt}`}function Kt(o,i){const t=e.computed(()=>o.value.guides??[]);function n(r){o.value={...o.value,guides:r([...o.value.guides??[]])},i()}function l(r,u){n(m=>(m.push({type:r,position:u,id:Gt()}),m))}function d(r,u){n(m=>m.map(g=>g.id===r?{...g,position:u}:g))}function s(r){n(u=>u.filter(m=>m.id!==r))}function a(){const r=[],u=[];for(const m of t.value)m.type==="vertical"?r.push(m.position):u.push(m.position);return{vertical:r,horizontal:u}}return{guides:t,addGuide:l,moveGuide:d,removeGuide:s,getGuidePositions:a}}const Oe=Symbol("table-edit"),dt=Symbol("print-upload-image"),ct=Symbol("print-upload-design-background"),ut=Symbol("print-font-catalog"),qt=e.computed(()=>[]);function Yt(o){return{catalog:e.computed(()=>{const t=[],n=new Set;for(const l of e.toValue(o)??[]){const d=l?.family?.trim();if(!d)continue;const s=d.toLowerCase();if(n.has(s))continue;n.add(s);const a=l.label?.trim();t.push(a?{family:d,label:a}:{family:d})}return t})}}function jt(){return e.inject(ut,qt)}function ht(o,i){const t=i?.trim().toLowerCase();if(t)return o.find(n=>n.family.trim().toLowerCase()===t)}function bt(o){return o.label?`${o.label}(${o.family})`:o.family}function He(o){return o.toLowerCase().replace(/\s+/g,"")}function Et(o,i){if(o===i)return 0;if(o.startsWith(i))return 1;if(o.includes(i))return 2;let t=0;for(const n of o)if(n===i[t]&&t++,t===i.length)return 3;return-1}function Xt(o,i){const t=He(i.trim());return t?o.map((n,l)=>({font:n,index:l,rank:Zt(n,t)})).filter(n=>n.rank>=0).sort((n,l)=>n.rank-l.rank||n.index-l.index).map(n=>n.font):[...o]}function Zt(o,i){const t=Et(He(o.family),i);if(!o.label)return t;const n=Et(He(o.label),i);return t<0?n:n<0?t:Math.min(t,n)}const Jt="print-designer-font-face";function Qt(o){const i=`${Jt}-${e.useId()}`;let t;e.watchEffect(()=>{const n=e.toValue(o);if(!n){t?.remove(),t=void 0;return}t||(t=document.createElement("style"),t.id=i,document.head.appendChild(t)),t.textContent=n}),e.onUnmounted(()=>{t?.remove(),t=void 0})}const _t=e.defineComponent({__name:"HelpButton",emits:["click"],setup(o){return(i,t)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:t[0]||(t[0]=n=>i.$emit("click"))},[...t[1]||(t[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),re=(o,i)=>{const t=o.__vccOpts||o;for(const[n,l]of i)t[n]=l;return t},eo=re(_t,[["__scopeId","data-v-80ccab03"]]),to={class:"designer-toolbar"},oo={class:"tb-group"},no={class:"tb-title"},lo={class:"tb-title-name"},ao={class:"tb-group"},io=["disabled"],so=["disabled"],ro={key:0,class:"tb-group"},co={key:1,class:"tb-group"},uo={key:2,class:"tb-group"},mo={key:3,class:"tb-group"},po={class:"tb-group"},vo={class:"tb-zoom"},fo={key:4,class:"tb-group"},go={class:"tb-group"},ho={class:"tb-group"},bo=e.defineComponent({__name:"DesignerToolbar",props:e.mergeModels({isEdit:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},hasMultiSelection:{type:Boolean},hasSelection:{type:Boolean},showRuler:{type:Boolean,default:!0},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},selectedElementHasGroup:{type:Boolean},overlayVisible:{type:Boolean},showHelp:{type:Boolean,default:!0}},{scale:{default:100},scaleModifiers:{}}),emits:e.mergeModels(["preview","save","undo","redo","align","move-layer","toggle-ruler","toggle-grid","toggle-snap","toggle-table-ghost-border","toggle-overlay","group","ungroup","add-overlay-element","fit-window","zoom","help"],["update:scale"]),setup(o){const i=e.useModel(o,"scale");return(t,n)=>(e.openBlock(),e.createElementBlock("div",to,[e.createElementVNode("div",oo,[n[29]||(n[29]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-7a58c9f4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-7a58c9f4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-7a58c9f4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-7a58c9f4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-7a58c9f4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-7a58c9f4></line></svg></span>',1)),e.createElementVNode("div",no,[e.createElementVNode("span",lo,e.toDisplayString(o.isEdit?"编辑模板":"新建模板"),1),n[28]||(n[28]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",ao,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canUndo,onClick:n[0]||(n[0]=l=>t.$emit("undo")),"data-tip":"撤销"},"↶",8,io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canRedo,onClick:n[1]||(n[1]=l=>t.$emit("redo")),"data-tip":"重做"},"↷",8,so)]),o.hasMultiSelection?(e.openBlock(),e.createElementBlock("div",ro,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[2]||(n[2]=l=>t.$emit("align","left")),title:"左对齐"},"⇤"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[3]||(n[3]=l=>t.$emit("align","right")),title:"右对齐"},"⇥"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[4]||(n[4]=l=>t.$emit("align","top")),title:"顶对齐"},"⇡"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[5]||(n[5]=l=>t.$emit("align","bottom")),title:"底对齐"},"⇣"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[6]||(n[6]=l=>t.$emit("align","vertical")),title:"水平居中"},"↔"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[7]||(n[7]=l=>t.$emit("align","horizontal")),title:"垂直居中"},"↕"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[8]||(n[8]=l=>t.$emit("align","distributeHor")),title:"水平分布"},"⇔"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[9]||(n[9]=l=>t.$emit("align","distributeVer")),title:"垂直分布"},"⇕")])):e.createCommentVNode("",!0),o.hasMultiSelection?(e.openBlock(),e.createElementBlock("div",co,[e.createElementVNode("button",{class:"tb-btn",onClick:n[10]||(n[10]=l=>t.$emit("group")),title:"组合"},"组合")])):e.createCommentVNode("",!0),!o.hasMultiSelection&&o.selectedElementHasGroup?(e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("button",{class:"tb-btn",onClick:n[11]||(n[11]=l=>t.$emit("ungroup")),title:"取消组合"},"取消组合")])):e.createCommentVNode("",!0),o.hasSelection?(e.openBlock(),e.createElementBlock("div",mo,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[12]||(n[12]=l=>t.$emit("move-layer","top")),"data-tip":"置顶"},"⤒"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[13]||(n[13]=l=>t.$emit("move-layer","up")),"data-tip":"上移一层"},"↑"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[14]||(n[14]=l=>t.$emit("move-layer","down")),"data-tip":"下移一层"},"↓"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[15]||(n[15]=l=>t.$emit("move-layer","bottom")),"data-tip":"置底"},"⤓")])):e.createCommentVNode("",!0),e.createElementVNode("div",po,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:n[16]||(n[16]=l=>t.$emit("toggle-ruler"))},[...n[30]||(n[30]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:n[17]||(n[17]=l=>t.$emit("toggle-grid"))},[...n[31]||(n[31]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:n[18]||(n[18]=l=>t.$emit("toggle-table-ghost-border"))},[...n[32]||(n[32]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:n[19]||(n[19]=l=>t.$emit("toggle-snap"))},[...n[33]||(n[33]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[20]||(n[20]=l=>t.$emit("fit-window")),"data-tip":"适应窗口"},"⤢"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[21]||(n[21]=l=>t.$emit("zoom",-10)),"data-tip":"缩小"},"−"),e.createElementVNode("span",vo,e.toDisplayString(i.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[22]||(n[22]=l=>t.$emit("zoom",10)),"data-tip":"放大"},"+")]),n[34]||(n[34]=e.createElementVNode("div",{class:"tb-spacer"},null,-1)),o.showHelp?(e.openBlock(),e.createElementBlock("div",fo,[e.createVNode(eo,{onClick:n[23]||(n[23]=l=>t.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",go,[e.createElementVNode("button",{class:"tb-btn",onClick:n[24]||(n[24]=l=>t.$emit("add-overlay-element"))},"首页专属"),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{warn:o.overlayVisible}]),onClick:n[25]||(n[25]=l=>t.$emit("toggle-overlay"))},"叠层对比",2)]),e.createElementVNode("div",ho,[e.createElementVNode("button",{class:"btn-secondary",onClick:n[26]||(n[26]=l=>t.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary",onClick:n[27]||(n[27]=l=>t.$emit("save"))},"保存")])]))}}),Eo=re(bo,[["__scopeId","data-v-7a58c9f4"]]),yo={class:"layer-panel"},ko=["onClick"],Vo={class:"layer-icon"},No={class:"layer-name"},wo={key:0,class:"layer-zone"},Co={class:"layer-zindex"},So={key:0,class:"layer-actions"},Bo=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer"],setup(o){const i=o,t=e.computed(()=>[...i.elements].sort((a,r)=>(r.options.zIndex??0)-(a.options.zIndex??0))),n={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function l(a){return n[a.printElementType.type]||"?"}function d(a){return a.options.title||a.printElementType.title||a.printElementType.type}function s(a){return a.zone==="header"?"页眉":a.zone==="footer"?"页脚":""}return(a,r)=>(e.openBlock(),e.createElementBlock("div",yo,[r[4]||(r[4]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.id,class:e.normalizeClass(["layer-item",{active:o.selectedIds.has(u.id)}]),onClick:m=>a.$emit("select",u.id,!1)},[e.createElementVNode("span",Vo,e.toDisplayString(l(u)),1),e.createElementVNode("span",No,e.toDisplayString(d(u)),1),s(u)?(e.openBlock(),e.createElementBlock("span",wo,e.toDisplayString(s(u)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Co,"z:"+e.toDisplayString(u.options.zIndex??0),1)],10,ko))),128)),t.value.length>0?(e.openBlock(),e.createElementBlock("div",So,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[0]||(r[0]=u=>a.$emit("move-layer","top")),title:"置顶"}," ⤒ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[1]||(r[1]=u=>a.$emit("move-layer","up")),title:"上移"}," ↑ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[2]||(r[2]=u=>a.$emit("move-layer","down")),title:"下移"}," ↓ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[3]||(r[3]=u=>a.$emit("move-layer","bottom")),title:"置底"}," ⤓ ")])):e.createCommentVNode("",!0)]))}}),xo=re(Bo,[["__scopeId","data-v-f7a10482"]]),$o={class:"field-tree-panel"},To={class:"tree-container"},Do=["onClick"],Mo={class:"expand-icon"},Po={class:"node-icon"},zo={class:"group-label"},Lo=["onDragstart"],Ro={class:"node-label"},Ao={class:"node-key"},Io={key:0,class:"pd-empty"},Fo=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(""),d=e.ref(new Set),s=e.computed(()=>!!l.value.trim()),a=e.computed(()=>h.filterGroups(h.groupFields(t.fields),l.value));function r(m){const g=new Set(d.value);g.has(m)?g.delete(m):g.add(m),d.value=g}function u(m,g){m.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:g.fieldKey,fieldLabel:g.fieldLabel})),m.dataTransfer&&(m.dataTransfer.effectAllowed="copy"),n("field-drag",g)}return(m,g)=>(e.openBlock(),e.createElementBlock("div",$o,[g[2]||(g[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=k=>l.value=k),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,l.value]]),e.createElementVNode("div",To,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,k=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:k.key||"_top"},[k.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":k.isList}]),onClick:y=>r(k.key)},[e.createElementVNode("span",Mo,e.toDisplayString(d.value.has(k.key)&&!s.value?"▶":"▼"),1),e.createElementVNode("span",Po,e.toDisplayString(k.isList?"📋":"📁"),1),e.createElementVNode("span",zo,e.toDisplayString(k.label),1)],10,Do)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.fields,y=>(e.openBlock(),e.createElementBlock("div",{key:y.fieldKey,class:"field-row",draggable:"true",style:e.normalizeStyle({paddingLeft:(k.key?22:8)+"px"}),onDragstart:R=>u(R,y)},[g[1]||(g[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",Ro,e.toDisplayString(y.fieldLabel),1),e.createElementVNode("span",Ao,"("+e.toDisplayString(y.fieldKey)+")",1)],44,Lo))),128))],512),[[e.vShow,!k.key||s.value||!d.value.has(k.key)]])],64))),128))]),a.value.length===0?(e.openBlock(),e.createElementBlock("p",Io,"暂无字段")):e.createCommentVNode("",!0)]))}}),Uo=re(Fo,[["__scopeId","data-v-9b326f07"]]),Ho={key:0,class:"left-collapsed"},Oo={class:"left-head"},Wo={class:"pd-tabs left-tabs"},Go={class:"pd-tab-bar",role:"tablist"},Ko={class:"pd-tab-pane",role:"tabpanel"},qo=["onDragstart"],Yo={class:"material-icon"},jo={class:"material-label"},Xo={class:"pd-tab-pane",role:"tabpanel"},Zo={class:"pd-tab-pane",role:"tabpanel"},Jo=e.defineComponent({__name:"LeftPanel",props:{fields:{},elements:{},selectedIds:{},collapsed:{type:Boolean}},emits:["select","move-layer","toggle-visible","toggle-locked","field-drag","toggle-collapse"],setup(o,{emit:i}){const t=i,n=e.ref("elements"),l=[{type:"text",label:"文本",icon:"T"},{type:"barcode",label:"条形码",icon:"▍▍"},{type:"qrcode",label:"二维码",icon:"▦"},{type:"image",label:"图片",icon:"▧"},{type:"table",label:"表格",icon:"⊞"},{type:"longText",label:"长文",icon:"¶"},{type:"hline",label:"横线",icon:"―"},{type:"vline",label:"竖线",icon:"│"},{type:"rect",label:"矩形",icon:"▭"},{type:"oval",label:"椭圆",icon:"◯"},{type:"html",label:"HTML",icon:"<>"}];function d(r,u){r.dataTransfer?.setData("elementType",u)}function s(r){t("field-drag",r)}function a(r){n.value=r,t("toggle-collapse")}return(r,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",Ho,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:u[0]||(u[0]=m=>a(n.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="elements"}]),title:"元素",onClick:u[1]||(u[1]=m=>a("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="fields"}]),title:"字段",onClick:u[2]||(u[2]=m=>a("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="layers"}]),title:"图层",onClick:u[3]||(u[3]=m=>a("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Oo,[u[12]||(u[12]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:u[4]||(u[4]=m=>r.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",Wo,[e.createElementVNode("div",Go,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="elements"}]),onClick:u[5]||(u[5]=m=>n.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="fields"}]),onClick:u[6]||(u[6]=m=>n.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="layers"}]),onClick:u[7]||(u[7]=m=>n.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",Ko,[u[13]||(u[13]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,m=>e.createElementVNode("div",{key:m.type,class:"material-card",draggable:"true",onDragstart:g=>d(g,m.type)},[e.createElementVNode("span",Yo,e.toDisplayString(m.icon),1),e.createElementVNode("span",jo,e.toDisplayString(m.label),1)],40,qo)),64))],512),[[e.vShow,n.value==="elements"]]),e.withDirectives(e.createElementVNode("div",Xo,[e.createVNode(Uo,{fields:o.fields,onFieldDrag:s},null,8,["fields"])],512),[[e.vShow,n.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Zo,[e.createVNode(xo,{elements:o.elements,"selected-ids":o.selectedIds,onSelect:u[8]||(u[8]=(m,g)=>r.$emit("select",m,g)),onMoveLayer:u[9]||(u[9]=m=>r.$emit("move-layer",m)),onToggleVisible:u[10]||(u[10]=m=>r.$emit("toggle-visible",m)),onToggleLocked:u[11]||(u[11]=m=>r.$emit("toggle-locked",m))},null,8,["elements","selected-ids"])],512),[[e.vShow,n.value==="layers"]])])],64))],2))}}),Qo=re(Jo,[["__scopeId","data-v-15dad0f0"]]);function _o(o,i){const t=e.ref(!1),n=e.ref(null);let l=0,d=0,s=0,a=0,r=!1;function u(C){if(i.disabled||C.button!==0)return;const v=C.target;if(!(v instanceof Element)||v.classList.contains("resize-handle"))return;t.value=!0,r=C.altKey,l=C.clientX,d=C.clientY;const f=o.value;f&&(s=parseFloat(f.style.left)||0,a=parseFloat(f.style.top)||0,n.value={left:s,top:a,width:parseFloat(f.style.width)||0,height:parseFloat(f.style.height)||0},i.onStart?.({altKey:r}),document.addEventListener("mousemove",g),document.addEventListener("mouseup",k),C.preventDefault())}function m(C){const v=i.getScale?.()??1;let f=s+(C.clientX-l)/v,M=a+(C.clientY-d)/v;if(i.axis==="x"&&(M=a),i.axis==="y"&&(f=s),i.onAdsorb){const j=o.value;if(j){const ne=parseFloat(j.style.width)||0,H=parseFloat(j.style.height)||0,K=i.onAdsorb({left:f,top:M,width:ne,height:H});f=K.left,M=K.top}}return{left:f,top:M}}function g(C){const v=m(C);n.value&&(n.value.left=v.left,n.value.top=v.top),i.onDrag(v)}function k(C){t.value=!1;const v=m(C);i.onDragEnd?.(v,{altKey:r}),i.onStop?.(),n.value=null,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",k)}function y(){const C=o.value;C&&C.removeEventListener("mousedown",u),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",k)}function R(){y();const C=o.value;C&&C.addEventListener("mousedown",u)}return{isDragging:t,dragPreview:n,setup:R,cleanup:y}}function en(o){const i=[];return o.getAttribute("data-fit")==="shrink"&&i.push(o),o.querySelectorAll('[data-fit="shrink"]').forEach(t=>i.push(t)),i}function tn(o){o.querySelectorAll("[data-fit-size]").forEach(i=>{if(i.getAttribute("data-fit")==="shrink")return;i.removeAttribute("data-fit-size");const t=i.getAttribute("data-fit-base");t?i.style.fontSize=`${t}pt`:i.style.removeProperty("font-size")})}function mt(o,i){const t=()=>{const n=o.value;n&&(en(n).forEach(Ue.fitTextNode),tn(n))};e.watchEffect(()=>{i(),e.nextTick(t)},{flush:"post"}),e.onMounted(()=>{e.nextTick(t)})}const on=["data-fit","data-fit-base","data-fit-min"],nn=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},l=e.ref(null),d=e.computed(()=>h.resolveElementTextFit("text",i.element.options)),s=e.computed(()=>i.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(i.element.options.shrinkMinFontSize)),r=e.computed(()=>{const m=i.element.options,g=d.value==="autoHeight";return{fontSize:s.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",lineHeight:m.lineHeight?m.lineHeight+"pt":"normal",letterSpacing:m.letterSpacing?m.letterSpacing+"pt":"normal",textDecoration:m.textDecoration||"none",padding:`${m.contentPaddingTop||0}pt ${m.contentPaddingRight||0}pt ${m.contentPaddingBottom||0}pt ${m.contentPaddingLeft||0}pt`,width:"100%",height:g?"auto":"100%",boxSizing:"border-box",overflow:g?"visible":"hidden",...m.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...m.verticalAlign?{display:"flex",alignItems:t[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}:{}}}),u=e.computed(()=>i.designMode?i.element.options.testData?i.element.options.testData:i.element.options.formatter||"文本":h.resolveTextBinding(i.element.options,i.data));return mt(l,()=>[d.value,s.value,a.value,i.element.options.width,i.element.options.height,i.element.options.wordWrap,i.element.options.letterSpacing,i.element.options.lineHeight,u.value]),(m,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:l,class:"print-text",style:e.normalizeStyle(r.value),"data-fit":d.value==="shrink"?"shrink":void 0,"data-fit-base":String(s.value),"data-fit-min":String(a.value)},e.toDisplayString(u.value),13,on))}}),ln={class:"print-image"},an=["src"],sn={key:1,class:"image-placeholder"},rn=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{const s=i.element.options.src||"";return s?s.includes("{")?i.designMode?h.evaluateTemplate(s,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(s,i.data?.[0]||{}):s:""}),n=e.ref(!1);function l(){n.value=!0}e.watch(t,()=>{n.value=!1});const d=e.computed(()=>({objectFit:i.element.options.fit||"contain"}));return(s,a)=>(e.openBlock(),e.createElementBlock("div",ln,[t.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(d.value),onError:l},null,44,an)):(e.openBlock(),e.createElementBlock("div",sn,"图片"))]))}}),dn=re(rn,[["__scopeId","data-v-007a2979"]]),cn=["data-fit","data-fit-base","data-fit-min"],un=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},l=e.ref(null),d=e.computed(()=>h.resolveElementTextFit("longText",i.element.options)),s=e.computed(()=>i.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(i.element.options.shrinkMinFontSize)),r=e.computed(()=>{const m=i.element.options,g=d.value==="autoHeight";return{fontSize:s.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",lineHeight:m.lineHeight?m.lineHeight+"pt":"1.5",letterSpacing:m.letterSpacing?m.letterSpacing+"pt":"normal",textIndent:m.longTextIndent?m.longTextIndent+"pt":"0",width:"100%",height:g?"auto":"100%",overflow:g?"visible":"hidden",wordBreak:"break-all",boxSizing:"border-box",...m.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...m.verticalAlign?{display:"flex",alignItems:t[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}:{}}}),u=e.computed(()=>i.designMode?i.element.options.formatter?i.element.options.formatter:"长文本内容":h.resolveTextBinding(i.element.options,i.data));return mt(l,()=>[d.value,s.value,a.value,i.element.options.width,i.element.options.height,i.element.options.wordWrap,i.element.options.lineHeight,u.value]),(m,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:l,class:"print-longtext",style:e.normalizeStyle(r.value),"data-fit":d.value==="shrink"?"shrink":void 0,"data-fit-base":String(s.value),"data-fit-min":String(a.value)},e.toDisplayString(u.value),13,cn))}}),mn=["title"],pn=["title","onClick"],vn=e.defineComponent({__name:"TableContextMenu",props:{visible:{type:Boolean},x:{},y:{},canDeleteRow:{type:Boolean},canDeleteCol:{type:Boolean},mergeDisabledReason:{},canSplit:{type:Boolean},currentRowType:{},rowTypeDisabledReason:{type:Function}},emits:["action"],setup(o,{emit:i}){const t=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],n=i;function l(d,s){n("action",d,s)}return(d,s)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:o.x+"px",top:o.y+"px"}),onMousedown:s[8]||(s[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:s[0]||(s[0]=a=>l("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:s[1]||(s[1]=a=>l("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteRow}]),onClick:s[2]||(s[2]=a=>o.canDeleteRow&&l("delete-row"))}," 删除行 ",2),s[9]||(s[9]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:"menu-item",onClick:s[3]||(s[3]=a=>l("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:s[4]||(s[4]=a=>l("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteCol}]),onClick:s[5]||(s[5]=a=>o.canDeleteCol&&l("delete-col"))}," 删除列 ",2),s[10]||(s[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!o.mergeDisabledReason}]),title:o.mergeDisabledReason||"",onClick:s[6]||(s[6]=a=>!o.mergeDisabledReason&&l("merge"))}," 合并单元格 ",10,mn),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canSplit}]),onClick:s[7]||(s[7]=a=>o.canSplit&&l("split"))}," 拆分单元格 ",2),s[11]||(s[11]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),s[12]||(s[12]=e.createElementVNode("div",{class:"menu-group-title"},"行类型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(t,a=>e.createElementVNode("div",{key:a.value,class:e.normalizeClass(["menu-item",{disabled:!!o.rowTypeDisabledReason(a.value),active:o.currentRowType===a.value}]),title:o.rowTypeDisabledReason(a.value)||"",onClick:r=>!o.rowTypeDisabledReason(a.value)&&l("set-row-type",a.value)},e.toDisplayString(a.label),11,pn)),64))],36)):e.createCommentVNode("",!0)]))}}),fn=re(vn,[["__scopeId","data-v-44e319c1"]]),gn={class:"cell-barcode"},hn=["preserveAspectRatio"],bn=["src"],En={key:1,class:"cell-barcode-fallback"},yn=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(o){const i=o,t=e.ref(null),n=e.ref(!1),l=e.ref(""),d=e.ref(null),s={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},a=e.computed(()=>s[i.fit||"contain"]??"xMidYMid meet"),r=e.computed(()=>d.value?{width:d.value.width,height:d.value.height}:{maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}),u=e.computed(()=>({objectFit:i.fit||"contain",maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}));function m(){if(n.value=!1,d.value=null,!t.value)return;const R=h.barcodeUnitsPerModule(i.barWidth);try{Bt(t.value,i.value,{format:i.barcodeType||"CODE128",width:R,height:h.BARCODE_BAR_HEIGHT_MODULES*R,displayValue:i.showText!==!1,fontSize:(i.barFontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*R,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*R,marginRight:h.BARCODE_QUIET_ZONE_MODULES*R,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*R})}catch{return}n.value=!0;const C=g(t.value),v=C?h.resolveBarcodeSize({unitWidth:C.width/R,unitHeight:C.height/R,boxWidthMm:h.barcodeAvailableBoxMm(i.targetWidthMm,i.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(i.targetHeightMm,i.maxHeight),dpi:i.printerDpi,barWidth:i.barWidth}):null;d.value=v?{width:`${v.widthMm}mm`,height:`${v.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function g(R){const C=(R.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return C.length!==4||C.some(v=>!Number.isFinite(v))?null:{width:C[2],height:C[3]}}async function k(){if(!i.value){l.value="";return}try{l.value=await xt.toDataURL(i.value,{width:96,margin:1,errorCorrectionLevel:i.qrCodeLevel||"M"})}catch{l.value=""}}function y(){i.cellType==="barcode"?m():k()}return e.onMounted(y),e.watch(()=>[i.cellType,i.value,i.barcodeType,i.qrCodeLevel,i.showText,i.printerDpi,i.targetWidthMm,i.targetHeightMm,i.barWidth,i.barFontSize,i.maxWidth,i.maxHeight],y),(R,C)=>(e.openBlock(),e.createElementBlock("div",gn,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:t,preserveAspectRatio:a.value,style:e.normalizeStyle(r.value)},null,12,hn)),[[e.vShow,o.cellType==="barcode"&&n.value]]),o.cellType==="qrcode"&&l.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:l.value,alt:"qrcode",style:e.normalizeStyle(u.value)},null,12,bn)):e.createCommentVNode("",!0),!n.value&&o.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",En,e.toDisplayString(o.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),kn=re(yn,[["__scopeId","data-v-81e37239"]]),Vn={class:"cell-image"},Nn=["src"],wn={key:1,class:"image-placeholder"},Cn=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{}},setup(o){const i=o,t=e.computed(()=>{const s=i.value||"";return s?s.includes("{")?i.designMode?h.evaluateTemplate(s,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(s,i.data?.[0]||{}):s:""}),n=e.ref(!1);function l(){n.value=!0}e.watch(t,()=>{n.value=!1});const d=e.computed(()=>({objectFit:i.fit||"contain",maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}));return(s,a)=>(e.openBlock(),e.createElementBlock("div",Vn,[t.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(d.value),onError:l},null,44,Nn)):(e.openBlock(),e.createElementBlock("div",wn,"图片"))]))}}),Sn=re(Cn,[["__scopeId","data-v-d5bc444b"]]),Bn=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],xn=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],$n={key:0,class:"data-placeholder"},Tn={key:3,class:"data-placeholder"},Dn={key:0,class:"col-resize-layer"},Mn=["aria-label","onMousedown"],Pn={key:1,class:"row-badges"},je=3.7795275591,zn=.1,Ln=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-element","dblclick-cell"],setup(o,{emit:i}){const t={header:"题",data:"数",subtotal:"小",summary:"汇"},n=o,l=i,d=e.inject(Oe,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),s=e.computed(()=>n.element.options.tableRows??[]),a=e.computed(()=>n.element.options.tableColWidths??[]),r=e.computed(()=>n.element.options.tableDefaultFontSize??10),u=e.computed(()=>n.element.options.tableDefaultColor??"#333333"),m=e.computed(()=>{const P=d.tableSelection.value;return P&&P.elementId===n.element.id?P:null});function g(P){let I=0;for(let O=0;O<P;O++)I+=s.value[O].height;return I}const k=e.ref(null),y=e.ref(null),R=e.ref([]);function C(){if(!n.designMode)return;const P=k.value;if(!P)return;const I=P.offsetHeight;if(I<=0)return;const O=n.element.options,_=I/je;Math.abs(_-(O.height??0))>zn&&(O.height=Math.round(_*100)/100);const q=P.offsetTop;R.value=Array.from(P.rows).map(fe=>({top:(fe.offsetTop-q)/je,height:fe.offsetHeight/je}))}function v(P){return R.value[P]?.top??g(P)}function f(P){return R.value[P]?.height??s.value[P]?.height??0}e.watch(()=>[n.element.options,n.designMode],()=>C(),{deep:!0,flush:"post"}),e.onMounted(()=>{C(),document.fonts?.ready.then(()=>C())});const M=e.computed(()=>{const P=n.element.options.dataSource;if(P&&Array.isArray(h.DEFAULT_DEMO_DATA[P]))return h.DEFAULT_DEMO_DATA[P];for(const I of Object.values(h.DEFAULT_DEMO_DATA))if(Array.isArray(I))return I}),j=e.computed(()=>{if(n.data)return n.data});function ne(P){return P.cellType==="barcode"||P.cellType==="qrcode"}function H(P,I){return ne(I)?h.resolveBarcodeDesignValue(I.formatter,M.value):I.formatter||""}function K(P,I){const O=n.element.options,_={designMode:n.designMode,showGhostBorder:n.showTableGhostBorder};return{fontFamily:I.fontFamily||"inherit",textAlign:I.align??"left",verticalAlign:I.valign??"middle",fontSize:(I.fontSize??r.value)+"pt",fontWeight:I.fontWeight??"normal",color:I.color??u.value,backgroundColor:I.backgroundColor??"transparent",borderTop:h.resolveCellBorderCss(I.borders?.top,_),borderRight:h.resolveCellBorderCss(I.borders?.right,_),borderBottom:h.resolveCellBorderCss(I.borders?.bottom,_),borderLeft:h.resolveCellBorderCss(I.borders?.left,_),padding:(I.padding??O.tableDefaultPadding??1)+"mm",whiteSpace:I.wordWrap??!0?"normal":"nowrap",overflow:I.wordWrap??!0?"visible":"hidden"}}function b(P){return h.resolveCellTextFit(P)}function B(P){return b(P)!=="autoHeight"}function S(P){return P.fontSize??r.value}function x(P,I){return h.cellFitCapMm(s.value,P,I,n.element.options.tableDefaultPadding??1)}function T(P,I){return h.cellFitWidthMm(a.value,P,I,n.element.options.tableDefaultPadding??1)}function X(P,I){return{maxHeight:x(I,P)+"mm",overflow:"hidden",...P.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}mt(y,()=>[n.designMode,n.data?.length,a.value.join(","),r.value,n.element.options.tableDefaultPadding,s.value.map(P=>`${P.height}:${P.cells.map(I=>`${I.formatter??""}|${I.fontSize??""}|${I.wordWrap??""}|${I.textFit??""}|${I.colspan??1}`).join("~")}`).join(",")]);function ee(P,I){const O=m.value;return{"cell-selected":!!O&&P>=O.r1&&P<=O.r2&&I>=O.c1&&I<=O.c2,"row-data-bg":s.value[P].type==="data"}}const le=e.ref(null);function ie(P,I){const O=h.normalizeSelection(s.value,P,I);d.setTableSelection({elementId:n.element.id,...O})}function ue(P,I,O){!n.designMode||!n.isSelected||(O.stopPropagation(),O.shiftKey&&m.value?ie({r:m.value.r1,c:m.value.c1},{r:P,c:I}):(le.value={r:P,c:I},ie({r:P,c:I},{r:P,c:I})),window.addEventListener("mouseup",()=>{le.value=null},{once:!0}))}function J(P,I){le.value&&ie(le.value,{r:P,c:I})}function c(P,I){n.designMode&&l("dblclick-cell",n.element.id,P,I)}const N=e.reactive({visible:!1,x:0,y:0});function W(P,I,O){if(!n.designMode||!n.isSelected)return;const _=m.value;_&&P>=_.r1&&P<=_.r2&&I>=_.c1&&I<=_.c2||ie({r:P,c:I},{r:P,c:I}),N.x=O.clientX,N.y=O.clientY,N.visible=!0,window.addEventListener("mousedown",()=>{N.visible=!1},{once:!0})}const he=e.computed(()=>{const P=m.value;return P?h.canMergeReason(s.value,P):"未选择单元格"}),pe=e.computed(()=>{const P=m.value;if(!P)return!1;for(let I=P.r1;I<=P.r2;I++)for(let O=P.c1;O<=P.c2;O++){const _=s.value[I].cells[O];if(!_.merged&&((_.rowspan??1)>1||(_.colspan??1)>1))return!0}return!1});function ce(P){const I=m.value;if(!I)return"未选择单元格";if(I.r1!==I.r2)return"行类型仅支持单行设置";const O=JSON.parse(JSON.stringify(s.value));return h.setRowType(O,I.r1,P)}function ve(){h.syncTableElementSize(n.element.options)}function z(P,I){const O=d.maxTableWidth.value,_=P.reduce((q,fe)=>q+fe,0)+P[I];return _>O?`插入后表格总宽 ${Math.round(_*10)/10}mm 超过打印范围宽度 ${O}mm,请先缩小列宽`:null}function V(P,I){const O=m.value;if(!O)return;N.visible=!1;const _=n.element.options,q=_.tableRows,fe=_.tableColWidths;let A=null;switch(P){case"insert-row-above":h.insertRow(q,O.r1,"above");break;case"insert-row-below":h.insertRow(q,O.r2,"below");break;case"delete-row":A=h.deleteRow(q,O.r1);break;case"insert-col-left":A=z(fe,O.c1),A||h.insertCol(q,fe,O.c1,"left");break;case"insert-col-right":A=z(fe,O.c2),A||h.insertCol(q,fe,O.c2,"right");break;case"delete-col":A=h.deleteCol(q,fe,O.c1);break;case"merge":h.mergeCells(q,O);break;case"split":h.splitCells(q,O);break;case"set-row-type":A=h.setRowType(q,O.r1,I);break}if(A){alert(A);return}d.setTableSelection(null),ve(),d.recordHistory()}const w=e.computed(()=>n.designMode&&!!n.isSelected&&!n.element.options.locked&&a.value.length>=1),F=e.computed(()=>Array.from({length:a.value.length},(P,I)=>I+1));function p(P){return a.value.slice(0,P).reduce((I,O)=>I+O,0)}const E=e.ref(null);let $=0,Y=0;function Q(P,I){w.value&&I.button===0&&(E.value=P,$=I.clientX,Y=a.value[P-1],document.addEventListener("mousemove",oe),document.addEventListener("mouseup",me))}function oe(P){if(E.value===null)return;const I=n.scale||1,O=(P.clientX-$)/(I*je),_=E.value-1,q=n.element.options.tableColWidths;q[_]=h.clampResizedColumnWidth(q,_,Y+O,d.maxTableWidth.value),ve()}function me(){document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",me),E.value!==null&&(E.value=null,ve(),d.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",me)}),(P,I)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:y,class:e.normalizeClass(["print-table",{"design-mode":o.designMode}]),onContextmenu:I[0]||(I[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:k,style:e.normalizeStyle({fontSize:r.value+"pt",color:u.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(O,_)=>(e.openBlock(),e.createElementBlock("col",{key:_,style:e.normalizeStyle({width:O+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(O,_)=>(e.openBlock(),e.createElementBlock("tr",{key:O.id,style:e.normalizeStyle({height:O.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.cells,(q,fe)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:q.id},[q.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:q.rowspan||1,colspan:q.colspan||1,class:e.normalizeClass(ee(_,fe)),style:e.normalizeStyle(K(O,q)),onMousedown:e.withModifiers(A=>ue(_,fe,A),["left"]),onMouseenter:A=>J(_,fe),onDblclick:e.withModifiers(A=>c(_,fe),["stop"]),onContextmenu:e.withModifiers(A=>W(_,fe,A),["prevent","stop"])},[ne(q)?(e.openBlock(),e.createBlock(kn,{key:0,"cell-type":q.cellType,value:H(O,q),"barcode-type":q.barcodeType,"qr-code-level":q.qrCodeLevel,"show-text":q.showBarcodeText!==!1,fit:q.fit,"max-width":q.maxWidth,"max-height":q.maxHeight,"printer-dpi":q.printerDpi,"target-width-mm":T(fe,q),"target-height-mm":x(_,q),"bar-width":q.barWidth,"bar-font-size":q.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):q.cellType==="image"?(e.openBlock(),e.createBlock(Sn,{key:1,value:q.formatter||"",fit:q.fit,"max-width":q.maxWidth,"max-height":q.maxHeight,"design-mode":o.designMode,data:j.value},null,8,["value","fit","max-width","max-height","design-mode","data"])):B(q)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(X(q,_)),"data-fit":b(q)==="shrink"?"shrink":void 0,"data-fit-base":String(S(q)),"data-fit-min":String(e.unref(h.resolveShrinkMinFontSize)(q.shrinkMinFontSize)),"data-fit-mm":x(_,q)},[O.type==="data"?(e.openBlock(),e.createElementBlock("span",$n,e.toDisplayString(H(O,q)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(H(O,q)),1)],64))],12,xn)):O.type==="data"?(e.openBlock(),e.createElementBlock("span",Tn,e.toDisplayString(H(O,q)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(H(O,q)),1)],64))],46,Bn))],64))),128))],4))),128))])],4),w.value?(e.openBlock(),e.createElementBlock("div",Dn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,O=>(e.openBlock(),e.createElementBlock("div",{key:O,class:e.normalizeClass(["col-resize-handle",{dragging:E.value===O}]),role:"separator","aria-label":"列宽手柄"+O,style:e.normalizeStyle({left:p(O)+"mm"}),onMousedown:e.withModifiers(_=>Q(O,_),["stop","prevent"])},null,46,Mn))),128))])):e.createCommentVNode("",!0),o.designMode&&o.isSelected?(e.openBlock(),e.createElementBlock("div",Pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(O,_)=>(e.openBlock(),e.createElementBlock("span",{key:O.id,class:"row-badge",style:e.normalizeStyle({top:v(_)+"mm",height:f(_)+"mm"})},e.toDisplayString(t[O.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(fn,{visible:N.visible,x:N.x,y:N.y,"can-delete-row":s.value.length>1,"can-delete-col":a.value.length>1,"merge-disabled-reason":he.value,"can-split":pe.value,"current-row-type":m.value?s.value[m.value.r1]?.type??null:null,"row-type-disabled-reason":ce,onAction:V},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),Rn=re(Ln,[["__scopeId","data-v-4531a154"]]),yt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="hline"),n=e.computed(()=>{const l=i.element.options,d=(l.borderWidth||.75)+"pt",s=l.borderStyle||"solid",a=l.borderColor||"#333";return t.value?{width:"100%",height:"0",borderTop:`${d} ${s} ${a}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${d} ${s} ${a}`,boxSizing:"border-box"}});return(l,d)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(n.value)},null,4))}}),kt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="oval"),n=e.computed(()=>{const l=i.element.options;return{width:"100%",height:"100%",borderWidth:(l.borderWidth||1)+"pt",borderStyle:l.borderStyle||"solid",borderColor:l.borderColor||"#333",backgroundColor:l.backgroundColor||"transparent",borderRadius:t.value?"50%":"0",boxSizing:"border-box"}});return(l,d)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(n.value)},null,4))}}),An={class:"print-barcode",ref:"containerRef"},In=["preserveAspectRatio"],Fn=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.ref(null),n=e.ref(null),l={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},d=e.computed(()=>l[i.element.options.fit||"contain"]??"xMidYMid meet"),s=e.computed(()=>n.value?{width:n.value.width,height:n.value.height}:{maxWidth:"100%",maxHeight:"100%"});function a(){if(!t.value)return;const u=i.element.options,m=(i.designMode?u.testData||u.formatter:h.resolveTextBinding(u,i.data))||"条码",g=h.barcodeUnitsPerModule(u.barWidth);try{Bt(t.value,m,{format:u.barcodeType||"CODE128",width:g,height:h.BARCODE_BAR_HEIGHT_MODULES*g,displayValue:!u.hideTitle,fontSize:(u.fontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*g,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*g,marginRight:h.BARCODE_QUIET_ZONE_MODULES*g,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*g})}catch{n.value=null;return}const k=r(t.value),y=k?h.resolveBarcodeSize({unitWidth:k.width/g,unitHeight:k.height/g,boxWidthMm:h.barcodeAvailableBoxMm(u.width,u.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(u.height,u.maxHeight),dpi:u.printerDpi,barWidth:u.barWidth}):null;n.value=y?{width:`${y.widthMm}mm`,height:`${y.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function r(u){const m=(u.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return m.length!==4||m.some(g=>!Number.isFinite(g))?null:{width:m[2],height:m[3]}}return e.onMounted(a),e.watch(()=>[i.element.options.formatter,i.element.options.testData,i.element.options.barcodeType,i.element.options.width,i.element.options.height,i.element.options.barWidth,i.element.options.printerDpi,i.element.options.hideTitle,i.element.options.fontSize,i.element.options.maxWidth,i.element.options.maxHeight],a),(u,m)=>(e.openBlock(),e.createElementBlock("div",An,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:t,preserveAspectRatio:d.value,style:e.normalizeStyle(s.value)},null,12,In))],512))}}),Un=re(Fn,[["__scopeId","data-v-6eb95a40"]]),Hn={class:"print-qrcode"},On=["src"],Wn=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.ref(""),n=e.computed(()=>{const d=i.element.options;return{objectFit:d.fit||"contain",maxWidth:d.maxWidth?`${d.maxWidth}mm`:"100%",maxHeight:d.maxHeight?`${d.maxHeight}mm`:"100%"}});async function l(){const d=i.element.options,s=(i.designMode?d.testData||d.formatter:h.resolveTextBinding(d,i.data))||"二维码",a=Math.min(d.width||80,d.height||80);try{t.value=await xt.toDataURL(s,{width:a,margin:1,errorCorrectionLevel:String(d.qrCodeLevel??"M")})}catch{t.value=""}}return e.onMounted(l),e.watch(()=>[i.element.options.formatter,i.element.options.testData,i.element.options.qrCodeLevel],l),(d,s)=>(e.openBlock(),e.createElementBlock("div",Hn,[t.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,alt:"qrcode",style:e.normalizeStyle(n.value)},null,12,On)):e.createCommentVNode("",!0)]))}}),Gn=re(Wn,[["__scopeId","data-v-3454544f"]]),Kn=["innerHTML"],qn=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{if(i.element.options.formatter){const n=i.data&&i.data.length>0?i.data[0]:{},l=h.evaluateTemplate(i.element.options.formatter,n??{});return l?Ft.sanitize(l):""}return'<div style="background:#e0e0e0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:10pt;color:#999">HTML</div>'});return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:t.value},null,8,Kn))}}),Yn=re(qn,[["__scopeId","data-v-880bbde5"]]),jn=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{const l=i.element.options;return{fontSize:(l.fontSize||12)+"pt",fontWeight:l.fontWeight||"normal",fontFamily:l.fontFamily||"inherit",color:l.color||"#333",textAlign:l.textAlign||"left",lineHeight:l.lineHeight?l.lineHeight+"pt":"normal",letterSpacing:l.letterSpacing?l.letterSpacing+"pt":"normal"}}),n=e.computed(()=>i.designMode?i.element.options.title||"{pageIndex}/{totalPages}":i.element.options.title||"");return(l,d)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(t.value)},e.toDisplayString(n.value),5))}}),Xn=re(jn,[["__scopeId","data-v-38f1d7df"]]),Zn={key:0,class:"drag-preview"},Jn={key:1,class:"resize-handles"},Qn=["onMousedown"],_n={key:2,class:"selected-indicator"},el={class:"position-label"},tl=e.defineComponent({__name:"BaseElement",props:{element:{},isSelected:{type:Boolean},designMode:{type:Boolean},printData:{},scale:{},allElements:{},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},zone:{},adsorbHandler:{type:Function},clearAdsorbGuides:{type:Function}},emits:["select","update:element","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","clone-element"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(null),d=e.inject($t,null),s=e.computed(()=>d?.value?d.value.has(t.element.id):t.isSelected??!1),a=e.inject(Tt,null),r=e.computed(()=>a?.value.has(t.element.id)??!1),u={text:e.markRaw(nn),image:e.markRaw(dn),longText:e.markRaw(un),table:e.markRaw(Rn),hline:e.markRaw(yt),vline:e.markRaw(yt),rect:e.markRaw(kt),oval:e.markRaw(kt),barcode:e.markRaw(Un),qrcode:e.markRaw(Gn),html:e.markRaw(Yn),pageNumber:e.markRaw(Xn)},m=e.computed(()=>u[t.element.printElementType.type]),g=e.computed(()=>t.element.printElementType.type==="table"?{showTableGhostBorder:t.showTableGhostBorder,scale:t.scale}:{}),k=e.computed(()=>{const T=t.element.options;return{position:"absolute",left:T.left+"mm",top:T.top+"mm",width:T.width+"mm",height:T.height+"mm",zIndex:T.zIndex||"auto"}}),y=e.computed(()=>{const T=t.element.options;return`x:${Math.round(T.left)} y:${Math.round(T.top)} ${Math.round(T.width)}×${Math.round(T.height)}mm`});let R=0,C=0;const v=e.reactive({disabled:!t.designMode||!!t.element.options.locked,getScale:()=>(t.scale||1)*h.mmToPx(1),onDrag:T=>{const X=T.left-R,ee=T.top-C;l.value&&(l.value.style.transform=`translate(${X}mm, ${ee}mm)`)},onDragEnd:(T,X)=>{if(X.altKey){const ie=JSON.parse(JSON.stringify(t.element));ie.id=h.generateId(),ie.options.left=T.left,ie.options.top=T.top,ie.options.groupId=void 0,n("clone-element",ie,{left:T.left,top:T.top}),l.value&&(l.value.style.transform="");return}const ee=T.left-R,le=T.top-C;if(t.element.options.left=T.left,t.element.options.top=T.top,l.value&&(l.value.style.transform=""),t.element.options.groupId&&t.allElements)for(const ie of t.allElements)ie.id!==t.element.id&&ie.options.groupId===t.element.options.groupId&&(ie.options.left+=ee,ie.options.top+=le)},onStart:()=>{R=t.element.options.left,C=t.element.options.top,n("select",t.element.id,!1),n("drag-start")},onStop:()=>{t.clearAdsorbGuides?.(),n("drag-stop")},onAdsorb:T=>{let X=T.left,ee=T.top;return t.snapToGrid&&(X=Math.round(T.left/5)*5,ee=Math.round(T.top/5)*5),t.adsorbHandler?t.adsorbHandler({id:t.element.id,left:X,top:ee,width:t.element.options.width,height:t.element.options.height}):{left:X,top:ee,lines:[]}}}),{setup:f,cleanup:M,isDragging:j}=_o(l,v);e.watchEffect(()=>{v.disabled=!t.designMode||!!t.element.options.locked});const ne=e.computed(()=>s.value&&!!t.designMode&&!t.element.options.locked&&t.element.printElementType.type!=="table"),{startResize:H,cleanup:K}=h.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(t.scale||1)*h.mmToPx(1),getRect:()=>({left:t.element.options.left,top:t.element.options.top,width:t.element.options.width,height:t.element.options.height}),onResize:T=>{t.element.options.left=T.left,t.element.options.top=T.top,t.element.options.width=T.width,t.element.options.height=T.height},onStart:()=>{n("drag-start")},onStop:()=>{n("drag-stop")}});function b(T){t.designMode&&T.button===0&&n("select",t.element.id,T.ctrlKey||T.metaKey)}function B(){t.designMode&&n("dblclick-element",t.element.id)}function S(T,X,ee){t.designMode&&n("dblclick-cell",T,X,ee)}e.onMounted(()=>{t.designMode&&f()});function x(){M(),K(),t.clearAdsorbGuides?.()}return e.onUnmounted(()=>{x()}),(T,X)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:l,class:e.normalizeClass(["print-element",{selected:s.value,previewed:r.value,"design-mode":o.designMode,locked:o.element.options.locked,hidden:o.element.options.visible===!1,"drag-ghost":e.unref(j),[`type-${o.element.printElementType.type}`]:!0,[`zone-${o.zone||"content"}`]:!0}]),style:e.normalizeStyle(k.value),onMousedown:e.withModifiers(b,["stop"]),onDblclick:e.withModifiers(B,["stop"]),onContextmenu:X[0]||(X[0]=e.withModifiers(ee=>T.$emit("contextmenu",o.element.id,ee),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m.value),e.mergeProps({element:o.element,data:o.printData,"design-mode":o.designMode,"is-selected":s.value},g.value,{onDblclickCell:S}),null,16,["element","data","design-mode","is-selected"])),e.unref(j)?(e.openBlock(),e.createElementBlock("div",Zn)):e.createCommentVNode("",!0),ne.value?(e.openBlock(),e.createElementBlock("div",Jn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.RESIZE_POINTS),ee=>(e.openBlock(),e.createElementBlock("div",{key:ee,class:e.normalizeClass(["resize-handle",`handle-${ee}`]),onMousedown:e.withModifiers(le=>e.unref(H)(ee,le),["stop"])},null,42,Qn))),128))])):e.createCommentVNode("",!0),s.value&&o.designMode?(e.openBlock(),e.createElementBlock("div",_n,[e.createElementVNode("div",el,e.toDisplayString(y.value),1)])):e.createCommentVNode("",!0)],38))}}),it=re(tl,[["__scopeId","data-v-45a5eb4c"]]);function ol(o={}){const i=e.ref([]),t=e.ref({width:0,height:0});function n(s,a,r){return h.computeAdsorb(s,a,r,o)}function l(s,a,r){i.value=s,t.value={width:a,height:r}}function d(){i.value=[]}return{check:n,renderLines:l,clearLines:d,guideLines:i,paperSize:t}}function nl(o){const{check:i,renderLines:t,clearLines:n,guideLines:l,paperSize:d}=ol(o.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function s(r){const u=o.getElements().filter(k=>k.id!==r.id).map(k=>({id:k.id,left:k.options.left,top:k.options.top,width:k.options.width,height:k.options.height})),m=i(r,u,o.getGuides?.()),g=o.getPaperSize();return t(m.lines,g.width,g.height),m}function a(){n()}return{requestAdsorb:s,clearGuides:a,guideLines:l,paperSize:d}}const ll=["src"],al=["width","height","viewBox"],il=["x","y","font-size","fill","transform"],sl={key:0,class:"zone-label"},rl={key:0,class:"zone-height-tip"},dl={key:0,class:"zone-label"},cl={key:0,class:"zone-height-tip"},ul=["onMousedown","onDblclick"],ml=e.defineComponent({__name:"CanvasPaper",props:{templateData:{},runtimeElements:{},designMode:{type:Boolean},printData:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},guides:{}},emits:["select","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","zone-height-change","zone-height-commit","guide-move","guide-remove","clone-element"],setup(o,{expose:i,emit:t}){const n=o,l=t,d=e.ref(null),s=e.computed(()=>h.getPaperDimensions(n.templateData).width),a=e.computed(()=>h.getPaperDimensions(n.templateData).height),r=e.computed(()=>n.templateData.designBackground),u=e.ref(!1);e.watch(()=>r.value?.src,()=>{u.value=!1});const m=e.computed(()=>{const V=r.value?.rotation;return V===90||V===180||V===270?V:0}),g=e.computed(()=>{const V=m.value,w=V===90||V===270,F=w?a.value:s.value,p=w?s.value:a.value,E={width:F+"mm",height:p+"mm",left:(s.value-F)/2+"mm",top:(a.value-p)/2+"mm"};return V!==0&&(E.transform=`rotate(${V}deg)`),E});function k(){u.value=!0,console.warn("[print-designer] 设计背景图加载失败:",r.value?.src)}const y=e.computed(()=>`${8/(n.scale||1)}px`),R=e.computed(()=>{const V=n.scale||1,w=h.mmToPx(s.value)*V,F=h.mmToPx(a.value)*V;return{width:w+"px",height:F+"px",position:"relative"}}),C=e.computed(()=>{const V=n.templateData.margins,w=n.templateData.header.height,F=n.templateData.footer.height,p=s.value-V.left-V.right;return{header:{left:V.left,top:V.top,width:p,height:w},content:{left:V.left,top:V.top+w,width:p,height:a.value-V.top-V.bottom-w-F},footer:{left:V.left,top:a.value-V.bottom-F,width:p,height:F}}});function v(V){return{position:"absolute",left:V.left+"mm",top:V.top+"mm",width:V.width+"mm",height:V.height+"mm"}}const f=e.computed(()=>{const V={header:[],footer:[],content:[]};for(const w of n.runtimeElements)w.zone==="header"?V.header.push(w):w.zone==="footer"?V.footer.push(w):V.content.push(w);return V}),M=e.computed(()=>f.value.header),j=e.computed(()=>f.value.footer),ne=e.computed(()=>f.value.content);let H="content";const{requestAdsorb:K,clearGuides:b,guideLines:B,paperSize:S}=nl({getElements:()=>f.value[H],getPaperSize:()=>{const V=C.value[H];return{width:V.width,height:V.height}},getGuides:()=>{const V=[],w=[];for(const F of n.guides??[])F.type==="vertical"?V.push(F.position):w.push(F.position);return{vertical:V,horizontal:w}}});function x(V){H=n.runtimeElements.find(p=>p.id===V.id)?.zone||"content";const F=K(V);return(F.left!==V.left||F.top!==V.top)&&c(F.left+V.width/2,F.top+V.height/2),F}function T(V,w){if(V.button!==0)return;const F=w.position,p=V.clientX,E=V.clientY,$=n.scale??1,Y=25.4/96,Q=me=>{const P=(w.type==="vertical"?me.clientX-p:me.clientY-E)/$*Y,I=w.type==="vertical"?s.value:a.value,O=Math.min(Math.max(F+P,0),I);l("guide-move",w.id,O)},oe=()=>{window.removeEventListener("mousemove",Q),window.removeEventListener("mouseup",oe)};window.addEventListener("mousemove",Q),window.addEventListener("mouseup",oe)}const X=e.computed(()=>({width:s.value+"mm",minHeight:a.value+"mm",background:n.templateData.pageBackground||"var(--pd-paper, #fff)",boxShadow:"var(--pd-shadow-paper, 0 1px 2px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.08))",overflow:"hidden",position:"relative",transform:n.scale?`scale(${n.scale})`:void 0,transformOrigin:"0 0"})),ee=e.computed(()=>{const V=n.templateData.margins;return{padding:`${V.top}mm ${V.right}mm ${V.bottom}mm ${V.left}mm`,position:"relative",boxSizing:"border-box",minHeight:a.value+"mm"}}),le=e.computed(()=>({backgroundImage:`url("data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><path d="M0 .5H20M.5 0V20" fill="none" stroke="rgba(0,0,0,0.08)" stroke-width="1" stroke-dasharray="4 4"/></svg>')}")`,backgroundSize:"5mm 5mm",backgroundPosition:"0 0"}));let ie=0,ue=null;const J=e.ref(null);function c(V,w){ie+=1,J.value={left:V,top:w,key:ie},ue&&clearTimeout(ue),ue=setTimeout(()=>{J.value=null},300)}const N=e.computed(()=>ge.resolveWatermarkLayout(n.templateData.watermark,n.printData,{width:s.value,height:a.value})),W=e.ref(null);function he(V,w){w.button===0&&(ve(),W.value={zone:V,startY:w.clientY,startH:n.templateData[V].height},window.addEventListener("mousemove",pe),window.addEventListener("mouseup",ce))}function pe(V){if(!W.value)return;const{zone:w,startY:F,startH:p}=W.value,$=(V.clientY-F)/(n.scale||1)*25.4/96,Y=w==="header"?$:-$,Q=Math.min(100,a.value-n.templateData.margins.top-n.templateData.margins.bottom-(w==="header"?n.templateData.footer.height:n.templateData.header.height)-10),oe=Math.min(Q,Math.max(0,Math.round((p+Y)*10)/10));l("zone-height-change",w,oe)}function ce(){if(!W.value)return;const V=W.value.zone;W.value=null,window.removeEventListener("mousemove",pe),window.removeEventListener("mouseup",ce),l("zone-height-commit",V)}function ve(){window.removeEventListener("mousemove",pe),window.removeEventListener("mouseup",ce),W.value=null}e.onUnmounted(()=>{ve(),ue&&clearTimeout(ue)});function z(V,w){l("select",V,w)}return i({contentRef:d}),(V,w)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(R.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(X.value)},[o.designMode&&r.value?.src&&!u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(g.value)},[e.createElementVNode("img",{src:r.value.src,draggable:"false",alt:"",onError:k},null,40,ll)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:d,style:e.normalizeStyle(ee.value)},[o.showGrid&&o.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle(le.value)},null,4)):e.createCommentVNode("",!0),J.value?(e.openBlock(),e.createElementBlock("div",{key:J.value.key,class:"snap-indicator",style:e.normalizeStyle({left:J.value.left+"mm",top:J.value.top+"mm"})},null,4)):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(N.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value.tiles,(F,p)=>(e.openBlock(),e.createElementBlock("svg",{key:p,class:"watermark-tile",width:F.widthMm+"mm",height:F.heightMm+"mm",viewBox:`0 0 ${N.value.tileWidthPx} ${N.value.tileHeightPx}`,style:e.normalizeStyle({left:F.leftMm+"mm",top:F.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:N.value.tileWidthPx/2,y:N.value.tileHeightPx/2,"font-size":N.value.fontSizePx,fill:N.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${N.value.rotate},${N.value.tileWidthPx/2},${N.value.tileHeightPx/2})`},e.toDisplayString(N.value.text),9,il)],12,al))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.header))},[o.designMode?(e.openBlock(),e.createElementBlock("span",sl,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,F=>(e.openBlock(),e.createBlock(it,{key:F.id,element:F,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":M.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"header","adsorb-handler":x,"clear-adsorb-guides":e.unref(b),onSelect:z,onDragStart:w[0]||(w[0]=p=>V.$emit("drag-start")),onDragStop:w[1]||(w[1]=p=>V.$emit("drag-stop")),onDblclickElement:w[2]||(w[2]=p=>V.$emit("dblclick-element",p)),onDblclickCell:w[3]||(w[3]=(p,E,$)=>V.$emit("dblclick-cell",p,E,$)),onContextmenu:w[4]||(w[4]=(p,E)=>V.$emit("contextmenu",p,E)),onCloneElement:(p,E)=>V.$emit("clone-element",p,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:w[5]||(w[5]=e.withModifiers(F=>he("header",F),["prevent","stop"]))},[W.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",rl,e.toDisplayString(o.templateData.header.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-content",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.content))},[o.designMode&&o.templateData.firstPageOverlay.height>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"zone-overlay",style:e.normalizeStyle({height:o.templateData.firstPageOverlay.height+"mm"})},[...w[17]||(w[17]=[e.createElementVNode("span",{class:"zone-label"},"首页叠加",-1)])],4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ne.value,F=>(e.openBlock(),e.createBlock(it,{key:F.id,element:F,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":ne.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"content","adsorb-handler":x,"clear-adsorb-guides":e.unref(b),onSelect:z,onDragStart:w[6]||(w[6]=p=>V.$emit("drag-start")),onDragStop:w[7]||(w[7]=p=>V.$emit("drag-stop")),onDblclickElement:w[8]||(w[8]=p=>V.$emit("dblclick-element",p)),onDblclickCell:w[9]||(w[9]=(p,E,$)=>V.$emit("dblclick-cell",p,E,$)),onContextmenu:w[10]||(w[10]=(p,E)=>V.$emit("contextmenu",p,E)),onCloneElement:(p,E)=>V.$emit("clone-element",p,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128))],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-footer",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.footer))},[o.designMode?(e.openBlock(),e.createElementBlock("span",dl,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,F=>(e.openBlock(),e.createBlock(it,{key:F.id,element:F,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":j.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"footer","adsorb-handler":x,"clear-adsorb-guides":e.unref(b),onSelect:z,onDragStart:w[11]||(w[11]=p=>V.$emit("drag-start")),onDragStop:w[12]||(w[12]=p=>V.$emit("drag-stop")),onDblclickElement:w[13]||(w[13]=p=>V.$emit("dblclick-element",p)),onDblclickCell:w[14]||(w[14]=(p,E,$)=>V.$emit("dblclick-cell",p,E,$)),onContextmenu:w[15]||(w[15]=(p,E)=>V.$emit("contextmenu",p,E)),onCloneElement:(p,E)=>V.$emit("clone-element",p,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:w[16]||(w[16]=e.withModifiers(F=>he("footer",F),["prevent","stop"]))},[W.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",cl,e.toDisplayString(o.templateData.footer.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(B),(F,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:e.normalizeClass(["adsorb-guide",[`guide-${F.type}`]]),style:e.normalizeStyle(F.type==="vertical"?{left:F.position+"mm",top:"0",height:e.unref(S).height+"mm",borderLeftColor:F.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:F.position+"mm",left:"0",width:e.unref(S).width+"mm",borderTopColor:F.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.guides,F=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+F.id,class:e.normalizeClass(["manual-guide",[`guide-${F.type}`]]),style:e.normalizeStyle(F.type==="vertical"?{left:F.position+"mm",top:"0",height:a.value+"mm","--guide-hit":y.value}:{top:F.position+"mm",left:"0",width:s.value+"mm","--guide-hit":y.value}),onMousedown:e.withModifiers(p=>T(p,F),["prevent","stop"]),onDblclick:e.withModifiers(p=>F.id&&l("guide-remove",F.id),["prevent","stop"])},null,46,ul))),128))],4)],4)],4))}}),pl=re(ml,[["__scopeId","data-v-38b3a452"]]),vl=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(o,{emit:i}){const t=o,n=i,l=e.computed(()=>t.orientation==="horizontal"),d=e.computed(()=>l.value?"vertical":"horizontal"),s=e.ref(null),a=e.ref(null),r=e.computed(()=>a.value??t.cursorPx??null),u=e.computed(()=>l.value?{width:t.viewportPx+"px",height:h.RULER_THICKNESS+"px"}:{width:h.RULER_THICKNESS+"px",height:t.viewportPx+"px"});let m=0;function g(){m||(m=requestAnimationFrame(()=>{m=0,k()}))}function k(){const b=s.value;if(!b)return;const B=b.getContext("2d");if(!B)return;const S=window.devicePixelRatio||1,x=Math.max(0,Math.round(t.viewportPx)),T=h.RULER_THICKNESS;b.width=(l.value?x:T)*S,b.height=(l.value?T:x)*S,B.setTransform(S,0,0,S,0,0);const X=getComputedStyle(b),ee=X.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",le=X.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",ie=X.getPropertyValue("--pd-accent").trim()||"#165DFF";B.fillStyle=ee,B.fillRect(0,0,l.value?x:T,l.value?T:x);const ue=t.scale>0?t.scale:1,J=h.mmToPx(1)*ue;if(J<=0)return;const c=-t.originPx/J,N=(x-t.originPx)/J,W=h.chooseMajorStepMM(ue),he=h.buildRulerTicks(c,N,W);y(B,he,J,le,!0),y(B,he,J,le,!1),R(B,0,ie),R(B,t.paperLengthMM,ie);const pe=r.value;if(pe!==null&&pe>=0&&pe<=x){if(B.strokeStyle=ie,B.lineWidth=1.5,B.beginPath(),l.value){const ce=Math.round(pe)+.5;B.moveTo(ce,0),B.lineTo(ce,T)}else{const ce=Math.round(pe)+.5;B.moveTo(0,ce),B.lineTo(T,ce)}B.stroke()}}function y(b,B,S,x,T){b.strokeStyle=x,b.fillStyle=x,b.globalAlpha=T?.32:1,b.lineWidth=1,b.font="9px ui-monospace, Menlo, monospace",b.textBaseline="top";for(const X of B){if((X.mm<0||X.mm>t.paperLengthMM)!==T)continue;const le=Math.round(t.originPx+X.mm*S)+.5,ie=X.major?8:4;b.beginPath(),l.value?(b.moveTo(le,0),b.lineTo(le,ie)):(b.moveTo(0,le),b.lineTo(ie,le)),b.stroke(),X.major&&X.label&&(l.value?b.fillText(X.label,le+2,11):(b.save(),b.translate(11,le+2),b.rotate(-Math.PI/2),b.fillText(X.label,0,0),b.restore()))}b.globalAlpha=1}function R(b,B,S){const x=h.mmToPx(1)*(t.scale>0?t.scale:1),T=Math.round(t.originPx+B*x)+.5;T<=0||T>=t.viewportPx||(b.strokeStyle=S,b.globalAlpha=.55,b.lineWidth=1,b.beginPath(),l.value?(b.moveTo(T,0),b.lineTo(T,h.RULER_THICKNESS)):(b.moveTo(0,T),b.lineTo(h.RULER_THICKNESS,T)),b.stroke(),b.globalAlpha=1)}e.watch(()=>[t.viewportPx,t.originPx,t.paperLengthMM,t.scale,t.cursorPx,t.orientation],g),e.onMounted(g),e.onBeforeUnmount(()=>{m&&cancelAnimationFrame(m)});let C=!1;function v(b){const B=s.value;if(!B)return null;const S=B.getBoundingClientRect(),x=l.value?b.clientX-S.left:b.clientY-S.top;if(x<0||x>t.viewportPx)return null;const T=h.mmToPx(1)*(t.scale>0?t.scale:1);return(x-t.originPx)/T}function f(b){b.button===0&&(C=!0,b.preventDefault(),window.addEventListener("mousemove",H),window.addEventListener("mouseup",K),ne(b))}function M(b){const B=s.value;if(!B)return;const S=B.getBoundingClientRect();a.value=l.value?b.clientX-S.left:b.clientY-S.top,g()}function j(){a.value=null,g()}function ne(b){const B=v(b);n("guide-dragging",B)}function H(b){C&&ne(b)}function K(b){if(!C)return;C=!1,window.removeEventListener("mousemove",H),window.removeEventListener("mouseup",K);const B=v(b);B!==null&&B>=0&&B<=t.paperLengthMM&&n("add-guide",d.value,B),n("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",H),window.removeEventListener("mouseup",K)}),(b,B)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:s,class:e.normalizeClass(["pd-ruler",`is-${o.orientation}`]),style:e.normalizeStyle(u.value),onMousedown:f,onMousemove:M,onMouseleave:j},null,38))}}),Vt=re(vl,[["__scopeId","data-v-1e7d0633"]]),fl={class:"canvas-scroll"},gl={key:0,class:"overlay-layer"},hl=["src"],Xe=96/25.4,bl=e.defineComponent({__name:"CanvasArea",props:{templateData:{},elements:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},hasClipboard:{type:Boolean},guides:{},overlayVisible:{type:Boolean},screenshotUrl:{},overlayOpacity:{},selectedElementHasGroup:{type:Boolean},showRuler:{type:Boolean,default:!0}},emits:["select","drop-element","drop-field","drag-start","drag-stop","dblclick-element","dblclick-cell","zone-height-change","zone-height-commit","select-all","clear-selection","preview","commit-preview","paste","copy","cut","delete","move-layer","group","ungroup","coordinate","add-guide","guide-move","guide-remove","zoom","clone-element"],setup(o,{expose:i,emit:t}){const n=o,l=t;function d(p,E){l("select",p,E)}const s=e.ref(null),a=e.computed(()=>h.getPaperDimensions(n.templateData).width),r=e.computed(()=>h.getPaperDimensions(n.templateData).height),u=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),m=e.reactive({x:null,y:null}),g=e.reactive({x:0,y:0}),k=e.computed(()=>({transform:`translate(${g.x}px, ${g.y}px)`}));function y(){const p=s.value,E=p?.querySelector(".hiprint-printPaper");if(!p||!E)return;const $=p.getBoundingClientRect(),Y=E.getBoundingClientRect(),Q=n.scale||1,oe=Y.width/h.mmToPx(a.value);u.paperScale=Math.abs(oe-Q)<.002?Q:oe,u.originX=Y.left-$.left-h.RULER_THICKNESS,u.originY=Y.top-$.top-h.RULER_THICKNESS,u.viewW=p.clientWidth-h.RULER_THICKNESS,u.viewH=p.clientHeight-h.RULER_THICKNESS}function R(){g.x=s.value?.scrollLeft??0,g.y=s.value?.scrollTop??0,y()}let C=null,v=0;function f(){cancelAnimationFrame(v);const p=performance.now()+220,E=()=>{y(),performance.now()<p&&(v=requestAnimationFrame(E))};v=requestAnimationFrame(E)}const M=e.ref(null);function j(p,E){M.value=E===null?null:{type:p,mm:E}}const ne=e.computed(()=>{const p=M.value,E=s.value?.querySelector(".hiprint-printPaper");if(!p||!E)return{};const $=E.getBoundingClientRect(),Y=$.width/h.mmToPx(a.value),Q=h.mmToPx(p.mm)*(Y>0?Y:n.scale||1);return p.type==="vertical"?{left:$.left+Q+"px",top:$.top+"px",height:$.height+"px"}:{left:$.left+"px",top:$.top+Q+"px",width:$.width+"px"}});function H(p){const E=s.value?.querySelector(".hiprint-printPaper");if(!E)return;const $=E.getBoundingClientRect(),Y=n.scale||1,Q=h.pxToMm((p.clientX-$.left)/Y),oe=h.pxToMm((p.clientY-$.top)/Y);if(!(Q<0||oe<0))return{x:Q,y:oe}}function K(p){const E=H(p),$=p.dataTransfer?.getData("fieldData");if($)try{const Q=JSON.parse($);l("drop-field",Q,E);return}catch{}const Y=p.dataTransfer?.getData("elementType");Y&&l("drop-element",Y,E)}const b=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let B={x:0,y:0};function S(p){return!p||!(p instanceof HTMLElement)?!1:!!(p===s.value||p.classList.contains("canvas-scroll")||p.classList.contains("hiprint-printPaper")||p.classList.contains("hiprint-printPaper-content")||p.classList.contains("zone-layer")||p.classList.contains("grid-bg")||p.classList.contains("watermark-layer"))}function x(p){const E=s.value,$=E?.querySelector(".hiprint-printPaper");if(!E||!$)return;const Y=E.getBoundingClientRect();m.x=p.clientX-Y.left-h.RULER_THICKNESS,m.y=p.clientY-Y.top-h.RULER_THICKNESS;const Q=$.getBoundingClientRect(),oe=n.scale||1,me=h.pxToMm((p.clientX-Q.left)/oe),P=h.pxToMm((p.clientY-Q.top)/oe);if(me<0||P<0){l("coordinate",null);return}l("coordinate",{x:me,y:P})}function T(){l("coordinate",null),m.x=null,m.y=null}function X(p,E,$,Y){const Q=s.value;if(!Q)return;const oe=Math.max(Y,Math.round(p)),me=Math.round((n.scale||1)*100);if(oe===me)return;const P=n.scale||1,I=oe/100/P,O=getComputedStyle(Q),_=parseFloat(O.paddingLeft)||0,q=parseFloat(O.paddingTop)||0,fe=Q.scrollLeft+E-_,A=Q.scrollTop+$-q;l("zoom",oe-me),e.nextTick(()=>{const D=getComputedStyle(Q),Z=parseFloat(D.paddingLeft)||0,be=parseFloat(D.paddingTop)||0;Q.scrollLeft=fe*I-E+Z,Q.scrollTop=A*I-$+be})}function ee(p){if(!(p.ctrlKey||p.metaKey))return;p.preventDefault();const E=s.value;if(!E)return;const $=Math.round((n.scale||1)*100),Y=h.nextWheelScale($,p.deltaY>0?-1:1);if(Y===$)return;const Q=E.getBoundingClientRect();X(Y,p.clientX-Q.left,p.clientY-Q.top,h.MIN_SCALE_PERCENT)}function le(p){const E=s.value;if(!E)return;const $=Math.round((n.scale||1)*100),Y=h.nextWheelScale($,p);X(Y,E.clientWidth/2,E.clientHeight/2,h.MIN_SCALE_PERCENT)}function ie(p){const E=s.value;if(!E)return;const $=E.querySelector(".hiprint-printPaper"),Y=$?.style.transition??"";$&&($.style.transition="none"),X(p,E.clientWidth/2,E.clientHeight/2,h.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{$&&($.style.transition=Y)})}function ue(p){p.button!==2&&S(p.target)&&(l("clear-selection"),B={x:p.clientX,y:p.clientY},b.visible=!0,b.x=p.clientX,b.y=p.clientY,b.w=0,b.h=0,window.addEventListener("mousemove",c),window.addEventListener("mouseup",N))}function J(){if(b.w<3||b.h<3)return[];const p=s.value?.querySelector(".hiprint-printPaper");if(!p)return[];const E=p.getBoundingClientRect(),$=n.scale||1,Y=b.x<B.x,Q=[];for(const oe of n.elements){if(oe.options.visible===!1||oe.options.locked)continue;const me=E.left+oe.options.left*Xe*$,P=E.top+oe.options.top*Xe*$,I=me+oe.options.width*Xe*$,O=P+oe.options.height*Xe*$,_=me<b.x+b.w&&I>b.x&&P<b.y+b.h&&O>b.y,q=me>=b.x&&I<=b.x+b.w&&P>=b.y&&O<=b.y+b.h;(Y?q:_)&&Q.push(oe.id)}return Q}function c(p){const E=p.clientX-B.x,$=p.clientY-B.y;b.x=E>=0?B.x:p.clientX,b.y=$>=0?B.y:p.clientY,b.w=Math.abs(E),b.h=Math.abs($),l("preview",J())}function N(){window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",N);const p=J();l("preview",p),p.length>0?l("commit-preview"):l("clear-selection"),l("preview",[]),b.visible=!1}const W=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),he=e.ref(null);function pe(p,E){!E&&!S(p.target)||(W.targetId=E??null,W.visible=!0,W.x=p.clientX,W.y=p.clientY,W.flipX=0,W.flipY=0,e.nextTick(()=>{const $=he.value;if(!$)return;const Y=$.getBoundingClientRect(),Q=4;p.clientX+Y.width+Q>window.innerWidth&&(W.flipX=-Y.width),p.clientY+Y.height+Q>window.innerHeight&&(W.flipY=-Y.height)}),window.removeEventListener("mousedown",ce),setTimeout(()=>{window.addEventListener("mousedown",ce,{once:!0})},0))}function ce(){W.visible=!1,window.removeEventListener("mousedown",ce)}function ve(){W.visible=!1,n.hasClipboard&&l("paste")}function z(){W.visible=!1,l("select-all")}function V(){W.visible=!1,l("clear-selection")}function w(p,E){W.visible=!1,p==="copy"?l("copy"):p==="cut"?l("cut"):p==="paste"?l("paste"):p==="delete"?l("delete"):p==="move-layer"?l("move-layer",E):p==="group"?l("group"):p==="ungroup"&&n.selectedElementHasGroup&&l("ungroup")}e.onMounted(()=>{e.nextTick(y),s.value&&typeof ResizeObserver<"u"&&(C=new ResizeObserver(y),C.observe(s.value))}),e.watch(()=>n.scale,f),e.watch([a,r],()=>e.nextTick(y));function F(){const p=s.value;if(!p)return;let E=0,$=0,Y=0;const Q=performance.now()+800,oe=()=>{const{scrollWidth:me,scrollHeight:P}=p;if(me===$&&P===Y?E++:E=0,$=me,Y=P,E>=2||performance.now()>Q){const I=p.scrollWidth,O=p.scrollHeight,_=p.clientWidth,q=p.clientHeight;p.scrollLeft=Math.max(0,(I-_)/2),p.scrollTop=Math.max(0,(O-q)/2);return}requestAnimationFrame(oe)};requestAnimationFrame(oe)}return i({centerScroll:F,fitToWindow:ie,zoomByStep:le}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",N),C?.disconnect(),cancelAnimationFrame(v)}),(p,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:s,class:"canvas-area",onDragover:E[24]||(E[24]=e.withModifiers(()=>{},["prevent"])),onDrop:K,onMousedown:ue,onMousemove:x,onMouseleave:T,onWheel:ee,onScroll:R,onContextmenu:e.withModifiers(pe,["prevent"])},[e.createElementVNode("div",fl,[e.createVNode(pl,{"template-data":o.templateData,"runtime-elements":o.elements,"design-mode":!0,"print-data":[],scale:o.scale,"show-grid":o.showGrid,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,guides:o.guides,onSelect:d,onGuideMove:E[0]||(E[0]=($,Y)=>p.$emit("guide-move",$,Y)),onGuideRemove:E[1]||(E[1]=$=>p.$emit("guide-remove",$)),onDragStart:E[2]||(E[2]=$=>p.$emit("drag-start")),onDragStop:E[3]||(E[3]=$=>p.$emit("drag-stop")),onDblclickElement:E[4]||(E[4]=$=>p.$emit("dblclick-element",$)),onDblclickCell:E[5]||(E[5]=($,Y,Q)=>p.$emit("dblclick-cell",$,Y,Q)),onContextmenu:E[6]||(E[6]=($,Y)=>pe(Y,$)),onZoneHeightChange:E[7]||(E[7]=($,Y)=>p.$emit("zone-height-change",$,Y)),onZoneHeightCommit:E[8]||(E[8]=$=>p.$emit("zone-height-commit",$)),onCloneElement:E[9]||(E[9]=($,Y)=>p.$emit("clone-element",$,Y))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"]),o.overlayVisible&&o.screenshotUrl?(e.openBlock(),e.createElementBlock("div",gl,[e.createElementVNode("img",{src:o.screenshotUrl,class:"overlay-image",style:e.normalizeStyle({opacity:o.overlayOpacity??.5})},null,12,hl)])):e.createCommentVNode("",!0)]),o.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(k.value)},[E[25]||(E[25]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Vt,{orientation:"horizontal","viewport-px":u.viewW,"origin-px":u.originX,"paper-length-m-m":a.value,scale:u.paperScale,"cursor-px":m.x,onAddGuide:E[10]||(E[10]=($,Y)=>l("add-guide",$,Y)),onGuideDragging:E[11]||(E[11]=$=>j("vertical",$))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Vt,{orientation:"vertical","viewport-px":u.viewH,"origin-px":u.originY,"paper-length-m-m":r.value,scale:u.paperScale,"cursor-px":m.y,onAddGuide:E[12]||(E[12]=($,Y)=>l("add-guide",$,Y)),onGuideDragging:E[13]||(E[13]=$=>j("horizontal",$))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${M.value.type}`]),style:e.normalizeStyle(ne.value)},null,6)):e.createCommentVNode("",!0),b.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:b.x+"px",top:b.y+"px",width:b.w+"px",height:b.h+"px"})},null,4)):e.createCommentVNode("",!0),W.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:he,class:"context-menu",style:e.normalizeStyle({left:W.x+W.flipX+"px",top:W.y+W.flipY+"px"})},[W.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:E[14]||(E[14]=$=>w("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[15]||(E[15]=$=>w("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:E[16]||(E[16]=$=>w("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:E[17]||(E[17]=$=>w("delete"))},"删除"),E[26]||(E[26]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:E[18]||(E[18]=$=>w("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[19]||(E[19]=$=>w("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[20]||(E[20]=$=>w("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[21]||(E[21]=$=>w("move-layer","bottom"))},"置底"),E[27]||(E[27]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:E[22]||(E[22]=$=>w("group"))},"编组 Ctrl+G"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.selectedElementHasGroup}]),onClick:E[23]||(E[23]=$=>w("ungroup"))},"取消编组 Ctrl+Shift+G",2)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:ve},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:z},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:V},"取消选择")],64))],4)):e.createCommentVNode("",!0)],544))}}),El=re(bl,[["__scopeId","data-v-b3acf7d7"]]),yl={class:"property-search"},kl=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(o,{emit:i}){const t=e.ref(""),n=i;function l(){n("search",t.value)}return(d,s)=>(e.openBlock(),e.createElementBlock("div",yl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":s[0]||(s[0]=a=>t.value=a),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:l},null,544),[[e.vModelText,t.value]])]))}}),Vl=re(kl,[["__scopeId","data-v-10ab6c84"]]),Nl={class:"group-icon"},wl={class:"group-title"},Cl={class:"expand-icon"},Sl={class:"group-content"},Bl=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(o){const i=o,t=e.ref(i.defaultExpanded??!0),l={Document:"≡",Brush:"◧",Setting:"⚙"}[i.icon]||"•";function d(){t.value=!t.value,s()}function s(){const r=`property-group-${i.groupKey}`;try{localStorage.setItem(r,String(t.value))}catch{}}function a(){const r=`property-group-${i.groupKey}`;try{const u=localStorage.getItem(r);u!==null&&(t.value=u==="true")}catch{}}return e.onMounted(()=>{a()}),(r,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":t.value}])},[e.createElementVNode("div",{class:"group-header",onClick:d},[e.createElementVNode("span",Nl,e.toDisplayString(e.unref(l)),1),e.createElementVNode("span",wl,e.toDisplayString(o.title),1),e.createElementVNode("span",Cl,e.toDisplayString(t.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",Sl,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,t.value]])],2))}}),Ce=re(Bl,[["__scopeId","data-v-2ba57031"]]),xl={class:"pd-stepper"},$l=["disabled"],Tl=["value","placeholder","min","max","step"],Dl=["disabled"],Ml=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,l=e.computed(()=>{const C=String(t.step),v=C.indexOf(".");return v===-1?0:C.length-v-1});function d(C){return Number.isFinite(C)?Number(C.toFixed(l.value)):0}const s=e.computed(()=>{const C=t.modelValue;if(!(C==null||!Number.isFinite(C)))return d(C)}),a=e.ref(s.value===void 0?"":String(s.value));e.watch(s,C=>{a.value=C===void 0?"":String(C)});const r=e.computed(()=>s.value!==void 0?s.value:t.min!==void 0?t.min:0),u=e.computed(()=>t.min!==void 0&&r.value<=t.min),m=e.computed(()=>t.max!==void 0&&r.value>=t.max);function g(C){let v=d(C);return t.min!==void 0&&v<t.min&&(v=t.min),t.max!==void 0&&v>t.max&&(v=t.max),v}function k(C){if(C<0&&u.value||C>0&&m.value)return;const v=g(r.value+C*t.step);a.value=String(v),n("update:modelValue",v)}function y(C){a.value=C.target.value}function R(){const C=a.value.trim();if(C===""){s.value!==void 0&&(a.value=String(s.value));return}const v=Number(C);if(!Number.isFinite(v)){a.value=s.value===void 0?"":String(s.value);return}const f=g(v);a.value=String(f),f!==s.value&&n("update:modelValue",f)}return(C,v)=>(e.openBlock(),e.createElementBlock("div",xl,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:u.value,title:"减小","aria-label":"减小",onClick:v[0]||(v[0]=f=>k(-1))},"−",8,$l),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:a.value,placeholder:o.placeholder,min:o.min,max:o.max,step:o.step,onInput:y,onChange:R,onBlur:R,onKeydown:v[1]||(v[1]=e.withKeys(e.withModifiers(f=>f.target.blur(),["prevent"]),["enter"]))},null,40,Tl),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:m.value,title:"增大","aria-label":"增大",onClick:v[2]||(v[2]=f=>k(1))},"+",8,Dl)]))}}),se=re(Ml,[["__scopeId","data-v-9722a7cf"]]),Pl={class:"position-grid"},zl={class:"pd-field"},Ll={class:"pd-field"},Rl={class:"pd-field"},Al={class:"pd-field"},Il=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,l)=>(e.openBlock(),e.createBlock(Ce,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:l[4]||(l[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Pl,[e.withDirectives(e.createElementVNode("div",zl,[l[5]||(l[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(se,{modelValue:o.element.options.left,"onUpdate:modelValue":l[0]||(l[0]=d=>o.element.options.left=d),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-left")]]),e.withDirectives(e.createElementVNode("div",Ll,[l[6]||(l[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(se,{modelValue:o.element.options.top,"onUpdate:modelValue":l[1]||(l[1]=d=>o.element.options.top=d),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-top")]]),e.withDirectives(e.createElementVNode("div",Rl,[l[7]||(l[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(se,{modelValue:o.element.options.width,"onUpdate:modelValue":l[2]||(l[2]=d=>o.element.options.width=d),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-width")]]),e.withDirectives(e.createElementVNode("div",Al,[l[8]||(l[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(se,{modelValue:o.element.options.height,"onUpdate:modelValue":l[3]||(l[3]=d=>o.element.options.height=d),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-height")]])])],32)]),_:1}))}}),Fl=re(Il,[["__scopeId","data-v-bc364679"]]),Ul=["aria-expanded","title"],Hl={class:"picker-preview"},Ol={class:"picker-heading"},Wl=["disabled"],Gl={class:"preset-color-grid"},Kl=["title","aria-label","onClick"],ql=e.defineComponent({__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(!1),d=e.ref(),s=e.ref(),a=e.ref(),r=e.ref({}),u=e.ref(0),m=e.ref(0),g=e.ref(0),k=e.ref("#000000"),y=e.ref(!1),R=e.computed(()=>t.modelValue||"#000000"),C=e.computed(()=>t.modelValue?{background:t.modelValue}:{background:"transparent"}),v=e.computed(()=>W(pe(u.value,m.value,g.value))),f=e.computed({get:()=>Math.round(u.value),set:z=>K(ce(z),m.value,g.value)});e.watch(()=>t.modelValue,z=>{if(!z){k.value="";return}H(z)},{immediate:!0});function M(z){k.value=z.toUpperCase(),H(z),n("update:modelValue",z)}function j(){t.clearable&&n("update:modelValue","")}function ne(z){const w=z.target.value.trim();if(!w){t.clearable&&n("update:modelValue","");return}c(w)&&(H(w),n("update:modelValue",N(w)))}function H(z){const V=c(z);if(!V)return;const w=he(V.r,V.g,V.b);u.value=w.h,m.value=w.s,g.value=w.v,k.value=N(z).toUpperCase()}function K(z,V,w){u.value=ce(z),m.value=ve(V),g.value=ve(w),k.value=v.value.toUpperCase(),n("update:modelValue",v.value)}function b(z){z.currentTarget.setPointerCapture(z.pointerId),y.value=!0,x(z)}function B(z){y.value&&x(z)}function S(z){y.value=!1;const V=z.currentTarget;V.hasPointerCapture(z.pointerId)&&V.releasePointerCapture(z.pointerId)}function x(z){const V=a.value;if(!V)return;const w=V.getBoundingClientRect(),F=ve((z.clientX-w.left)/w.width),p=ve(1-(z.clientY-w.top)/w.height);K(u.value,F,p)}function T(z){const V=z.shiftKey?.1:.02;let w=!0;z.key==="ArrowLeft"?K(u.value,m.value-V,g.value):z.key==="ArrowRight"?K(u.value,m.value+V,g.value):z.key==="ArrowUp"?K(u.value,m.value,g.value+V):z.key==="ArrowDown"?K(u.value,m.value,g.value-V):w=!1,w&&z.preventDefault()}function X(){l.value?le():ee()}async function ee(){const z=d.value;if(!z)return;t.modelValue&&H(R.value),l.value=!0,await e.nextTick();const V=z.getBoundingClientRect(),w=190,F=s.value?.offsetHeight??216,p=8,E=Math.min(V.left,window.innerWidth-w-p),$=V.bottom+6,Y=$+F>window.innerHeight-p?Math.max(p,V.top-F-6):$;r.value={left:`${Math.max(p,E)}px`,top:`${Y}px`}}function le(){l.value=!1}function ie(z){const V=z.target;d.value?.contains(V)||s.value?.contains(V)||le()}function ue(){l.value&&le()}function J(z){z.key==="Escape"&&l.value&&le()}function c(z){const V=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(z.trim());if(!V)return null;const w=V[1],F=w.length===3?w.split("").map(p=>p+p).join(""):w;return{r:Number.parseInt(F.slice(0,2),16),g:Number.parseInt(F.slice(2,4),16),b:Number.parseInt(F.slice(4,6),16)}}function N(z){const V=c(z);return V?W(V):"#000000"}function W({r:z,g:V,b:w}){return`#${[z,V,w].map(F=>Math.round(ve(F/255)*255).toString(16).padStart(2,"0")).join("")}`}function he(z,V,w){const F=z/255,p=V/255,E=w/255,$=Math.max(F,p,E),Y=Math.min(F,p,E),Q=$-Y;let oe=0;return Q!==0&&($===F?oe=(p-E)/Q%6:$===p?oe=(E-F)/Q+2:oe=(F-p)/Q+4,oe*=60,oe<0&&(oe+=360)),{h:oe,s:$===0?0:Q/$,v:$}}function pe(z,V,w){const F=w*V,p=(z%360+360)%360/60,E=F*(1-Math.abs(p%2-1)),[$,Y,Q]=p<1?[F,E,0]:p<2?[E,F,0]:p<3?[0,F,E]:p<4?[0,E,F]:p<5?[E,0,F]:[F,0,E],oe=w-F;return{r:($+oe)*255,g:(Y+oe)*255,b:(Q+oe)*255}}function ce(z){return((Number.isFinite(z)?z:0)%360+360)%360}function ve(z){return Math.min(1,Math.max(0,Number.isFinite(z)?z:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",ie,!0),window.addEventListener("scroll",ue,!0),window.addEventListener("resize",ue),document.addEventListener("keydown",J)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",ie,!0),window.removeEventListener("scroll",ue,!0),window.removeEventListener("resize",ue),document.removeEventListener("keydown",J)}),(z,V)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",{ref_key:"triggerRef",ref:d,type:"button",class:"preset-color-trigger","aria-expanded":l.value,"aria-haspopup":"dialog",title:o.modelValue||"自动",onClick:X},[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(C.value)},null,4)],8,Ul),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[l.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:s,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(r.value),onPointerdown:V[2]||(V[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Hl,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!o.modelValue}]),style:e.normalizeStyle(o.modelValue?{background:v.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[0]||(V[0]=w=>k.value=w),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:ne},null,544),[[e.vModelText,k.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:a,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(u.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:b,onPointermove:B,onPointerup:S,onPointercancel:S,onKeydown:T},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${m.value*100}%`,top:`${(1-g.value)*100}%`,background:v.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[1]||(V[1]=w=>f.value=w),class:"picker-hue",type:"range",min:"0",max:"360",step:"1","aria-label":"色相"},null,512),[[e.vModelText,f.value,void 0,{number:!0}]]),e.createElementVNode("div",Ol,[V[4]||(V[4]=e.createElementVNode("span",null,"常用颜色",-1)),o.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!o.modelValue,title:"清除选中的颜色",onClick:j},[...V[3]||(V[3]=[e.createElementVNode("svg",{viewBox:"0 0 16 16",width:"12",height:"12","aria-hidden":"true"},[e.createElementVNode("path",{d:"M3 3l10 10M13 3L3 13",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round",fill:"none"})],-1),e.createTextVNode(" 清除 ",-1)])],8,Wl)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Gl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.PRESET_COLORS),w=>(e.openBlock(),e.createElementBlock("button",{key:w,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!o.modelValue&&w.toLowerCase()===o.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:w}),title:w,"aria-label":w,onClick:F=>M(w)},null,14,Kl))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),we=re(ql,[["__scopeId","data-v-12290e7e"]]),Yl={class:"font-select"},jl=["placeholder","aria-expanded","aria-activedescendant","onKeydown"],Xl=["id","aria-selected","onMousedown"],Zl=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"}},emits:["update:model-value"],setup(o,{emit:i}){const t=o,n=i,l=jt(),d=`font-select-list-${e.useId()}`,s=e.ref(null),a=e.ref(R(t.modelValue)),r=e.ref(""),u=e.ref(!1),m=e.ref(-1),g=e.computed(()=>{const S=t.modelValue?.trim();return S?ht(l.value,S)?"":S:""}),k=e.computed(()=>{const S=(t.modelValue??"").trim(),x=(ee,le,ie,ue)=>({kind:ee,key:le,label:ie,value:ue,selected:(ue??"")===S}),T=r.value.trim();if(!T){const ee=[x("clear","__clear__",t.placeholder)];g.value&&ee.push(x("unknown","__unknown__",`${g.value}(未知)`,g.value));for(const le of l.value)ee.push(x("font",le.family,bt(le),le.family));return ee}const X=Xt(l.value,T).map(ee=>x("font",ee.family,bt(ee),ee.family));if(!X.length){const ee=y(T);X.push(x("free","__free__",`使用「${ee}」`,ee))}return X});function y(S){const x=He(S);return l.value.find(X=>X.label&&He(X.label)===x)?.family??S}function R(S){const x=S?.trim();return x?ht(l.value,x)?.label??x:""}const C=e.computed(()=>u.value&&m.value>=0?`${d}-${m.value}`:void 0);function v(){const S=(t.modelValue??"").trim();return k.value.findIndex(x=>(x.value??"")===S)}function f(){u.value||(u.value=!0,r.value="",m.value=v())}function M(){u.value=!0}function j(){u.value=!0,r.value=a.value,m.value=k.value.length?0:-1}function ne(S){if(!u.value){f();return}const x=k.value.length-1;x<0||(m.value=Math.min(Math.max(m.value+S,0),x),H())}function H(){e.nextTick(()=>{s.value?.children[m.value]?.scrollIntoView?.({block:"nearest"})})}function K(){if(!u.value)return;const S=k.value[m.value];if(S){b(S);return}const x=r.value.trim();if(x){const T=y(x);b({value:T})}}function b(S){a.value=R(S.value),r.value="",u.value=!1,m.value=-1,n("update:model-value",S.value)}function B(){u.value=!1,r.value="",m.value=-1,a.value=R(t.modelValue)}return e.watch(()=>t.modelValue,S=>{a.value=R(S)}),(S,x)=>(e.openBlock(),e.createElementBlock("div",Yl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":x[0]||(x[0]=T=>a.value=T),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:o.placeholder,"aria-expanded":u.value,"aria-controls":d,"aria-activedescendant":C.value,onFocus:f,onClick:M,onInput:j,onKeydown:[x[1]||(x[1]=e.withKeys(e.withModifiers(T=>ne(1),["prevent"]),["down"])),x[2]||(x[2]=e.withKeys(e.withModifiers(T=>ne(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(K,["prevent"]),["enter"]),e.withKeys(e.withModifiers(B,["prevent"]),["esc"])],onBlur:B},null,40,jl),[[e.vModelText,a.value]]),u.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:d,ref_key:"listRef",ref:s,class:"font-select-list",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(T,X)=>(e.openBlock(),e.createElementBlock("li",{id:`${d}-${X}`,key:T.key,class:e.normalizeClass(["font-select-option",{"is-active":X===m.value,"is-muted":T.kind==="unknown"||T.kind==="free"}]),role:"option","aria-selected":T.selected,onMousedown:e.withModifiers(ee=>b(T),["prevent"])},e.toDisplayString(T.label),43,Xl))),128))],512)):e.createCommentVNode("",!0)]))}}),Dt=re(Zl,[["__scopeId","data-v-c559b167"]]),Jl={class:"pd-field"},Ql={class:"pd-field"},_l={class:"pd-field"},ea={class:"pd-field"},ta={class:"pd-radio-group",role:"radiogroup"},oa={class:"pd-radio"},na={class:"pd-radio"},la={class:"pd-radio"},aa={class:"pd-field"},ia={class:"pd-radio-group",role:"radiogroup"},sa={class:"pd-radio"},ra={class:"pd-radio"},da={class:"pd-radio"},ca={class:"color-row"},ua={class:"pd-field"},ma={class:"pd-field"},pa={class:"pd-field"},va={class:"pd-field"},fa={class:"pd-field"},ga=["value"],ha={key:0,class:"pd-field"},ba={class:"pd-field"},Ea=["checked"],ya={key:1,class:"pd-empty"},ka=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(s){return i.searching?i.matchedKeys?.has(s)??!0:!0}const n=e.computed(()=>i.element.printElementType.type==="table"),l=e.computed(()=>h.resolveElementTextFit(i.element.printElementType.type||"text",i.element.options));function d(s){i.element.options.textFit=s.target.value}return(s,a)=>(e.openBlock(),e.createBlock(Ce,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:a[15]||(a[15]=e.withModifiers(()=>{},["prevent"]))},[o.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Jl,[a[16]||(a[16]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(Dt,{modelValue:o.element.options.fontFamily,"onUpdate:modelValue":a[0]||(a[0]=r=>o.element.options.fontFamily=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",Ql,[a[17]||(a[17]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(se,{modelValue:o.element.options.fontSize,"onUpdate:modelValue":a[1]||(a[1]=r=>o.element.options.fontSize=r),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",_l,[a[19]||(a[19]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":a[2]||(a[2]=r=>o.element.options.fontWeight=r),style:{width:"100%"}},[...a[18]||(a[18]=[e.createElementVNode("option",{value:"normal"},"正常",-1),e.createElementVNode("option",{value:"bold"},"粗体",-1),e.createElementVNode("option",{value:"bolder"},"更粗",-1),e.createElementVNode("option",{value:"lighter"},"细体",-1)])],512),[[e.vModelSelect,o.element.options.fontWeight]])],512),[[e.vShow,t("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",ea,[a[23]||(a[23]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",ta,[e.createElementVNode("label",oa,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[3]||(a[3]=r=>o.element.options.textAlign=r),value:"left"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),a[20]||(a[20]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",na,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[4]||(a[4]=r=>o.element.options.textAlign=r),value:"center"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),a[21]||(a[21]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",la,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[5]||(a[5]=r=>o.element.options.textAlign=r),value:"right"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),a[22]||(a[22]=e.createElementVNode("span",null,"右",-1))])])],512),[[e.vShow,t("ap-align")]]),e.withDirectives(e.createElementVNode("div",aa,[a[27]||(a[27]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",ia,[e.createElementVNode("label",sa,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[6]||(a[6]=r=>o.element.options.verticalAlign=r),value:"top"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),a[24]||(a[24]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",ra,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[7]||(a[7]=r=>o.element.options.verticalAlign=r),value:"middle"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),a[25]||(a[25]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",da,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":a[8]||(a[8]=r=>o.element.options.verticalAlign=r),value:"bottom"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),a[26]||(a[26]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,t("ap-vertical-align")]]),e.createElementVNode("div",ca,[e.withDirectives(e.createElementVNode("div",ua,[a[28]||(a[28]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(we,{modelValue:o.element.options.color,"onUpdate:modelValue":a[9]||(a[9]=r=>o.element.options.color=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-color")]]),e.withDirectives(e.createElementVNode("div",ma,[a[29]||(a[29]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":a[10]||(a[10]=r=>o.element.options.backgroundColor=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",pa,[a[30]||(a[30]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(se,{modelValue:o.element.options.lineHeight,"onUpdate:modelValue":a[11]||(a[11]=r=>o.element.options.lineHeight=r),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,t("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",va,[a[31]||(a[31]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(se,{modelValue:o.element.options.letterSpacing,"onUpdate:modelValue":a[12]||(a[12]=r=>o.element.options.letterSpacing=r),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,t("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",fa,[a[33]||(a[33]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:l.value,style:{width:"100%"},onChange:d},[...a[32]||(a[32]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,ga)],512),[[e.vShow,t("ap-text-fit")]]),l.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",ha,[a[34]||(a[34]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(se,{"model-value":o.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":a[13]||(a[13]=r=>o.element.options.shrinkMinFontSize=r??void 0)},null,8,["model-value"])],512)),[[e.vShow,t("ap-shrink-min")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",ba,[a[35]||(a[35]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:o.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:a[14]||(a[14]=r=>o.element.options.wordWrap=r.target.checked?void 0:!1)},null,40,Ea)],512),[[e.vShow,t("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),!o.isTextType&&!n.value?(e.openBlock(),e.createElementBlock("p",ya,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),Va=re(ka,[["__scopeId","data-v-ec9e5cb7"]]),Na={class:"pd-field"},wa=["value"],Ca={class:"pd-field"},Sa=["value"],Ba={class:"pd-hint"},xa={class:"pd-field"},$a={class:"pd-field"},Ta=["checked"],Da={class:"pd-field"},Ma={key:1,class:"pd-field"},Pa=["value"],za={key:2,class:"pd-hint"},La={key:3,class:"pd-field"},Ra=["value"],Aa={class:"pd-field"},Ia={class:"pd-field"},Fa=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(o,{emit:i}){const t=o,n=i,l=e.computed(()=>t.element.printElementType.type==="barcode"),d=e.computed(()=>t.element.printElementType.type==="qrcode"),s=e.computed(()=>(t.element.options.barcodeType||"CODE128").toUpperCase()),a=e.computed(()=>t.element.options.printerDpi?String(t.element.options.printerDpi):""),r=e.computed(()=>!!t.element.options.printerDpi),u=e.computed(()=>l.value&&r.value);function m(C){const v=Number(C.target.value);t.element.options.printerDpi=v>0?v:void 0,R()}function g(C){const v=C.target.value;t.element.options.barcodeType=v==="CODE128"?void 0:v,R()}function k(C){t.element.options.fit=C.target.value||void 0,R()}function y(C){return t.searching?t.matchedKeys?.has(C)??!0:!0}function R(){n("change")}return(C,v)=>(e.openBlock(),e.createBlock(Ce,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:v[6]||(v[6]=e.withModifiers(()=>{},["prevent"]))},[l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Na,[v[8]||(v[8]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:s.value,onChange:g},[...v[7]||(v[7]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,wa)],512),[[e.vShow,y("cd-type")]]),e.withDirectives(e.createElementVNode("div",Ca,[v[10]||(v[10]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:a.value,onChange:m},[...v[9]||(v[9]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,Sa)],512),[[e.vShow,y("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",Ba,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,y("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",xa,[v[11]||(v[11]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(se,{"model-value":o.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":v[0]||(v[0]=f=>{o.element.options.barWidth=f,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(u.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,y("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",$a,[v[12]||(v[12]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:o.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:v[1]||(v[1]=f=>{o.element.options.hideTitle=f.target.checked?void 0:!0,R()})},null,40,Ta)],512),[[e.vShow,y("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",Da,[v[13]||(v[13]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(se,{"model-value":o.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":v[2]||(v[2]=f=>{o.element.options.fontSize=f??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-font-size")]])],64)):d.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ma,[v[15]||(v[15]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(o.element.options.qrCodeLevel??"M"),onChange:v[3]||(v[3]=f=>{o.element.options.qrCodeLevel=f.target.value,R()})},[...v[14]||(v[14]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Pa)],512)),[[e.vShow,y("cd-ec-level")]]):e.createCommentVNode("",!0),v[20]||(v[20]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),l.value?(e.openBlock(),e.createElementBlock("p",za,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),l.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",La,[v[17]||(v[17]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:o.element.options.fit||"contain",onChange:k},[...v[16]||(v[16]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,Ra)],512)),[[e.vShow,y("cd-fit")]]),e.withDirectives(e.createElementVNode("div",Aa,[v[18]||(v[18]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(se,{"model-value":o.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[4]||(v[4]=f=>{o.element.options.maxWidth=f??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",Ia,[v[19]||(v[19]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(se,{"model-value":o.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[5]||(v[5]=f=>{o.element.options.maxHeight=f??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-max-height")]])],32)]),_:1}))}}),Ua={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},Ha={class:"pd-dialog-header"},Oa={class:"expression-editor"},Wa={class:"ee-nav"},Ga={class:"ee-nav-tabs"},Ka={class:"ee-content"},qa={class:"ee-content-search"},Ya=["placeholder"],ja={class:"ee-content-list"},Xa={class:"ee-field-group-icon"},Za=["onDblclick"],Ja={class:"ee-field-info"},Qa={class:"ee-item-label"},_a={class:"ee-item-key"},ei={key:0,class:"pd-empty"},ti=["onDblclick"],oi={class:"ee-field-info"},ni={class:"ee-item-label"},li={class:"ee-item-key"},ai={class:"ee-func-group"},ii=["onDblclick"],si={class:"ee-field-info"},ri={class:"ee-item-label"},di={class:"ee-item-key"},ci={class:"ee-func-group"},ui=["onDblclick"],mi={class:"ee-field-info"},pi={class:"ee-item-label"},vi={class:"ee-item-key"},fi={class:"ee-editor"},gi={class:"ee-editor-section"},hi={class:"ee-editor-section"},bi={class:"pd-dialog-footer"},Ei=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(o,{emit:i}){const t=o,n=i,l=e.computed({get:()=>t.modelValue,set:B=>n("update:modelValue",B)}),d=e.ref("field"),s=e.computed(()=>{switch(d.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),a=e.ref(""),r=e.computed(()=>h.filterGroups(h.groupFields(t.fields??[]),a.value));e.watch(l,B=>{B&&(v.value=t.expression||"")});function u(B){const{insideParens:S}=k();K(S?B.fieldKey:`{${B.fieldKey}}`)}function m(B){const{insideParens:S}=k();K(S?B.template.replace(/^\{|\}$/g,""):B.template)}function g(B){const{insideBlock:S}=k(),x=S?B.template:`{${B.template}}`,T=x.indexOf("(")+1;K(x,T)}function k(){const S=f.value?.selectionStart??v.value.length,x=v.value.substring(0,S);let T=!1;const X=x.lastIndexOf("{");X!==-1&&!x.slice(X+1).includes("}")&&(T=!0);let ee=!1;const le=x.lastIndexOf("(");return le!==-1&&!x.slice(le+1).includes(")")&&(ee=!0),{insideBlock:T,insideParens:ee}}const y=e.computed(()=>{if(!a.value.trim())return ne;const B=a.value.trim().toLowerCase();return ne.filter(S=>S.label.toLowerCase().includes(B)||S.name.toLowerCase().includes(B))}),R=e.computed(()=>{if(!a.value.trim())return M;const B=a.value.trim().toLowerCase();return M.filter(S=>S.label.toLowerCase().includes(B)||S.name.toLowerCase().includes(B))}),C=e.computed(()=>{if(!a.value.trim())return j;const B=a.value.trim().toLowerCase();return j.filter(S=>S.label.toLowerCase().includes(B)||S.name.toLowerCase().includes(B))}),v=e.ref(t.expression||""),f=e.ref(null);e.watch(()=>t.expression,B=>{v.value=B||""});const M=[{name:"SUM",label:"求和",template:"SUM()"},{name:"AVG",label:"平均值",template:"AVG()"},{name:"COUNT",label:"计数",template:"COUNT()"},{name:"MIN",label:"最小值",template:"MIN()"},{name:"MAX",label:"最大值",template:"MAX()"}],j=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],ne=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],H=e.computed(()=>{if(!v.value.trim())return"(输入表达式后预览)";try{const B={...h.DEFAULT_DEMO_DATA,...ge.resolveSystemVariables()},S=h.evaluateTemplate(v.value,B);return S==null?"(无法计算)":String(S)}catch{return"(表达式错误)"}});function K(B,S=B.length){const x=f.value;if(!x){v.value+=B;return}const T=x.selectionStart,X=x.selectionEnd,ee=v.value.substring(0,T),le=v.value.substring(X);v.value=ee+B+le;const ie=T+S;e.nextTick(()=>{x.focus(),x.selectionStart=x.selectionEnd=ie})}function b(){n("update:expression",v.value),l.value=!1}return(B,S)=>l.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:S[7]||(S[7]=e.withKeys(x=>l.value=!1,["esc"]))},[e.createElementVNode("section",Ua,[e.createElementVNode("header",Ha,[S[8]||(S[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:S[0]||(S[0]=x=>l.value=!1)},"×")]),e.createElementVNode("div",Oa,[e.createElementVNode("div",Wa,[S[9]||(S[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",Ga,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="field"}]),onClick:S[1]||(S[1]=x=>d.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="variable"}]),onClick:S[2]||(S[2]=x=>d.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="function"}]),onClick:S[3]||(S[3]=x=>d.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",Ka,[e.createElementVNode("div",qa,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":S[4]||(S[4]=x=>a.value=x),placeholder:s.value},null,8,Ya),[[e.vModelText,a.value]])]),e.createElementVNode("div",ja,[d.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,x=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x.key||"_top"},[x.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":x.isList}])},[e.createElementVNode("span",Xa,e.toDisplayString(x.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(x.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.fields,T=>(e.openBlock(),e.createElementBlock("div",{key:T.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:x.key?"22px":"10px"}),onDblclick:X=>u(T)},[e.createElementVNode("div",Ja,[e.createElementVNode("span",Qa,e.toDisplayString(T.fieldLabel),1),e.createElementVNode("span",_a,e.toDisplayString(T.fieldKey),1)])],44,Za))),128))],64))),128)),r.value.length===0?(e.openBlock(),e.createElementBlock("p",ei,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),d.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(y.value,x=>(e.openBlock(),e.createElementBlock("div",{key:x.name,class:"ee-list-item",onDblclick:T=>m(x)},[e.createElementVNode("div",oi,[e.createElementVNode("span",ni,e.toDisplayString(x.label),1),e.createElementVNode("span",li,e.toDisplayString(x.template),1)])],40,ti))),128)):e.createCommentVNode("",!0),d.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",ai,[S[10]||(S[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,x=>(e.openBlock(),e.createElementBlock("div",{key:x.name,class:"ee-list-item",onDblclick:T=>g(x)},[e.createElementVNode("div",si,[e.createElementVNode("span",ri,e.toDisplayString(x.label),1),e.createElementVNode("span",di,e.toDisplayString(x.name)+"()",1)])],40,ii))),128))]),e.createElementVNode("div",ci,[S[11]||(S[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,x=>(e.openBlock(),e.createElementBlock("div",{key:x.name,class:"ee-list-item",onDblclick:T=>g(x)},[e.createElementVNode("div",mi,[e.createElementVNode("span",pi,e.toDisplayString(x.label),1),e.createElementVNode("span",vi,e.toDisplayString(x.name)+"()",1)])],40,ui))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",fi,[e.createElementVNode("div",gi,[S[12]||(S[12]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:f,"onUpdate:modelValue":S[5]||(S[5]=x=>v.value=x),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,v.value]])]),e.createElementVNode("div",hi,[S[13]||(S[13]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":H.value==="(表达式错误)"}])},e.toDisplayString(H.value),3)]),S[14]||(S[14]=e.createStaticVNode('<div class="ee-help-section" data-v-9788fc78><div class="ee-help-title" data-v-9788fc78>帮助信息</div><div class="ee-help-grid" data-v-9788fc78><div class="ee-help-card ee-help-field" data-v-9788fc78><div class="ee-help-card-title" data-v-9788fc78>输入方式</div><div class="ee-help-card-content" data-v-9788fc78> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-9788fc78> 静态数据直接输入即可,如:供应商名称<br data-v-9788fc78> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-9788fc78> 示例:{SUM(supplier.name)}<br data-v-9788fc78> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-9788fc78><div class="ee-help-card-title" data-v-9788fc78>函数使用</div><div class="ee-help-card-content" data-v-9788fc78> SUM(字段) - 求和<br data-v-9788fc78> AVG(字段) - 平均值<br data-v-9788fc78> COUNT(字段) - 计数<br data-v-9788fc78> IF(条件, 真值, 假值) - 条件判断 </div></div><div class="ee-help-card ee-help-variable" data-v-9788fc78><div class="ee-help-card-title" data-v-9788fc78>系统变量</div><div class="ee-help-card-content" data-v-9788fc78> {pageIndex} - 当前页码<br data-v-9788fc78> {totalPages} - 总页数<br data-v-9788fc78> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-9788fc78><div class="ee-help-card-title" data-v-9788fc78>示例</div><div class="ee-help-card-content" data-v-9788fc78> 静态文本:供应商名称<br data-v-9788fc78> 动态字段:{supplier.name}<br data-v-9788fc78> 函数调用:{SUM(amount)}<br data-v-9788fc78> 条件判断:{IF(amount&gt;1000, &quot;大单&quot;, &quot;小单&quot;)} </div></div></div></div>',1))])]),e.createElementVNode("footer",bi,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:S[6]||(S[6]=x=>l.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:b},"确定")])])],32)):e.createCommentVNode("",!0)}}),Je=re(Ei,[["__scopeId","data-v-9788fc78"]]),yi={class:"pd-field"},ki={class:"pd-label"},Vi=["value","placeholder"],Ni=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=i,n=e.ref(!1);function l(){n.value=!0}return(d,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",yi,[e.createElementVNode("span",ki,e.toDisplayString(o.descriptor.label),1),e.createElementVNode("input",{value:o.modelValue,class:"pd-input",placeholder:o.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:s[0]||(s[0]=a=>t("update:modelValue",a.target.value)),onDblclick:l},null,40,Vi)]),e.createVNode(Je,{modelValue:n.value,"onUpdate:modelValue":s[1]||(s[1]=a=>n.value=a),fields:o.fields,expression:o.modelValue,"onUpdate:expression":s[2]||(s[2]=a=>t("update:modelValue",a))},null,8,["modelValue","fields","expression"])],64))}}),wi=re(Ni,[["__scopeId","data-v-40a99329"]]),Ci={class:"pd-field"},Si=["value"],Bi=["value"],xi={class:"pd-field"},$i={class:"pd-field"},Ti={class:"pd-field"},Di={class:"pd-field"},Mi={style:{width:"60px"}},Pi=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(o){const i=o,t=e.inject(Oe,null),n=e.computed(()=>i.fields.filter(s=>s.fieldType==="list").map(s=>({label:s.fieldLabel,value:s.fieldKey})));function l(s){i.element.options.dataSource=s||void 0,t?.recordHistory()}function d(s,a){if(a===void 0)return;const r=i.element.options.tableColWidths,u=t?.maxTableWidth.value??1/0,m=r.reduce((g,k,y)=>y===s?g:g+k,0);if(m+a>u){const g=Math.max(5,Math.round((u-m)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${u}mm,列${s+1} 已调整为 ${g}mm`),r[s]=g}else r[s]=a;h.syncTableElementSize(i.element.options),t?.recordHistory()}return(s,a)=>(e.openBlock(),e.createBlock(Ce,{title:"表格设置",icon:"Grid","default-expanded":"","group-key":"table-settings"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:a[4]||(a[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Ci,[a[5]||(a[5]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:o.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:a[0]||(a[0]=r=>l(r.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>(e.openBlock(),e.createElementBlock("option",{key:r.value,value:r.value},e.toDisplayString(r.label),9,Bi))),128))],40,Si)]),e.createElementVNode("div",xi,[a[6]||(a[6]=e.createElementVNode("span",{class:"pd-label"},"默认字号 (pt)",-1)),e.createVNode(se,{modelValue:o.element.options.tableDefaultFontSize,"onUpdate:modelValue":a[1]||(a[1]=r=>o.element.options.tableDefaultFontSize=r),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",$i,[a[7]||(a[7]=e.createElementVNode("span",{class:"pd-label"},"默认文字颜色",-1)),e.createVNode(we,{modelValue:o.element.options.tableDefaultColor,"onUpdate:modelValue":a[2]||(a[2]=r=>o.element.options.tableDefaultColor=r)},null,8,["modelValue"])]),e.createElementVNode("div",Ti,[a[8]||(a[8]=e.createElementVNode("span",{class:"pd-label"},"默认内边距 (mm)",-1)),e.createVNode(se,{modelValue:o.element.options.tableDefaultPadding,"onUpdate:modelValue":a[3]||(a[3]=r=>o.element.options.tableDefaultPadding=r),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",Di,[a[9]||(a[9]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.element.options.tableColWidths,(r,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"col-width-row"},[e.createElementVNode("span",Mi,"列"+e.toDisplayString(u+1),1),e.createVNode(se,{"model-value":r,min:5,max:200,"onUpdate:modelValue":m=>d(u,m)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),zi=re(Pi,[["__scopeId","data-v-b5fdc7ff"]]),Li={class:"border-row"},Ri={class:"pd-field"},Ai={class:"pd-field"},Ii={class:"pd-field"},Fi=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,l)=>(e.openBlock(),e.createBlock(Ce,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:l[3]||(l[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Li,[e.withDirectives(e.createElementVNode("div",Ri,[l[4]||(l[4]=e.createElementVNode("span",{class:"pd-label"},"边框宽度",-1)),e.createVNode(se,{modelValue:o.element.options.borderWidth,"onUpdate:modelValue":l[0]||(l[0]=d=>o.element.options.borderWidth=d),min:0,max:20,step:.25},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",Ai,[l[5]||(l[5]=e.createElementVNode("span",{class:"pd-label"},"边框颜色",-1)),e.createVNode(we,{modelValue:o.element.options.borderColor,"onUpdate:modelValue":l[1]||(l[1]=d=>o.element.options.borderColor=d)},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-color")]])]),e.withDirectives(e.createElementVNode("div",Ii,[l[6]||(l[6]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":l[2]||(l[2]=d=>o.element.options.backgroundColor=d)},null,8,["modelValue"])],512),[[e.vShow,t("bb-bg-color")]])],32)]),_:1}))}}),Ui=re(Fi,[["__scopeId","data-v-e0e6d714"]]),Hi={class:"advanced-row"},Oi={class:"pd-field"},Wi={class:"pd-field"},Gi={class:"pd-field"},Ki={class:"pd-field"},qi=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,l)=>(e.openBlock(),e.createBlock(Ce,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:l[4]||(l[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Hi,[e.withDirectives(e.createElementVNode("div",Oi,[l[5]||(l[5]=e.createElementVNode("span",{class:"pd-label"},"锁定",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":l[0]||(l[0]=d=>o.element.options.locked=d)},null,512),[[e.vModelCheckbox,o.element.options.locked]])],512),[[e.vShow,t("ad-locked")]]),e.withDirectives(e.createElementVNode("div",Wi,[l[6]||(l[6]=e.createElementVNode("span",{class:"pd-label"},"每页重复",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":l[1]||(l[1]=d=>o.element.options.fixed=d)},null,512),[[e.vModelCheckbox,o.element.options.fixed]])],512),[[e.vShow,t("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",Gi,[l[7]||(l[7]=e.createElementVNode("span",{class:"pd-label"},"层级",-1)),e.createVNode(se,{modelValue:o.element.options.zIndex,"onUpdate:modelValue":l[2]||(l[2]=d=>o.element.options.zIndex=d),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,t("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",Ki,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:l[3]||(l[3]=d=>n.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,t("ad-delete")]])],32)]),_:1}))}}),Yi=re(qi,[["__scopeId","data-v-14924be2"]]),ji={key:0,class:"pd-field"},Xi=["checked"],Zi={class:"pd-field"},Ji=["checked"],Qi={class:"pd-field"},_i=["checked"],Nt=e.defineComponent({__name:"PaginationGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="table"),n=e.computed({get:()=>i.element.options.tablePagination?.enabled??!0,set:()=>{}});function l(m){i.element.options.tablePagination={enabled:m}}const d=e.computed({get:()=>i.element.options.pagination?.pageable??!0,set:()=>{}}),s=e.computed({get:()=>i.element.options.pagination?.keepWithNext??!1,set:()=>{}});function a(m){i.element.options.pagination={pageable:m,keepWithNext:s.value}}function r(m){i.element.options.pagination={pageable:d.value,keepWithNext:m}}function u(m){return i.searching?i.matchedKeys?.has(m)??!0:!0}return(m,g)=>(e.openBlock(),e.createBlock(Ce,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:g[3]||(g[3]=e.withModifiers(()=>{},["prevent"]))},[t.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",ji,[g[4]||(g[4]=e.createElementVNode("span",{class:"pd-label"},"启用分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:n.value,onChange:g[0]||(g[0]=k=>l(k.target.checked))},null,40,Xi)],512)),[[e.vShow,u("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Zi,[g[5]||(g[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:d.value,onChange:g[1]||(g[1]=k=>a(k.target.checked))},null,40,Ji)],512),[[e.vShow,u("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",Qi,[g[6]||(g[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:s.value,onChange:g[2]||(g[2]=k=>r(k.target.checked))},null,40,_i)],512),[[e.vShow,u("pg-keep-with-next")]])],64))],32)]),_:1}))}}),es={class:"image-content-upload"},ts=["disabled"],os=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(!1),d=e.inject(dt,e.computed(()=>{})),s=e.computed(()=>t.disabled||l.value||!d.value);async function a(r){const u=r.target,m=u.files?.[0];if(m){if(!m.type.startsWith("image/")){alert("仅支持上传图片文件"),u.value="";return}if(!d.value){alert("图片上传能力未配置"),u.value="";return}l.value=!0;try{const g=await d.value(m);g?n("success",g):alert("图片上传失败")}catch(g){alert(g instanceof Error?g.message:"图片上传失败")}finally{l.value=!1,u.value=""}}}return(r,u)=>(e.openBlock(),e.createElementBlock("div",es,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:s.value}])},[u[0]||(u[0]=e.createElementVNode("svg",{class:"pd-icon",viewBox:"0 0 24 24","aria-hidden":"true"},[e.createElementVNode("path",{fill:"currentColor",d:"M12 3l4 4h-3v7h-2V7H8zm-7 12h14v5H5Z"})],-1)),e.createTextVNode(" "+e.toDisplayString(l.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:s.value,onChange:a},null,40,ts)],2),u[1]||(u[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),ns=re(os,[["__scopeId","data-v-b730e8e6"]]),ls={class:"pd-field"},as=["value"],is={class:"pd-field"},ss={key:0,class:"pd-field"},rs=["checked"],ds=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(o){const i=o,t=e.inject(Oe),n=e.computed(()=>i.element.options.tableRows[i.selection.r1]);function l(a){const r=h.setRowType(i.element.options.tableRows,i.selection.r1,a);if(r){alert(r);return}t.recordHistory()}function d(a){a!==void 0&&(n.value.height=a,h.syncTableElementSize(i.element.options),t.recordHistory())}function s(a){n.value.repeatOnPage=a,t.recordHistory()}return(a,r)=>(e.openBlock(),e.createBlock(Ce,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:r[2]||(r[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ls,[r[4]||(r[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:n.value.type,class:"pd-select",style:{width:"100%"},onChange:r[0]||(r[0]=u=>l(u.target.value))},[...r[3]||(r[3]=[e.createElementVNode("option",{value:"header"},"标题行",-1),e.createElementVNode("option",{value:"data"},"数据行",-1),e.createElementVNode("option",{value:"subtotal"},"小计行(每页小计)",-1),e.createElementVNode("option",{value:"summary"},"汇总行",-1)])],40,as)]),e.createElementVNode("div",is,[r[5]||(r[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(se,{"model-value":n.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":d},null,8,["model-value"])]),n.value.type==="header"?(e.openBlock(),e.createElementBlock("div",ss,[r[6]||(r[6]=e.createElementVNode("span",{class:"pd-label"},"每页顶部重复",-1)),e.createElementVNode("input",{checked:n.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:r[1]||(r[1]=u=>s(!!u.target.checked))},null,40,rs)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),cs={class:"pd-field"},us={class:"pd-radio-group",role:"radiogroup"},ms={class:"pd-radio"},ps=["checked"],vs={class:"pd-radio"},fs=["checked"],gs={class:"pd-radio"},hs=["checked"],bs={class:"pd-radio"},Es=["checked"],ys={key:0,class:"pd-field"},ks=["value"],Vs={key:1,class:"pd-field"},Ns=["checked"],ws={key:2,class:"pd-field"},Cs={key:3,class:"pd-hint"},Ss={key:4,class:"pd-field"},Bs={key:5,class:"pd-field"},xs=["value"],$s={key:6,class:"pd-hint"},Ts={key:7,class:"pd-field"},Ds=["value"],Ms={key:8,class:"pd-hint"},Ps={key:9,class:"pd-field"},zs=["value"],Ls={key:10,class:"pd-field"},Rs={key:11,class:"pd-field"},As={class:"pd-field"},Is=["value"],Fs={class:"pd-field"},Us={class:"pd-radio-group",role:"radiogroup"},Hs={class:"pd-radio"},Os=["checked"],Ws={class:"pd-radio"},Gs=["checked"],Ks={class:"pd-radio"},qs=["checked"],Ys={class:"pd-field"},js={class:"pd-radio-group",role:"radiogroup"},Xs={class:"pd-radio"},Zs=["checked"],Js={class:"pd-radio"},Qs=["checked"],_s={class:"pd-radio"},er=["checked"],tr={class:"cell-style-grid"},or={class:"pd-field cell-font-field"},nr={class:"pd-field"},lr={class:"pd-field"},ar=["checked"],ir={class:"pd-field"},sr={class:"pd-field"},rr={class:"border-style-row"},dr={style:{width:"112px","flex-shrink":"0"}},cr={class:"pd-button-group border-presets"},ur={class:"pd-checkbox-group"},mr={class:"pd-checkbox"},pr={class:"pd-checkbox"},vr={class:"pd-checkbox"},fr={class:"pd-checkbox"},gr={class:"pd-field"},hr={class:"pd-field"},br=["checked"],Er={key:12,class:"pd-field"},yr=["value"],kr={key:13,class:"pd-field"},Vr={class:"merge-btns"},Nr=["disabled","title"],wr=["disabled"],Cr=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(o,{expose:i}){const t=o,n=e.inject(Oe),l=e.computed(()=>t.element.options.tableRows),d=e.computed(()=>{const J=h.findMainCell(l.value,t.selection.r1,t.selection.c1);return l.value[J.r].cells[J.c]}),s=e.ref(!1),a=e.ref(""),r=e.computed(()=>d.value.cellType==="barcode"),u=e.computed(()=>d.value.cellType==="qrcode"),m=e.computed(()=>d.value.cellType==="image"),g=e.computed(()=>r.value&&!!d.value.printerDpi),k=e.computed(()=>!r.value&&!u.value&&!m.value),y=e.computed(()=>h.resolveCellTextFit(d.value));function R(J){const c=J.target.value;H(N=>{N.textFit=c})}function C(J){H(c=>{c.align=J})}function v(J){H(c=>{c.valign=J})}function f(J){const c=Number(J);H(N=>{N.printerDpi=c>0?c:void 0})}function M(J){H(c=>{c.cellType=J==="text"?void 0:J,J!=="barcode"&&(c.barcodeType=void 0,c.showBarcodeText=void 0,c.printerDpi=void 0),J!=="qrcode"&&(c.qrCodeLevel=void 0)})}function j(){a.value=d.value.formatter||"",s.value=!0}function ne(J){H(c=>{c.formatter=J||void 0})}function H(J){const c=t.selection;for(let N=c.r1;N<=c.r2;N++)for(let W=c.c1;W<=c.c2;W++){const he=l.value[N].cells[W];he.merged||J(he)}n.recordHistory()}const K=e.ref("solid"),b=e.ref(.75),B=e.ref("#333333"),S=e.ref([]);function x(){return{width:b.value,style:K.value,color:B.value}}function T(J){h.applyBorderPreset(l.value,t.selection,J,x()),n.recordHistory()}function X(J){const c=J.target,N=new Set(S.value);c.checked?N.add(c.value):N.delete(c.value),S.value=[...N];const W=x();H(he=>{const pe={...he.borders??{}};for(const ce of["top","right","bottom","left"])N.has(ce)?pe[ce]={...W}:delete pe[ce];he.borders=pe})}const ee=e.computed(()=>h.canMergeReason(l.value,t.selection)),le=e.computed(()=>{const J=t.selection;for(let c=J.r1;c<=J.r2;c++)for(let N=J.c1;N<=J.c2;N++){const W=l.value[c].cells[N];if(!W.merged&&((W.rowspan??1)>1||(W.colspan??1)>1))return!0}return!1});function ie(){h.mergeCells(l.value,t.selection),n.recordHistory()}function ue(){h.splitCells(l.value,t.selection),n.recordHistory()}return i({openFormatterEditor:j}),(J,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Ce,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:c[43]||(c[43]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",cs,[c[49]||(c[49]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",us,[e.createElementVNode("label",ms,[e.createElementVNode("input",{type:"radio",value:"text",checked:(d.value.cellType||"text")==="text",onChange:c[0]||(c[0]=N=>M(N.target.value))},null,40,ps),c[45]||(c[45]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",vs,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:d.value.cellType==="barcode",onChange:c[1]||(c[1]=N=>M(N.target.value))},null,40,fs),c[46]||(c[46]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",gs,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:d.value.cellType==="qrcode",onChange:c[2]||(c[2]=N=>M(N.target.value))},null,40,hs),c[47]||(c[47]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",bs,[e.createElementVNode("input",{type:"radio",value:"image",checked:d.value.cellType==="image",onChange:c[3]||(c[3]=N=>M(N.target.value))},null,40,Es),c[48]||(c[48]=e.createElementVNode("span",null,"图片",-1))])])]),r.value?(e.openBlock(),e.createElementBlock("div",ys,[c[51]||(c[51]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:d.value.barcodeType||"CODE128",class:"pd-select",onChange:c[4]||(c[4]=N=>H(W=>{W.barcodeType=N.target.value||void 0}))},[...c[50]||(c[50]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,ks)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Vs,[c[52]||(c[52]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:d.value.showBarcodeText!==!1,type:"checkbox",class:"pd-switch",onInput:c[5]||(c[5]=N=>H(W=>{W.showBarcodeText=!!N.target.checked}))},null,40,Ns)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",ws,[c[53]||(c[53]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(se,{"model-value":d.value.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":c[6]||(c[6]=N=>H(W=>{W.barWidth=N}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",Cs,e.toDisplayString(g.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),1)):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Ss,[c[54]||(c[54]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(se,{"model-value":d.value.barFontSize??10,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":c[7]||(c[7]=N=>H(W=>{W.barFontSize=N??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Bs,[c[56]||(c[56]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{value:d.value.printerDpi?String(d.value.printerDpi):"",class:"pd-select",onChange:c[8]||(c[8]=N=>f(N.target.value))},[...c[55]||(c[55]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,xs)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",$s,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",Ts,[c[58]||(c[58]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{value:d.value.qrCodeLevel||"M",class:"pd-select",onChange:c[9]||(c[9]=N=>H(W=>{W.qrCodeLevel=N.target.value||void 0}))},[...c[57]||(c[57]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Ds)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",Ms,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),u.value||m.value?(e.openBlock(),e.createElementBlock("div",Ps,[c[60]||(c[60]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{value:d.value.fit||"contain",class:"pd-select",onChange:c[10]||(c[10]=N=>H(W=>{W.fit=N.target.value}))},[...c[59]||(c[59]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,zs)])):e.createCommentVNode("",!0),r.value||u.value||m.value?(e.openBlock(),e.createElementBlock("div",Ls,[c[61]||(c[61]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(se,{"model-value":d.value.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":c[11]||(c[11]=N=>H(W=>{W.maxWidth=N??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value||u.value||m.value?(e.openBlock(),e.createElementBlock("div",Rs,[c[62]||(c[62]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(se,{"model-value":d.value.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":c[12]||(c[12]=N=>H(W=>{W.maxHeight=N??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",As,[c[63]||(c[63]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:d.value.formatter||"",class:"pd-input",placeholder:"输入内容,支持 {字段} 表达式",onInput:c[13]||(c[13]=N=>H(W=>{W.formatter=N.target.value||void 0})),onDblclick:j},null,40,Is)]),e.createElementVNode("div",Fs,[c[67]||(c[67]=e.createElementVNode("span",{class:"pd-label"},"水平对齐",-1)),e.createElementVNode("div",Us,[e.createElementVNode("label",Hs,[e.createElementVNode("input",{type:"radio",value:"left",checked:d.value.align==="left",onChange:c[14]||(c[14]=N=>C(N.target.value))},null,40,Os),c[64]||(c[64]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Ws,[e.createElementVNode("input",{type:"radio",value:"center",checked:d.value.align==="center",onChange:c[15]||(c[15]=N=>C(N.target.value))},null,40,Gs),c[65]||(c[65]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ks,[e.createElementVNode("input",{type:"radio",value:"right",checked:d.value.align==="right",onChange:c[16]||(c[16]=N=>C(N.target.value))},null,40,qs),c[66]||(c[66]=e.createElementVNode("span",null,"右",-1))])])]),e.createElementVNode("div",Ys,[c[71]||(c[71]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",js,[e.createElementVNode("label",Xs,[e.createElementVNode("input",{type:"radio",value:"top",checked:d.value.valign==="top",onChange:c[17]||(c[17]=N=>v(N.target.value))},null,40,Zs),c[68]||(c[68]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",Js,[e.createElementVNode("input",{type:"radio",value:"middle",checked:d.value.valign==="middle",onChange:c[18]||(c[18]=N=>v(N.target.value))},null,40,Qs),c[69]||(c[69]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",_s,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:d.value.valign==="bottom",onChange:c[19]||(c[19]=N=>v(N.target.value))},null,40,er),c[70]||(c[70]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",tr,[e.createElementVNode("div",or,[c[72]||(c[72]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(Dt,{"model-value":d.value.fontFamily,placeholder:"继承默认","onUpdate:modelValue":c[20]||(c[20]=N=>H(W=>{W.fontFamily=N}))},null,8,["model-value"])]),e.createElementVNode("div",nr,[c[73]||(c[73]=e.createElementVNode("span",{class:"pd-label"},"字号 (pt)",-1)),e.createVNode(se,{"model-value":d.value.fontSize,min:5,max:72,placeholder:"默认","onUpdate:modelValue":c[21]||(c[21]=N=>H(W=>{W.fontSize=N??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",lr,[c[74]||(c[74]=e.createElementVNode("span",{class:"pd-label"},"加粗",-1)),e.createElementVNode("input",{checked:d.value.fontWeight==="bold",type:"checkbox",class:"pd-switch",onInput:c[22]||(c[22]=N=>H(W=>{W.fontWeight=N.target.checked?"bold":void 0}))},null,40,ar)]),e.createElementVNode("div",ir,[c[75]||(c[75]=e.createElementVNode("span",{class:"pd-label"},"文字颜色",-1)),e.createVNode(we,{"model-value":d.value.color,"onUpdate:modelValue":c[23]||(c[23]=N=>H(W=>{W.color=N}))},null,8,["model-value"])]),e.createElementVNode("div",sr,[c[76]||(c[76]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{"model-value":d.value.backgroundColor,"onUpdate:modelValue":c[24]||(c[24]=N=>H(W=>{W.backgroundColor=N}))},null,8,["model-value"])])]),c[87]||(c[87]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",rr,[e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":c[25]||(c[25]=N=>K.value=N),style:{width:"90px"}},[...c[77]||(c[77]=[e.createElementVNode("option",{value:"solid"},"实线",-1),e.createElementVNode("option",{value:"dashed"},"虚线",-1),e.createElementVNode("option",{value:"dotted"},"点线",-1),e.createElementVNode("option",{value:"double"},"双线",-1)])],512),[[e.vModelSelect,K.value]]),e.createElementVNode("div",dr,[e.createVNode(se,{modelValue:b.value,"onUpdate:modelValue":c[26]||(c[26]=N=>b.value=N),min:.25,max:5,step:.25},null,8,["modelValue"])]),e.createVNode(we,{modelValue:B.value,"onUpdate:modelValue":c[27]||(c[27]=N=>B.value=N),clearable:!1},null,8,["modelValue"])]),e.createElementVNode("div",cr,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[28]||(c[28]=N=>T("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[29]||(c[29]=N=>T("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[30]||(c[30]=N=>T("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[31]||(c[31]=N=>T("none"))},"无")]),e.createElementVNode("div",ur,[e.createElementVNode("label",mr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[32]||(c[32]=N=>S.value=N),value:"top",onChange:c[33]||(c[33]=N=>X(N))},null,544),[[e.vModelCheckbox,S.value]]),c[78]||(c[78]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",pr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[34]||(c[34]=N=>S.value=N),value:"right",onChange:c[35]||(c[35]=N=>X(N))},null,544),[[e.vModelCheckbox,S.value]]),c[79]||(c[79]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",vr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[36]||(c[36]=N=>S.value=N),value:"bottom",onChange:c[37]||(c[37]=N=>X(N))},null,544),[[e.vModelCheckbox,S.value]]),c[80]||(c[80]=e.createElementVNode("span",null,"下",-1))]),e.createElementVNode("label",fr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[38]||(c[38]=N=>S.value=N),value:"left",onChange:c[39]||(c[39]=N=>X(N))},null,544),[[e.vModelCheckbox,S.value]]),c[81]||(c[81]=e.createElementVNode("span",null,"左",-1))])]),e.createElementVNode("div",gr,[c[82]||(c[82]=e.createElementVNode("span",{class:"pd-label"},"内边距 (mm)",-1)),e.createVNode(se,{"model-value":d.value.padding,min:0,max:10,step:.5,placeholder:"默认","onUpdate:modelValue":c[40]||(c[40]=N=>H(W=>{W.padding=N??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",hr,[c[83]||(c[83]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:d.value.wordWrap??!0,type:"checkbox",class:"pd-switch",onInput:c[41]||(c[41]=N=>H(W=>{W.wordWrap=!!N.target.checked}))},null,40,br)]),k.value?(e.openBlock(),e.createElementBlock("div",Er,[c[85]||(c[85]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:y.value,style:{width:"100%"},onChange:R},[...c[84]||(c[84]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,yr)])):e.createCommentVNode("",!0),k.value&&y.value==="shrink"?(e.openBlock(),e.createElementBlock("div",kr,[c[86]||(c[86]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(se,{"model-value":d.value.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":c[42]||(c[42]=N=>H(W=>{W.shrinkMinFontSize=N??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Vr,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!ee.value,title:ee.value||"",onClick:ie}," 合并单元格 ",8,Nr),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!le.value,onClick:ue},"拆分单元格",8,wr)])],32)]),_:1}),e.createVNode(Je,{modelValue:s.value,"onUpdate:modelValue":c[44]||(c[44]=N=>s.value=N),fields:o.fields,expression:a.value,"onUpdate:expression":ne},null,8,["modelValue","fields","expression"])],64))}}),Sr=re(Cr,[["__scopeId","data-v-8a66df60"]]),Br={class:"watermark-config"},xr={class:"pd-field"},$r={key:0,class:"pd-field"},Tr={class:"pd-field"},Dr={class:"pd-hint"},Mr={class:"pd-field"},Pr={class:"pd-field"},zr={class:"pd-hint"},Lr={class:"pd-field"},Rr=["value"],Ar={class:"pd-field"},Ir=["min"],Fr={class:"pd-field"},Ur=["min"],Hr=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,l=ge.WATERMARK_DENSITY_PRESETS,d=ge.WATERMARK_DEFAULTS.minTileWidth,s=ge.WATERMARK_DEFAULTS.minTileHeight;function a(K){const b=K.trim();return b?/[{}]/.test(b)||/^[A-Za-z_$][\w$]*\s*\(/.test(b)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(b):!1}function r(K){return K?K.mode==="binding"?K.binding??"":K.content??"":""}const u=e.ref(r(t.modelValue)),m=e.ref(t.modelValue?.testData||""),g=e.ref(!1),k=e.ref(t.modelValue?.mode==="binding"?"binding":"fixed"),y=e.reactive({rotate:t.modelValue?.rotate??ge.WATERMARK_DEFAULTS.rotate,color:t.modelValue?.color||ge.WATERMARK_DEFAULTS.color,opacity:t.modelValue?.opacity??ge.WATERMARK_DEFAULTS.opacity,tileWidth:t.modelValue?.tileWidth??ge.WATERMARK_DEFAULTS.tileWidth,tileHeight:t.modelValue?.tileHeight??ge.WATERMARK_DEFAULTS.tileHeight}),R=e.computed(()=>k.value==="binding");e.watch(()=>t.modelValue,K=>{K&&(u.value=r(K),k.value=K.mode==="binding"?"binding":"fixed",m.value=K.testData||"",y.rotate=K.rotate??ge.WATERMARK_DEFAULTS.rotate,y.color=K.color||ge.WATERMARK_DEFAULTS.color,y.opacity=K.opacity??ge.WATERMARK_DEFAULTS.opacity,y.tileWidth=K.tileWidth??ge.WATERMARK_DEFAULTS.tileWidth,y.tileHeight=K.tileHeight??ge.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const C=e.computed({get(){const{tileWidth:K,tileHeight:b}=y;for(const[B,S]of Object.entries(l))if(K===S.width&&b===S.height)return B;return"custom"},set(K){const b=l[K];b&&(y.tileWidth=b.width,y.tileHeight=b.height)}});function v(){k.value=a(u.value)?"binding":"fixed",H()}function f(){v()}function M(){g.value=!0}function j(K){u.value=K,v()}function ne(K){y.color=K,H()}function H(){const K={testData:m.value,rotate:y.rotate,color:y.color,opacity:y.opacity,tileWidth:y.tileWidth,tileHeight:y.tileHeight};n("update:modelValue",k.value==="binding"?{...K,mode:"binding",binding:u.value,content:""}:{...K,mode:"fixed",content:u.value,binding:""})}return(K,b)=>(e.openBlock(),e.createElementBlock("div",Br,[b[18]||(b[18]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:b[8]||(b[8]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",xr,[b[9]||(b[9]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[0]||(b[0]=B=>u.value=B),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:f,onDblclick:M},null,544),[[e.vModelText,u.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:M},"编辑表达式")]),R.value?(e.openBlock(),e.createElementBlock("div",$r,[b[10]||(b[10]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[1]||(b[1]=B=>m.value=B),placeholder:"表达式取不到值时预览显示",onInput:H},null,544),[[e.vModelText,m.value]])])):e.createCommentVNode("",!0),e.createVNode(Je,{modelValue:g.value,"onUpdate:modelValue":b[2]||(b[2]=B=>g.value=B),fields:o.fields,expression:u.value,"onUpdate:expression":j},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",Tr,[b[11]||(b[11]=e.createElementVNode("span",{class:"pd-label"},"旋转角度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[3]||(b[3]=B=>y.rotate=B),min:-90,max:90,step:5,onChange:H},null,544),[[e.vModelText,y.rotate,void 0,{number:!0}]]),e.createElementVNode("span",Dr,e.toDisplayString(y.rotate)+"°",1)]),e.createElementVNode("div",Mr,[b[12]||(b[12]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(we,{"model-value":y.color,"onUpdate:modelValue":ne},null,8,["model-value"])]),e.createElementVNode("div",Pr,[b[13]||(b[13]=e.createElementVNode("span",{class:"pd-label"},"透明度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[4]||(b[4]=B=>y.opacity=B),min:.05,max:.5,step:.05,onChange:H},null,544),[[e.vModelText,y.opacity,void 0,{number:!0}]]),e.createElementVNode("span",zr,e.toDisplayString(y.opacity.toFixed(2)),1)]),e.createElementVNode("div",Lr,[b[15]||(b[15]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":b[5]||(b[5]=B=>C.value=B),style:{width:"100%"},onChange:H},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),(B,S)=>(e.openBlock(),e.createElementBlock("option",{key:S,value:S},e.toDisplayString(B.label)+"("+e.toDisplayString(B.width)+"×"+e.toDisplayString(B.height)+")",9,Rr))),128)),b[14]||(b[14]=e.createElementVNode("option",{value:"custom"},"自定义",-1))],544),[[e.vModelSelect,C.value]])]),C.value==="custom"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ar,[b[16]||(b[16]=e.createElementVNode("span",{class:"pd-label"},"瓦片宽",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[6]||(b[6]=B=>y.tileWidth=B),min:e.unref(d),step:10,onChange:H},null,40,Ir),[[e.vModelText,y.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",Fr,[b[17]||(b[17]=e.createElementVNode("span",{class:"pd-label"},"瓦片高",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[7]||(b[7]=B=>y.tileHeight=B),min:e.unref(s),step:10,onChange:H},null,40,Ur),[[e.vModelText,y.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),Or=re(Hr,[["__scopeId","data-v-b55bfc50"]]),Wr={class:"design-background-config"},Gr=["title"],Kr={class:"design-background-actions"},qr=["disabled"],Yr=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(!1),d=e.inject(ct,e.computed(()=>{})),s=e.computed(()=>l.value||!d.value),a=e.computed(()=>t.modelValue?.rotation??0);async function r(g){const k=g.target,y=k.files?.[0];if(y){if(!y.type.startsWith("image/")){alert("仅支持上传图片文件"),k.value="";return}if(!d.value){alert("设计背景上传能力未配置"),k.value="";return}l.value=!0;try{const R=await d.value(y);R?n("update:modelValue",{src:R,rotation:0}):alert("设计背景上传失败")}catch(R){alert(R instanceof Error?R.message:"设计背景上传失败")}finally{l.value=!1,k.value=""}}}function u(){if(!t.modelValue?.src)return;const g=(a.value+90)%360;n("update:modelValue",{src:t.modelValue.src,rotation:g})}function m(){n("update:modelValue",void 0)}return(g,k)=>(e.openBlock(),e.createElementBlock("div",Wr,[k[0]||(k[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),k[1]||(k[1]=e.createElementVNode("p",{class:"design-background-tip"},"仅设计器显示,用于套打定位,不会出现在预览和打印中",-1)),o.modelValue?.src?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"design-background-path",title:o.modelValue.src},e.toDisplayString(o.modelValue.src),9,Gr),e.createElementVNode("div",Kr,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:u}," 旋转("+e.toDisplayString(a.value)+"°) ",1),e.createElementVNode("button",{type:"button",class:"pd-button small remove-btn",onClick:m},"移除")])],64)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(["pd-button small upload-label",{disabled:s.value}])},[e.createTextVNode(e.toDisplayString(l.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:s.value,onChange:r},null,40,qr)],2))]))}}),jr=re(Yr,[["__scopeId","data-v-3f4d2e32"]]),Xr={class:"tiling-config","data-test":"tiling-config"},Zr={class:"pd-field"},Jr={class:"tiling-switch"},Qr=["checked","disabled"],_r={key:0,class:"pd-hint tiling-error"},ed={class:"pd-field"},td=["value"],od=["value"],nd={key:0,class:"pd-field"},ld={class:"custom-size-grid"},ad={key:1,class:"pd-field"},id={class:"pd-radio-group",role:"radiogroup"},sd={class:"pd-radio"},rd=["checked"],dd={class:"pd-radio"},cd=["checked"],ud={class:"margin-grid"},md={class:"pd-field"},pd={class:"pd-field"},vd={class:"pd-field"},fd={class:"pd-field"},gd={class:"pd-field"},hd={class:"pd-field"},bd={class:"pd-field"},Ed={key:2,class:"pd-hint tiling-summary"},yd=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,l=Object.keys(h.PAPER_PRESETS).filter(v=>v!=="CUSTOM"&&!h.PAPER_PRESETS[v]?.continuous),d=e.computed(()=>h.isContinuousPaperSize(t.templateData?.paperSize)),s=e.computed(()=>({...ge.TILE_DEFAULTS,...t.modelValue??{},enabled:t.modelValue?.enabled??!1,sheetMargin:{...ge.TILE_DEFAULTS.sheetMargin,...t.modelValue?.sheetMargin??{}}})),a=e.computed(()=>t.templateData?{...t.templateData,tiling:s.value}:void 0),r=e.computed(()=>a.value?ge.validateTiling(a.value):[]),u=e.computed(()=>{const v=a.value;return v?Math.max(ge.computeMaxColumns(v),1):1}),m=e.computed(()=>{const v=a.value;if(!(!v||r.value.length))try{return ge.computeTileLayout(v)}catch{return}}),g=e.computed(()=>{const v=m.value,f=a.value;if(!v||!f)return"";const M=ge.resolveSheetMm(f),j=s.value.sheetPaperSize==="CUSTOM"?"自定义":s.value.sheetPaperSize??"A4",ne=s.value.sheetPaperSize==="CUSTOM"?"":s.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${j}${ne} ${M.width}×${M.height}mm · ${v.columns} 列 × ${v.rows} 行 = 每张 ${v.perSheet} 格`});function k(v){n("update:modelValue",{...s.value,...v})}function y(v,f){k({sheetMargin:{...s.value.sheetMargin,[v]:f??0}})}function R(v){if(v!=="CUSTOM"){k({sheetPaperSize:v});return}const f=a.value,M=f?ge.resolveSheetMm(f):{width:210,height:297};k({sheetPaperSize:"CUSTOM",sheetCustomWidth:s.value.sheetCustomWidth??M.width,sheetCustomHeight:s.value.sheetCustomHeight??M.height})}function C(v){if(!v){k({enabled:!1});return}const f=u.value,M=f>=1?Math.min(ge.TILE_DEFAULTS.columns,f):1;k({...ge.TILE_DEFAULTS,columns:M})}return(v,f)=>(e.openBlock(),e.createElementBlock("div",Xr,[f[30]||(f[30]=e.createElementVNode("h3",{class:"pd-divider"},"拼版打印",-1)),f[31]||(f[31]=e.createElementVNode("p",{class:"pd-hint"},"把标签按「列 × 行」铺到一张大纸上批量打印",-1)),e.createElementVNode("div",Zr,[e.createElementVNode("label",Jr,[e.createElementVNode("input",{type:"checkbox",checked:s.value.enabled,disabled:d.value,onChange:f[0]||(f[0]=M=>C(M.target.checked))},null,40,Qr),f[13]||(f[13]=e.createElementVNode("span",null,"启用拼版",-1))]),d.value?(e.openBlock(),e.createElementBlock("p",_r,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),s.value.enabled&&!d.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ed,[f[15]||(f[15]=e.createElementVNode("span",{class:"pd-label"},"目标纸张",-1)),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:s.value.sheetPaperSize??"A4",onChange:f[1]||(f[1]=M=>R(M.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),M=>(e.openBlock(),e.createElementBlock("option",{key:M,value:M},e.toDisplayString(e.unref(h.PAPER_PRESETS)[M]?.label??M),9,od))),128)),f[14]||(f[14]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,td)]),s.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",nd,[f[17]||(f[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",ld,[e.createVNode(se,{"model-value":s.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":f[2]||(f[2]=M=>k({sheetCustomWidth:M}))},null,8,["model-value"]),f[16]||(f[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(se,{"model-value":s.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":f[3]||(f[3]=M=>k({sheetCustomHeight:M}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",ad,[f[20]||(f[20]=e.createElementVNode("span",{class:"pd-label"},"目标纸方向",-1)),e.createElementVNode("div",id,[e.createElementVNode("label",sd,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(s.value.sheetOrientation??"portrait")==="portrait",onChange:f[4]||(f[4]=M=>k({sheetOrientation:"portrait"}))},null,40,rd),f[18]||(f[18]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",dd,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:s.value.sheetOrientation==="landscape",onChange:f[5]||(f[5]=M=>k({sheetOrientation:"landscape"}))},null,40,cd),f[19]||(f[19]=e.createElementVNode("span",null,"横向",-1))])])])),f[28]||(f[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",ud,[e.createElementVNode("div",md,[f[21]||(f[21]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":f[6]||(f[6]=M=>y("top",M))},null,8,["model-value"])]),e.createElementVNode("div",pd,[f[22]||(f[22]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":f[7]||(f[7]=M=>y("bottom",M))},null,8,["model-value"])]),e.createElementVNode("div",vd,[f[23]||(f[23]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":f[8]||(f[8]=M=>y("left",M))},null,8,["model-value"])]),e.createElementVNode("div",fd,[f[24]||(f[24]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":f[9]||(f[9]=M=>y("right",M))},null,8,["model-value"])])]),f[29]||(f[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",gd,[f[25]||(f[25]=e.createElementVNode("span",{class:"pd-label"},"横向间距",-1)),e.createVNode(se,{"model-value":s.value.gapX,min:0,max:50,"onUpdate:modelValue":f[10]||(f[10]=M=>k({gapX:M??0}))},null,8,["model-value"])]),e.createElementVNode("div",hd,[f[26]||(f[26]=e.createElementVNode("span",{class:"pd-label"},"纵向间距",-1)),e.createVNode(se,{"model-value":s.value.gapY,min:0,max:50,"onUpdate:modelValue":f[11]||(f[11]=M=>k({gapY:M??0}))},null,8,["model-value"])]),e.createElementVNode("div",bd,[f[27]||(f[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(se,{"model-value":s.value.columns,min:1,max:u.value,"onUpdate:modelValue":f[12]||(f[12]=M=>k({columns:M??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,M=>(e.openBlock(),e.createElementBlock("p",{key:M.code,class:"pd-hint tiling-error"},e.toDisplayString(M.message),1))),128)),!r.value.length&&g.value?(e.openBlock(),e.createElementBlock("p",Ed,e.toDisplayString(g.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),kd=re(yd,[["__scopeId","data-v-aa278268"]]),Vd={key:0,class:"prop-collapsed"},Nd={class:"prop-head"},wd={class:"pd-tabs prop-tabs"},Cd={class:"pd-tab-bar",role:"tablist"},Sd={class:"pd-tab-pane",role:"tabpanel"},Bd={class:"property-content"},xd={key:1,class:"pd-empty"},$d={class:"pd-tab-pane",role:"tabpanel"},Td={class:"pd-field"},Dd=["value"],Md=["label"],Pd=["value"],zd={key:0,class:"pd-hint"},Ld={key:1,class:"pd-field"},Rd={class:"pd-label"},Ad={class:"custom-size-grid"},Id={key:2,class:"pd-field"},Fd={class:"pd-radio-group",role:"radiogroup"},Ud={class:"pd-radio"},Hd=["checked"],Od={class:"pd-radio"},Wd=["checked"],Gd={key:3,class:"pd-field"},Kd={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},qd={class:"pd-radio"},Yd=["checked"],jd={class:"pd-radio"},Xd=["checked"],Zd={class:"pd-radio"},Jd=["checked"],Qd={class:"pd-radio"},_d=["checked"],ec={class:"pd-field"},tc={class:"page-bg-row"},oc={key:5,class:"pd-hint"},nc={class:"margin-grid"},lc={class:"pd-field"},ac={class:"pd-field"},ic={class:"pd-field"},sc={class:"pd-field"},rc={class:"pd-field"},dc={class:"pd-field"},cc={class:"pd-field"},uc=e.defineComponent({__name:"PropertyPanel",props:{element:{},templateData:{},fields:{},activeTab:{},tableSelection:{},recordHistory:{type:Function},collapsed:{type:Boolean},multiPage:{type:Boolean}},emits:["delete-element","update:templateData","update:activeTab","toggle-collapse"],setup(o,{emit:i}){const t=o,n=i,l=e.computed(()=>{const A=[];for(const[D,Z]of Object.entries(h.PAPER_PRESETS)){if(t.multiPage&&h.isContinuousPaperSize(D))continue;const be=Z.group??"其他";let ke=A.find(Ve=>Ve.group===be);ke||(ke={group:be,items:[]},A.push(ke)),ke.items.push({key:D,label:Z.label??D})}return A}),d=e.ref(""),s=e.computed(()=>t.element?["text","longText"].includes(t.element.printElementType.type):!1),a=e.computed(()=>t.element?t.element.printElementType.type==="image":!1),r=e.computed(()=>t.element?["barcode","qrcode"].includes(t.element.printElementType.type):!1),u=e.computed(()=>!t.element||t.element.printElementType.type!=="table"?!1:!!t.tableSelection&&t.tableSelection.elementId===t.element.id),m=e.computed(()=>t.element?t.element.printElementType.type==="table":!1),g=e.computed(()=>h.searchProperties(d.value)),k=e.computed(()=>g.value.groups),y=e.computed(()=>g.value.itemKeys),R=e.computed(()=>!!d.value.trim()),C=e.computed(()=>{if(!t.element)return[];if(t.element.printElementType.type==="table"&&t.tableSelection){const{r1:A,c1:D}=t.tableSelection,Z=t.element.options.tableRows;if(Z&&Z[A]){const be=Z[A],ke=t.element.options.fields?.[0]?.dataSource;return h.getTableCellBindings(be.type,A,D,ke)}}return h.getElementBindings(t.element)});function v(A){return A.split(".").flatMap(D=>{const Z=D.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!Z)return[D];const be=Z[1],ke=[...Z[2].matchAll(/\[(\d+)\]/g)].map(Ve=>Number(Ve[1]));return[be,...ke]})}function f(A){return t.element?v(A).reduce((be,ke)=>be==null?"":be[ke],t.element)??"":""}function M(A,D){if(!t.element)return;const Z=v(A),be=Z.pop(),ke=Z.reduce((Ve,xe)=>((Ve[xe]===void 0||Ve[xe]===null)&&(Ve[xe]={}),Ve[xe]),t.element);ke[be]=D||void 0,t.recordHistory?.()}function j(A){d.value=A}function ne(A){t.element&&M("options.src",A)}const H=e.computed(()=>t.templateData?.paperSize||"A4"),K=e.computed(()=>!t.multiPage&&h.isContinuousPaperSize(H.value)),b=e.computed(()=>h.isLabelPaperSize(H.value)),B=e.computed(()=>t.templateData?.orientation||"portrait"),S=e.computed(()=>!!t.templateData?.tiling?.enabled),x=e.computed(()=>t.templateData?.outputRotation??0),T=e.computed({get:()=>t.templateData?.pageBackground||"#ffffff",set:A=>p(A)}),X=e.computed(()=>t.templateData?.margins.top??10),ee=e.computed(()=>t.templateData?.margins.bottom??10),le=e.computed(()=>t.templateData?.margins.left??10),ie=e.computed(()=>t.templateData?.margins.right??10),ue=e.computed(()=>t.templateData?.header.height??10),J=e.computed(()=>t.templateData?.footer.height??10),c=e.computed(()=>t.templateData?.firstPageOverlay.height??0),N=e.computed(()=>t.templateData?.customWidth??h.PAPER_PRESETS[H.value]?.width??210),W=e.computed(()=>t.templateData?.customHeight??297),he=e.computed(()=>t.templateData?.designBackground);function pe(A){if(t.templateData){if(!A){const D={...t.templateData};delete D.designBackground,n("update:templateData",D);return}z({designBackground:A})}}const ce=e.computed(()=>t.templateData?.watermark??{});function ve(A){z({watermark:A})}function z(A){if(!t.templateData)return;const D={...t.templateData,...A};n("update:templateData",D)}function V(A){if(t.templateData){if(h.isContinuousPaperSize(A)){z({paperSize:A,customWidth:A==="CONTINUOUS"?t.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...t.templateData.margins,bottom:t.templateData?.margins.bottom??0}});return}if(A==="CUSTOM"){z({paperSize:"CUSTOM"});return}if(h.PAPER_PRESETS[A]){if(h.isLabelPaperSize(A)){z({paperSize:A,...h.labelPaperDefaults(t.templateData)});return}z({paperSize:A})}}}function w(A){z({orientation:String(A)})}function F(A){z({outputRotation:Number(A)})}function p(A){const D=A&&A.toLowerCase()!=="#ffffff"&&A.toLowerCase()!=="#fff"?A:void 0;z(D===void 0?{pageBackground:void 0}:{pageBackground:D})}function E(){z({pageBackground:void 0})}function $(A){A!==void 0&&z({customWidth:A})}function Y(A){A!==void 0&&z({customHeight:A})}function Q(A){A!==void 0&&z({margins:{...t.templateData.margins,top:A}})}function oe(A){A!==void 0&&z({margins:{...t.templateData.margins,bottom:A}})}function me(A){A!==void 0&&z({margins:{...t.templateData.margins,left:A}})}function P(A){A!==void 0&&z({margins:{...t.templateData.margins,right:A}})}function I(A){A!==void 0&&z({header:{...t.templateData.header,height:A}})}function O(A){A!==void 0&&z({footer:{...t.templateData.footer,height:A}})}function _(A){A!==void 0&&z({firstPageOverlay:{...t.templateData.firstPageOverlay,height:A}})}const q=e.computed(()=>t.activeTab||"page");function fe(A){n("update:activeTab",A),n("toggle-collapse")}return(A,D)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",Vd,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:D[0]||(D[0]=Z=>fe(q.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:q.value==="element"}]),title:"元素属性",onClick:D[1]||(D[1]=Z=>fe("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:q.value==="page"}]),title:"页面属性",onClick:D[2]||(D[2]=Z=>fe("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Nd,[D[18]||(D[18]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:D[3]||(D[3]=Z=>A.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",wd,[e.createElementVNode("div",Cd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="element"}]),onClick:D[4]||(D[4]=Z=>A.$emit("update:activeTab","element"))},"元素属性",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="page"}]),onClick:D[5]||(D[5]=Z=>A.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",Sd,[o.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Vl,{onSearch:j}),e.createElementVNode("div",Bd,[k.value.includes("position-size")&&!u.value?(e.openBlock(),e.createBlock(Fl,{key:0,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("appearance")?(e.openBlock(),e.createBlock(Va,{key:1,element:o.element,"is-text-type":s.value,"matched-keys":y.value,searching:R.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("code")&&r.value?(e.openBlock(),e.createBlock(Fa,{key:2,element:o.element,"matched-keys":y.value,searching:R.value,onChange:D[6]||(D[6]=Z=>o.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("binding")?(e.openBlock(),e.createBlock(Ce,{key:3,title:"内容",icon:"Document","default-expanded":"","group-key":"binding"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,Z=>(e.openBlock(),e.createBlock(wi,{key:Z.targetPath,descriptor:Z,fields:o.fields,"model-value":f(Z.targetPath),"onUpdate:modelValue":be=>M(Z.targetPath,be)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),a.value?(e.openBlock(),e.createBlock(ns,{key:0,onSuccess:ne})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0),m.value&&o.tableSelection&&o.tableSelection.elementId===o.element.id?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createVNode(ds,{element:o.element,selection:o.tableSelection},null,8,["element","selection"]),e.createVNode(Sr,{element:o.element,selection:o.tableSelection,fields:o.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),m.value&&k.value.includes("content")?(e.openBlock(),e.createBlock(zi,{key:5,element:o.element,fields:o.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),k.value.includes("border-bg")?(e.openBlock(),e.createBlock(Ui,{key:6,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("pagination")&&m.value?(e.openBlock(),e.createBlock(Nt,{key:7,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("pagination")&&!m.value?(e.openBlock(),e.createBlock(Nt,{key:8,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),k.value.includes("advanced")?(e.openBlock(),e.createBlock(Yi,{key:9,element:o.element,"matched-keys":y.value,searching:R.value,onDeleteElement:D[7]||(D[7]=Z=>A.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",xd,"请在画布中选择一个元素"))],512),[[e.vShow,(o.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",$d,[e.createElementVNode("form",{class:"pd-form",onSubmit:D[17]||(D[17]=e.withModifiers(()=>{},["prevent"]))},[D[40]||(D[40]=e.createElementVNode("h3",{class:"pd-divider"},"纸张设置",-1)),e.createElementVNode("div",Td,[D[20]||(D[20]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:H.value,class:"pd-select",onChange:D[8]||(D[8]=Z=>V(Z.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,Z=>(e.openBlock(),e.createElementBlock("optgroup",{key:Z.group,label:Z.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.items,be=>(e.openBlock(),e.createElementBlock("option",{key:be.key,value:be.key},e.toDisplayString(be.label),9,Pd))),128))],8,Md))),128)),D[19]||(D[19]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,Dd)]),b.value?(e.openBlock(),e.createElementBlock("p",zd,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),K.value||H.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Ld,[e.createElementVNode("span",Rd,e.toDisplayString(K.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",Ad,[e.createVNode(se,{"model-value":N.value,min:25,max:2e3,"onUpdate:modelValue":$},null,8,["model-value"]),H.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[D[21]||(D[21]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(se,{"model-value":W.value,min:25,max:2e3,"onUpdate:modelValue":Y},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),K.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Id,[D[24]||(D[24]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",Fd,[e.createElementVNode("label",Ud,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:B.value==="portrait",onChange:D[9]||(D[9]=Z=>w(Z.target.value))},null,40,Hd),D[22]||(D[22]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Od,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:B.value==="landscape",onChange:D[10]||(D[10]=Z=>w(Z.target.value))},null,40,Wd),D[23]||(D[23]=e.createElementVNode("span",null,"横向",-1))])]),D[25]||(D[25]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!K.value&&!S.value?(e.openBlock(),e.createElementBlock("div",Gd,[D[30]||(D[30]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",Kd,[e.createElementVNode("label",qd,[e.createElementVNode("input",{type:"radio",value:"0",checked:x.value===0,onChange:D[11]||(D[11]=Z=>F(Z.target.value))},null,40,Yd),D[26]||(D[26]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",jd,[e.createElementVNode("input",{type:"radio",value:"90",checked:x.value===90,onChange:D[12]||(D[12]=Z=>F(Z.target.value))},null,40,Xd),D[27]||(D[27]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",Zd,[e.createElementVNode("input",{type:"radio",value:"180",checked:x.value===180,onChange:D[13]||(D[13]=Z=>F(Z.target.value))},null,40,Jd),D[28]||(D[28]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",Qd,[e.createElementVNode("input",{type:"radio",value:"270",checked:x.value===270,onChange:D[14]||(D[14]=Z=>F(Z.target.value))},null,40,_d),D[29]||(D[29]=e.createElementVNode("span",null,"270°",-1))])]),D[31]||(D[31]=e.createElementVNode("p",{class:"pd-hint"},"整页内容旋转对应角度出纸;90°/270° 时纸张长宽互换以贴合内容,内容不变形不裁切;0° 为不旋转(默认)",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",ec,[D[32]||(D[32]=e.createElementVNode("span",{class:"pd-label"},"页面背景色",-1)),e.createElementVNode("div",tc,[e.createVNode(we,{modelValue:T.value,"onUpdate:modelValue":D[15]||(D[15]=Z=>T.value=Z),class:"page-bg-picker"},null,8,["modelValue"]),e.createElementVNode("button",{type:"button",class:"pd-reset",title:"恢复为默认白色",onClick:E},"默认")])]),e.createVNode(jr,{"model-value":he.value,"onUpdate:modelValue":pe},null,8,["model-value"]),o.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(kd,{key:4,"model-value":o.templateData?.tiling,"template-data":o.templateData,"onUpdate:modelValue":D[16]||(D[16]=Z=>z({tiling:Z}))},null,8,["model-value","template-data"])),D[41]||(D[41]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),K.value?(e.openBlock(),e.createElementBlock("p",oc,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",nc,[e.createElementVNode("div",lc,[D[33]||(D[33]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(se,{"model-value":X.value,min:0,max:50,"onUpdate:modelValue":Q},null,8,["model-value"])]),e.createElementVNode("div",ac,[D[34]||(D[34]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(se,{"model-value":ee.value,min:0,max:100,"onUpdate:modelValue":oe},null,8,["model-value"])]),e.createElementVNode("div",ic,[D[35]||(D[35]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(se,{"model-value":le.value,min:0,max:50,"onUpdate:modelValue":me},null,8,["model-value"])]),e.createElementVNode("div",sc,[D[36]||(D[36]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(se,{"model-value":ie.value,min:0,max:50,"onUpdate:modelValue":P},null,8,["model-value"])])]),D[42]||(D[42]=e.createElementVNode("h3",{class:"pd-divider"},"三区高度 (mm)",-1)),e.createElementVNode("div",rc,[D[37]||(D[37]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(se,{"model-value":ue.value,min:0,max:100,step:.1,"onUpdate:modelValue":I},null,8,["model-value"])]),e.createElementVNode("div",dc,[D[38]||(D[38]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(se,{"model-value":J.value,min:0,max:100,step:.1,"onUpdate:modelValue":O},null,8,["model-value"])]),e.createElementVNode("div",cc,[D[39]||(D[39]=e.createElementVNode("span",{class:"pd-label"},"首页叠加高度",-1)),e.createVNode(se,{"model-value":c.value,min:0,max:200,"onUpdate:modelValue":_},null,8,["model-value"])])],32),e.createVNode(Or,{"model-value":ce.value,fields:o.fields,"onUpdate:modelValue":ve},null,8,["model-value","fields"])],512),[[e.vShow,(o.activeTab||"page")==="page"]])])],64))],2))}}),mc=re(uc,[["__scopeId","data-v-f7152fc4"]]),pc={class:"status-bar"},vc={key:0,class:"status-item coord"},fc={class:"status-item"},gc={class:"status-item"},hc={class:"status-item status-paper"},bc=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(o){return(i,t)=>(e.openBlock(),e.createElementBlock("div",pc,[o.coordinate?(e.openBlock(),e.createElementBlock("span",vc," x:"+e.toDisplayString(o.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(o.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",fc,"缩放 "+e.toDisplayString(o.scale)+"%",1),e.createElementVNode("span",gc,"元素 "+e.toDisplayString(o.elementCount)+e.toDisplayString(o.selectedCount?` (选中 ${o.selectedCount})`:""),1),e.createElementVNode("span",{class:e.normalizeClass(["status-dirty",{on:o.dirty}])},[t[0]||(t[0]=e.createElementVNode("span",{class:"dirty-dot"},null,-1)),e.createTextVNode(e.toDisplayString(o.dirty?"未保存":"已保存"),1)],2),e.createElementVNode("span",hc,e.toDisplayString(o.paper),1)]))}}),Ec=re(bc,[["__scopeId","data-v-a91952ff"]]),yc={id:"getting-started",title:"快速入门",content:`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ge=require("@worm-vue3-print/core"),h=require("@worm-vue3-print/core/designer"),Fe=require("@worm-vue3-print/core/browser"),Bt=require("jsbarcode"),xt=require("qrcode"),It=require("dompurify"),$t=Symbol("selected-ids"),Dt=Symbol("preview-ids");function Ft(o){const i=e.ref(new Set),t=e.ref(new Set),n=e.computed(()=>o.value.filter(V=>i.value.has(V.id))),a=e.computed(()=>i.value.size>0);function d(V,y=!1){if(y){const R=new Set(i.value);R.has(V)?R.delete(V):R.add(V),i.value=R}else i.value=new Set([V])}function s(){i.value=new Set}function l(V){i.value=new Set(V)}function r(V){t.value=new Set(V)}function u(){t.value=new Set}function m(){i.value=new Set(t.value),t.value=new Set}function f(){const V=n.value;if(V.length===0)return null;let y=1/0,R=1/0,S=-1/0,g=-1/0;return V.forEach(p=>{y=Math.min(y,p.options.left),R=Math.min(R,p.options.top),S=Math.max(S,p.options.left+p.options.width),g=Math.max(g,p.options.top+p.options.height)}),{left:y,top:R,width:S-y,height:g-R}}return{selectedIds:i,selectedElements:n,hasSelection:a,select:d,clearSelection:s,selectAll:l,getSelectionBounds:f,previewIds:t,setPreview:r,clearPreview:u,commitPreview:m}}function Ot(){const o=e.ref(null);function i(a){o.value=a.map(d=>({options:{...d.options},printElementType:{...d.printElementType}}))}function t(a=10){if(!o.value)return null;const d=new Map;for(const l of o.value){const r=l.options.groupId;r&&d.set(r,(d.get(r)??0)+1)}const s=new Map;for(const[l,r]of d)s.set(l,r>=2?h.generateGroupId():void 0);return o.value.map(l=>({id:h.generateId(),options:{...l.options,left:l.options.left+a,top:l.options.top+a,groupId:l.options.groupId?s.get(l.options.groupId):void 0},printElementType:{...l.printElementType}}))}function n(){return o.value!==null&&o.value.length>0}return{clipboard:o,copy:i,paste:t,hasData:n}}function Ht(o){const t=e.ref([]),n=e.ref([]),a=e.ref(!1),d=e.ref(!1);function s(){a.value=t.value.length>0,d.value=n.value.length>0}function l(y){const R={elements:JSON.parse(JSON.stringify(y?.elements??[])),templateData:JSON.parse(JSON.stringify(y?.templateData??{}))};return y?.pages&&(R.pages=JSON.parse(JSON.stringify(y.pages)),y.activePageIndex!==void 0&&(R.activePageIndex=y.activePageIndex)),R}function r(y){return l(y)}function u(y){t.value.push(r(y)),n.value=[],t.value.length>50&&t.value.shift(),s()}function m(y){if(t.value.length===0)return null;const R=t.value.pop();return n.value.push(y?r(y):l(R)),s(),t.value.length>0?l(t.value[t.value.length-1]):null}function f(y){if(n.value.length===0)return null;const R=n.value.pop();return t.value.push(y?r(y):l(R)),s(),l(R)}function V(){t.value=[],n.value=[],s()}return{push:u,undo:m,redo:f,canUndo:a,canRedo:d,clear:V}}const rt="开启拼版后只能有一个设计页面";function Le(){return{paperSize:"A4",orientation:"portrait",unit:"mm",margins:{top:10,right:10,bottom:10,left:10},header:{height:10,elements:[]},footer:{height:10,elements:[]},firstPageOverlay:{height:0,elements:[]},elements:[],watermark:{}}}function Ze(o){const i=(t,n)=>(t??[]).map(a=>{const d={...a.options};return(a.printElementType?.type??a.type)==="table"&&h.syncTableElementSize(d),{id:a.id||h.generateId(),zone:n,options:d,printElementType:{...a.printElementType}}});return{...o,margins:{...o.margins},header:{height:o.header?.height??10,elements:[]},footer:{height:o.footer?.height??10,elements:[]},firstPageOverlay:{height:o.firstPageOverlay?.height??0,elements:[...o.firstPageOverlay?.elements??[]]},guides:[...o.guides??[]],elements:[...i(o.elements??[],"content"),...i(o.header?.elements??[],"header"),...i(o.footer?.elements??[],"footer")]}}function vt(o){const i=(n,a)=>{const d=Ze(h.normalizeTemplateUnits(n));return d.name||(d.name=`页面 ${a+1}`),d};if(!o)return[i(Le(),0)];const t=Array.isArray(o.pages)?o.pages:[o];return t.length?t.map(i):[i(Le(),0)]}function ft(o){const i=o.elements,t=n=>i.filter(a=>(a.zone||"content")===n).map(a=>({id:a.id,type:a.printElementType.type,options:{...a.options},printElementType:{...a.printElementType}}));return{unit:"mm",...o,header:{...o.header,elements:t("header")},footer:{...o.footer,elements:t("footer")},firstPageOverlay:{...o.firstPageOverlay,elements:(o.firstPageOverlay?.elements??[]).map(n=>({id:n.id||h.generateId(),type:n.printElementType?.type||"text",options:{...n.options},printElementType:{...n.printElementType}}))},elements:t("content"),guides:[...o.guides??[]]}}function Wt(o={}){const i=e.ref(100),t=e.ref(!0),n=e.ref(!0),a=e.ref(!1),d=e.ref(!0),s=e.ref(vt(o.initialTemplate)),l=e.ref(0),r=e.ref(s.value[0]??Ze(Le())),u=e.computed(()=>s.value.some(z=>z.tiling?.enabled===!0));function m(){return u.value?(alert(rt),!0):!1}function f(){s.value[l.value]=r.value}function V(z){z<0||z>=s.value.length||(f(),l.value=z,r.value=s.value[z],ce())}const y=e.computed({get:()=>r.value.elements,set:z=>{r.value.elements=z}}),R=e.ref(o.initialFields||[]),{selectedIds:S,selectedElements:g,select:p,clearSelection:$,selectAll:Z,previewIds:le,setPreview:F,clearPreview:K,commitPreview:b}=Ft(y),{group:O,ungroup:q,getGroupedIds:P}=h.useGroup(),{copy:k,paste:T,hasData:X}=Ot(),{align:ne}=h.useAlign(),{push:ae,undo:ue,redo:Q,canUndo:c,canRedo:w}=Ht(),W=e.computed(()=>{if(S.value.size===0)return null;const z=S.value.values().next().value;return y.value.find(te=>te.id===z)||null}),he=e.ref(null);function pe(z){he.value=z}function ce(){$(),pe(null)}function ve(){return{elements:y.value.map(z=>({id:z.id,zone:z.zone,options:JSON.parse(JSON.stringify(z.options)),printElementType:{...z.printElementType}})),templateData:{paperSize:r.value.paperSize,orientation:r.value.orientation,outputRotation:r.value.outputRotation,margins:{...r.value.margins},header:{height:r.value.header.height,elements:[]},footer:{height:r.value.footer.height,elements:[]},firstPageOverlay:{height:r.value.firstPageOverlay.height,elements:[]},elements:[],customWidth:r.value.customWidth,customHeight:r.value.customHeight,watermark:r.value.watermark?{...r.value.watermark}:void 0,guides:[...r.value.guides??[]]},pages:JSON.parse(JSON.stringify(s.value)),activePageIndex:l.value}}function M(){ae(ve())}function N(z){return z.pages?.[z.activePageIndex??0]?.elements??z.elements}function C(){const z=ue(ve());z?.pages?(s.value=z.pages,l.value=z.activePageIndex??0,r.value=s.value[l.value]??s.value[0],ce()):z?.templateData&&(r.value={...z.templateData,elements:z.elements})}function U(){const z=Q(ve());z?.pages?(s.value=z.pages,l.value=z.activePageIndex??0,r.value=s.value[l.value]??s.value[0],ce()):z?.templateData&&(r.value={...z.templateData,elements:z.elements})}function v(){k(g.value)}function E(){k(g.value),J()}function B(){const z=T();z&&z.length>0&&(y.value.push(...z),M())}function j(){k(g.value);const z=T();z&&z.length>0&&(z.forEach(te=>{te.options.left+=5,te.options.top+=5}),y.value.push(...z),p(z[0].id,!1),M())}function _(){i.value=100}const oe=e.computed(()=>X());let me=!1,D=null;const A=300;function H(z,te){const ie=g.value.filter(ye=>!ye.options.locked);ie.length!==0&&(ie.forEach(ye=>{ye.options.left+=z,ye.options.top+=te}),me||(me=!0,M()),D&&clearTimeout(D),D=setTimeout(()=>{me=!1,D=null},A))}function ee(){Z(y.value.map(z=>z.id))}function Y(z){ne(g.value,z),M()}function fe(z,te=!1){if(te){p(z,!0);return}S.value=new Set(P(y.value,z))}function L(){y.value=O(y.value,S.value),M()}function x(){y.value=q(y.value,S.value),M()}function J(){S.value.size!==0&&(y.value=y.value.filter(z=>!S.value.has(z.id)),$(),M())}const{setup:be,cleanup:ke}=h.useKeyboard({onMove:H,onDelete:J,onCopy:v,onPaste:B,onSelectAll:ee,onUndo:C,onRedo:U,onDuplicate:j,onResetZoom:_,onAlignLeft:()=>Y("left"),onAlignRight:()=>Y("right"),onAlignCenterH:()=>Y("vertical"),onAlignTop:()=>Y("top"),onAlignBottom:()=>Y("bottom"),onGroup:L,onUngroup:x});let Ve=null;function xe(){Ve=ve()}function Qe(){if(!Ve)return;const z=new Map(Ve.elements.map(Ee=>[Ee.id,Ee]));let te=!1;for(const Ee of y.value){const Be=z.get(Ee.id);if(!Be)continue;(Be.options.left!==Ee.options.left||Be.options.top!==Ee.options.top||Be.options.width!==Ee.options.width||Be.options.height!==Ee.options.height)&&h.finalizeElementZone(Ee,r.value).rejected&&(te=!0)}te&&alert("该元素类型不能放入页眉/页脚");const ie=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ye=N(Ve).map(ie).join("|"),Se=N(ve()).map(ie).join("|");Ve=null,ye!==Se&&M()}function We(z,te){const ie=h.zoneFromPaperPoint(r.value,te.x,te.y);if(ie!=="content"&&!h.ZONE_ALLOWED_TYPES.includes(z.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ye=h.getZoneRects(r.value)[ie];return z.zone=ie,z.options.left=te.x-ye.left,z.options.top=te.y-ye.top,ie!=="content"&&h.clampToZone(z,ye),!0}function Ae(z,te){const ie=h.createRuntimeElement(z);te&&!We(ie,te)||(y.value.push(ie),p(ie.id,!1),M())}function Me(z,te){const ie=h.createFieldElement(z);te&&!We(ie,te)||(y.value.push(ie),p(ie.id,!1),M())}function Te(z){if(S.value.size===0)return;const te=S.value.values().next().value,ie=y.value.find(ze=>ze.id===te);if(!ie)return;const ye=ie.options.zIndex??0,Se=y.value.map(ze=>ze.options.zIndex??0),Ee=Math.max(...Se,0),Be=Math.min(...Se,0);switch(z){case"top":ie.options.zIndex=Ee+1;break;case"bottom":ie.options.zIndex=Be-1;break;case"up":ie.options.zIndex=ye+1;break;case"down":ie.options.zIndex=ye-1;break}M()}function Pe(z,te){const{width:ie,height:ye}=h.getPaperDimensions(r.value),Se=96/25.4;i.value=h.computeFitScale(z,te,ie*Se,ye*Se)}function _e(z){if(r.value={...z},s.value[l.value]=r.value,s.value.length>1){const te={paperSize:z.paperSize,orientation:z.orientation,outputRotation:z.outputRotation,customWidth:z.customWidth,customHeight:z.customHeight};for(const ie of s.value)Object.assign(ie,te)}M()}function et(){return f(),s.value.length<=1?ft(s.value[0]):{version:1,pages:s.value.map(ft)}}function Ge(z,te){s.value=vt(z),l.value=0,r.value=s.value[0],te&&(r.value={...r.value,elements:te.map(ie=>({...ie,id:ie.id||h.generateId(),zone:ie.zone||"content",options:{...ie.options},printElementType:{...ie.printElementType}}))},s.value[l.value]=r.value),ae(ve())}function tt(){const z=new Set(s.value.map(ie=>ie.name));let te=s.value.length+1;for(;z.has(`页面 ${te}`);)te++;return`页面 ${te}`}function ot(){if(m())return;f();const z=s.value[l.value]??Le(),te=Ze({...Le(),paperSize:z.paperSize,orientation:z.orientation,customWidth:z.customWidth,customHeight:z.customHeight,name:tt()});s.value.push(te),l.value=s.value.length-1,r.value=te,ce(),M()}function Ke(){if(m())return;f();const z=s.value[l.value],te=JSON.parse(JSON.stringify(z));te.name=`${z.name??`页面 ${l.value+1}`} 副本`,te.elements=te.elements.map(ie=>({...ie,id:h.generateId()})),te.firstPageOverlay={...te.firstPageOverlay,elements:(te.firstPageOverlay?.elements??[]).map(ie=>({...ie,id:h.generateId()}))},s.value.splice(l.value+1,0,te),V(l.value+1),M()}function nt(z){s.value.length<=1||(f(),s.value.splice(z,1),z<l.value?l.value--:z===l.value&&l.value>=s.value.length&&(l.value=s.value.length-1),r.value=s.value[l.value],ce(),M())}function lt(z,te){s.value[z]&&(s.value[z].name=te)}function qe(z,te){if(z===te)return;f();const[ie]=s.value.splice(z,1);s.value.splice(te,0,ie),l.value=te,r.value=ie,ce(),M()}return ae(ve()),e.onMounted(()=>be()),e.onUnmounted(()=>{ke(),D&&(clearTimeout(D),D=null)}),{scale:i,showRuler:t,showGrid:n,snapToGrid:a,showTableGhostBorder:d,templateData:r,elements:y,fields:R,tilingEnabled:u,pages:s,activePageIndex:l,switchPage:V,addPage:ot,duplicatePage:Ke,deletePage:nt,renamePage:lt,movePage:qe,selectedIds:S,selectedElements:g,selectedElement:W,select:p,selectElement:fe,clearSelection:$,selectAll:ee,previewIds:le,setPreview:F,clearPreview:K,commitPreview:b,hasClipboard:oe,copy:v,paste:B,cutSelected:E,tableSelection:he,setTableSelection:pe,canUndo:c,canRedo:w,undo:C,redo:U,recordHistory:M,alignSelected:Y,groupSelected:L,ungroupSelected:x,deleteSelected:J,duplicateSelected:j,resetZoom:_,dragStart:xe,dragStop:Qe,addElement:Ae,addFieldElement:Me,moveLayer:Te,fitToWindow:Pe,updateTemplateData:_e,getTemplateJson:et,loadTemplate:Ge}}let gt=0;function Gt(){return gt+=1,`guide-${gt}`}function Kt(o,i){const t=e.computed(()=>o.value.guides??[]);function n(r){o.value={...o.value,guides:r([...o.value.guides??[]])},i()}function a(r,u){n(m=>(m.push({type:r,position:u,id:Gt()}),m))}function d(r,u){n(m=>m.map(f=>f.id===r?{...f,position:u}:f))}function s(r){n(u=>u.filter(m=>m.id!==r))}function l(){const r=[],u=[];for(const m of t.value)m.type==="vertical"?r.push(m.position):u.push(m.position);return{vertical:r,horizontal:u}}return{guides:t,addGuide:a,moveGuide:d,removeGuide:s,getGuidePositions:l}}const He=Symbol("table-edit"),dt=Symbol("print-upload-image"),ct=Symbol("print-upload-design-background"),ut=Symbol("print-font-catalog"),qt=e.computed(()=>[]);function Yt(o){return{catalog:e.computed(()=>{const t=[],n=new Set;for(const a of e.toValue(o)??[]){const d=a?.family?.trim();if(!d)continue;const s=d.toLowerCase();if(n.has(s))continue;n.add(s);const l=a.label?.trim();t.push(l?{family:d,label:l}:{family:d})}return t})}}function jt(){return e.inject(ut,qt)}function ht(o,i){const t=i?.trim().toLowerCase();if(t)return o.find(n=>n.family.trim().toLowerCase()===t)}function bt(o){return o.label?`${o.label}(${o.family})`:o.family}function Oe(o){return o.toLowerCase().replace(/\s+/g,"")}function Et(o,i){if(o===i)return 0;if(o.startsWith(i))return 1;if(o.includes(i))return 2;let t=0;for(const n of o)if(n===i[t]&&t++,t===i.length)return 3;return-1}function Xt(o,i){const t=Oe(i.trim());return t?o.map((n,a)=>({font:n,index:a,rank:Zt(n,t)})).filter(n=>n.rank>=0).sort((n,a)=>n.rank-a.rank||n.index-a.index).map(n=>n.font):[...o]}function Zt(o,i){const t=Et(Oe(o.family),i);if(!o.label)return t;const n=Et(Oe(o.label),i);return t<0?n:n<0?t:Math.min(t,n)}const Jt="print-designer-font-face";function Qt(o){const i=`${Jt}-${e.useId()}`;let t;e.watchEffect(()=>{const n=e.toValue(o);if(!n){t?.remove(),t=void 0;return}t||(t=document.createElement("style"),t.id=i,document.head.appendChild(t)),t.textContent=n}),e.onUnmounted(()=>{t?.remove(),t=void 0})}const _t=e.defineComponent({__name:"HelpButton",emits:["click"],setup(o){return(i,t)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:t[0]||(t[0]=n=>i.$emit("click"))},[...t[1]||(t[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),re=(o,i)=>{const t=o.__vccOpts||o;for(const[n,a]of i)t[n]=a;return t},eo=re(_t,[["__scopeId","data-v-80ccab03"]]),to={class:"designer-toolbar"},oo={class:"tb-group"},no={class:"tb-title"},lo={class:"tb-title-name"},ao={class:"tb-group"},io=["disabled"],so=["disabled"],ro={key:0,class:"tb-group"},co={key:1,class:"tb-group"},uo={key:2,class:"tb-group"},mo={key:3,class:"tb-group"},po={class:"tb-group"},vo={class:"tb-zoom"},fo={key:4,class:"tb-group"},go={class:"tb-group"},ho={class:"tb-group"},bo=e.defineComponent({__name:"DesignerToolbar",props:e.mergeModels({isEdit:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},hasMultiSelection:{type:Boolean},hasSelection:{type:Boolean},showRuler:{type:Boolean,default:!0},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},selectedElementHasGroup:{type:Boolean},overlayVisible:{type:Boolean},showHelp:{type:Boolean,default:!0}},{scale:{default:100},scaleModifiers:{}}),emits:e.mergeModels(["preview","save","undo","redo","align","move-layer","toggle-ruler","toggle-grid","toggle-snap","toggle-table-ghost-border","toggle-overlay","group","ungroup","add-overlay-element","fit-window","zoom","help"],["update:scale"]),setup(o){const i=e.useModel(o,"scale");return(t,n)=>(e.openBlock(),e.createElementBlock("div",to,[e.createElementVNode("div",oo,[n[29]||(n[29]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-7a58c9f4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-7a58c9f4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-7a58c9f4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-7a58c9f4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-7a58c9f4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-7a58c9f4></line></svg></span>',1)),e.createElementVNode("div",no,[e.createElementVNode("span",lo,e.toDisplayString(o.isEdit?"编辑模板":"新建模板"),1),n[28]||(n[28]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",ao,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canUndo,onClick:n[0]||(n[0]=a=>t.$emit("undo")),"data-tip":"撤销"},"↶",8,io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canRedo,onClick:n[1]||(n[1]=a=>t.$emit("redo")),"data-tip":"重做"},"↷",8,so)]),o.hasMultiSelection?(e.openBlock(),e.createElementBlock("div",ro,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[2]||(n[2]=a=>t.$emit("align","left")),title:"左对齐"},"⇤"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[3]||(n[3]=a=>t.$emit("align","right")),title:"右对齐"},"⇥"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[4]||(n[4]=a=>t.$emit("align","top")),title:"顶对齐"},"⇡"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[5]||(n[5]=a=>t.$emit("align","bottom")),title:"底对齐"},"⇣"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[6]||(n[6]=a=>t.$emit("align","vertical")),title:"水平居中"},"↔"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[7]||(n[7]=a=>t.$emit("align","horizontal")),title:"垂直居中"},"↕"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[8]||(n[8]=a=>t.$emit("align","distributeHor")),title:"水平分布"},"⇔"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[9]||(n[9]=a=>t.$emit("align","distributeVer")),title:"垂直分布"},"⇕")])):e.createCommentVNode("",!0),o.hasMultiSelection?(e.openBlock(),e.createElementBlock("div",co,[e.createElementVNode("button",{class:"tb-btn",onClick:n[10]||(n[10]=a=>t.$emit("group")),title:"组合"},"组合")])):e.createCommentVNode("",!0),!o.hasMultiSelection&&o.selectedElementHasGroup?(e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("button",{class:"tb-btn",onClick:n[11]||(n[11]=a=>t.$emit("ungroup")),title:"取消组合"},"取消组合")])):e.createCommentVNode("",!0),o.hasSelection?(e.openBlock(),e.createElementBlock("div",mo,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[12]||(n[12]=a=>t.$emit("move-layer","top")),"data-tip":"置顶"},"⤒"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[13]||(n[13]=a=>t.$emit("move-layer","up")),"data-tip":"上移一层"},"↑"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[14]||(n[14]=a=>t.$emit("move-layer","down")),"data-tip":"下移一层"},"↓"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[15]||(n[15]=a=>t.$emit("move-layer","bottom")),"data-tip":"置底"},"⤓")])):e.createCommentVNode("",!0),e.createElementVNode("div",po,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:n[16]||(n[16]=a=>t.$emit("toggle-ruler"))},[...n[30]||(n[30]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:n[17]||(n[17]=a=>t.$emit("toggle-grid"))},[...n[31]||(n[31]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:n[18]||(n[18]=a=>t.$emit("toggle-table-ghost-border"))},[...n[32]||(n[32]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{on:o.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:n[19]||(n[19]=a=>t.$emit("toggle-snap"))},[...n[33]||(n[33]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[20]||(n[20]=a=>t.$emit("fit-window")),"data-tip":"适应窗口"},"⤢"),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[21]||(n[21]=a=>t.$emit("zoom",-10)),"data-tip":"缩小"},"−"),e.createElementVNode("span",vo,e.toDisplayString(i.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:n[22]||(n[22]=a=>t.$emit("zoom",10)),"data-tip":"放大"},"+")]),n[34]||(n[34]=e.createElementVNode("div",{class:"tb-spacer"},null,-1)),o.showHelp?(e.openBlock(),e.createElementBlock("div",fo,[e.createVNode(eo,{onClick:n[23]||(n[23]=a=>t.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",go,[e.createElementVNode("button",{class:"tb-btn",onClick:n[24]||(n[24]=a=>t.$emit("add-overlay-element"))},"首页专属"),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn",{warn:o.overlayVisible}]),onClick:n[25]||(n[25]=a=>t.$emit("toggle-overlay"))},"叠层对比",2)]),e.createElementVNode("div",ho,[e.createElementVNode("button",{class:"btn-secondary",onClick:n[26]||(n[26]=a=>t.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary",onClick:n[27]||(n[27]=a=>t.$emit("save"))},"保存")])]))}}),Eo=re(bo,[["__scopeId","data-v-7a58c9f4"]]),yo={class:"layer-panel"},ko=["onClick"],Vo={class:"layer-icon"},No={class:"layer-name"},wo={key:0,class:"layer-zone"},Co={class:"layer-zindex"},So={key:0,class:"layer-actions"},Bo=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer"],setup(o){const i=o,t=e.computed(()=>[...i.elements].sort((l,r)=>(r.options.zIndex??0)-(l.options.zIndex??0))),n={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function a(l){return n[l.printElementType.type]||"?"}function d(l){return l.options.title||l.printElementType.title||l.printElementType.type}function s(l){return l.zone==="header"?"页眉":l.zone==="footer"?"页脚":""}return(l,r)=>(e.openBlock(),e.createElementBlock("div",yo,[r[4]||(r[4]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u.id,class:e.normalizeClass(["layer-item",{active:o.selectedIds.has(u.id)}]),onClick:m=>l.$emit("select",u.id,!1)},[e.createElementVNode("span",Vo,e.toDisplayString(a(u)),1),e.createElementVNode("span",No,e.toDisplayString(d(u)),1),s(u)?(e.openBlock(),e.createElementBlock("span",wo,e.toDisplayString(s(u)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Co,"z:"+e.toDisplayString(u.options.zIndex??0),1)],10,ko))),128)),t.value.length>0?(e.openBlock(),e.createElementBlock("div",So,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[0]||(r[0]=u=>l.$emit("move-layer","top")),title:"置顶"}," ⤒ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[1]||(r[1]=u=>l.$emit("move-layer","up")),title:"上移"}," ↑ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[2]||(r[2]=u=>l.$emit("move-layer","down")),title:"下移"}," ↓ "),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:r[3]||(r[3]=u=>l.$emit("move-layer","bottom")),title:"置底"}," ⤓ ")])):e.createCommentVNode("",!0)]))}}),xo=re(Bo,[["__scopeId","data-v-f7a10482"]]),$o={class:"field-tree-panel"},Do={class:"tree-container"},To=["onClick"],Mo={class:"expand-icon"},Po={class:"node-icon"},zo={class:"group-label"},Ro=["onDragstart"],Lo={class:"node-label"},Ao={class:"node-key"},Uo={key:0,class:"pd-empty"},Io=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(""),d=e.ref(new Set),s=e.computed(()=>!!a.value.trim()),l=e.computed(()=>h.filterGroups(h.groupFields(t.fields),a.value));function r(m){const f=new Set(d.value);f.has(m)?f.delete(m):f.add(m),d.value=f}function u(m,f){m.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:f.fieldKey,fieldLabel:f.fieldLabel})),m.dataTransfer&&(m.dataTransfer.effectAllowed="copy"),n("field-drag",f)}return(m,f)=>(e.openBlock(),e.createElementBlock("div",$o,[f[2]||(f[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=V=>a.value=V),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,a.value]]),e.createElementVNode("div",Do,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,V=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:V.key||"_top"},[V.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":V.isList}]),onClick:y=>r(V.key)},[e.createElementVNode("span",Mo,e.toDisplayString(d.value.has(V.key)&&!s.value?"▶":"▼"),1),e.createElementVNode("span",Po,e.toDisplayString(V.isList?"📋":"📁"),1),e.createElementVNode("span",zo,e.toDisplayString(V.label),1)],10,To)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.fields,y=>(e.openBlock(),e.createElementBlock("div",{key:y.fieldKey,class:"field-row",draggable:"true",style:e.normalizeStyle({paddingLeft:(V.key?22:8)+"px"}),onDragstart:R=>u(R,y)},[f[1]||(f[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",Lo,e.toDisplayString(y.fieldLabel),1),e.createElementVNode("span",Ao,"("+e.toDisplayString(y.fieldKey)+")",1)],44,Ro))),128))],512),[[e.vShow,!V.key||s.value||!d.value.has(V.key)]])],64))),128))]),l.value.length===0?(e.openBlock(),e.createElementBlock("p",Uo,"暂无字段")):e.createCommentVNode("",!0)]))}}),Fo=re(Io,[["__scopeId","data-v-9b326f07"]]),Oo={key:0,class:"left-collapsed"},Ho={class:"left-head"},Wo={class:"pd-tabs left-tabs"},Go={class:"pd-tab-bar",role:"tablist"},Ko={class:"pd-tab-pane",role:"tabpanel"},qo=["onDragstart"],Yo={class:"material-icon"},jo={class:"material-label"},Xo={class:"pd-tab-pane",role:"tabpanel"},Zo={class:"pd-tab-pane",role:"tabpanel"},Jo=e.defineComponent({__name:"LeftPanel",props:{fields:{},elements:{},selectedIds:{},collapsed:{type:Boolean}},emits:["select","move-layer","toggle-visible","toggle-locked","field-drag","toggle-collapse"],setup(o,{emit:i}){const t=i,n=e.ref("elements"),a=[{type:"text",label:"文本",icon:"T"},{type:"barcode",label:"条形码",icon:"▍▍"},{type:"qrcode",label:"二维码",icon:"▦"},{type:"image",label:"图片",icon:"▧"},{type:"table",label:"表格",icon:"⊞"},{type:"longText",label:"长文",icon:"¶"},{type:"hline",label:"横线",icon:"―"},{type:"vline",label:"竖线",icon:"│"},{type:"rect",label:"矩形",icon:"▭"},{type:"oval",label:"椭圆",icon:"◯"},{type:"html",label:"HTML",icon:"<>"}];function d(r,u){r.dataTransfer?.setData("elementType",u)}function s(r){t("field-drag",r)}function l(r){n.value=r,t("toggle-collapse")}return(r,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",Oo,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:u[0]||(u[0]=m=>l(n.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="elements"}]),title:"元素",onClick:u[1]||(u[1]=m=>l("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="fields"}]),title:"字段",onClick:u[2]||(u[2]=m=>l("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="layers"}]),title:"图层",onClick:u[3]||(u[3]=m=>l("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Ho,[u[12]||(u[12]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:u[4]||(u[4]=m=>r.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",Wo,[e.createElementVNode("div",Go,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="elements"}]),onClick:u[5]||(u[5]=m=>n.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="fields"}]),onClick:u[6]||(u[6]=m=>n.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="layers"}]),onClick:u[7]||(u[7]=m=>n.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",Ko,[u[13]||(u[13]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(a,m=>e.createElementVNode("div",{key:m.type,class:"material-card",draggable:"true",onDragstart:f=>d(f,m.type)},[e.createElementVNode("span",Yo,e.toDisplayString(m.icon),1),e.createElementVNode("span",jo,e.toDisplayString(m.label),1)],40,qo)),64))],512),[[e.vShow,n.value==="elements"]]),e.withDirectives(e.createElementVNode("div",Xo,[e.createVNode(Fo,{fields:o.fields,onFieldDrag:s},null,8,["fields"])],512),[[e.vShow,n.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Zo,[e.createVNode(xo,{elements:o.elements,"selected-ids":o.selectedIds,onSelect:u[8]||(u[8]=(m,f)=>r.$emit("select",m,f)),onMoveLayer:u[9]||(u[9]=m=>r.$emit("move-layer",m)),onToggleVisible:u[10]||(u[10]=m=>r.$emit("toggle-visible",m)),onToggleLocked:u[11]||(u[11]=m=>r.$emit("toggle-locked",m))},null,8,["elements","selected-ids"])],512),[[e.vShow,n.value==="layers"]])])],64))],2))}}),Qo=re(Jo,[["__scopeId","data-v-15dad0f0"]]);function _o(o,i){const t=e.ref(!1),n=e.ref(null);let a=0,d=0,s=0,l=0,r=!1;function u(S){if(i.disabled||S.button!==0)return;const g=S.target;if(!(g instanceof Element)||g.classList.contains("resize-handle"))return;t.value=!0,r=S.altKey,a=S.clientX,d=S.clientY;const p=o.value;p&&(s=parseFloat(p.style.left)||0,l=parseFloat(p.style.top)||0,n.value={left:s,top:l,width:parseFloat(p.style.width)||0,height:parseFloat(p.style.height)||0},i.onStart?.({altKey:r}),document.addEventListener("mousemove",f),document.addEventListener("mouseup",V),S.preventDefault())}function m(S){const g=i.getScale?.()??1;let p=s+(S.clientX-a)/g,$=l+(S.clientY-d)/g;if(i.axis==="x"&&($=l),i.axis==="y"&&(p=s),i.onAdsorb){const Z=o.value;if(Z){const le=parseFloat(Z.style.width)||0,F=parseFloat(Z.style.height)||0,K=i.onAdsorb({left:p,top:$,width:le,height:F});p=K.left,$=K.top}}return{left:p,top:$}}function f(S){const g=m(S);n.value&&(n.value.left=g.left,n.value.top=g.top),i.onDrag(g)}function V(S){t.value=!1;const g=m(S);i.onDragEnd?.(g,{altKey:r}),i.onStop?.(),n.value=null,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",V)}function y(){const S=o.value;S&&S.removeEventListener("mousedown",u),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",V)}function R(){y();const S=o.value;S&&S.addEventListener("mousedown",u)}return{isDragging:t,dragPreview:n,setup:R,cleanup:y}}function en(o){const i=[];return o.getAttribute("data-fit")==="shrink"&&i.push(o),o.querySelectorAll('[data-fit="shrink"]').forEach(t=>i.push(t)),i}function tn(o){o.querySelectorAll("[data-fit-size]").forEach(i=>{if(i.getAttribute("data-fit")==="shrink")return;i.removeAttribute("data-fit-size");const t=i.getAttribute("data-fit-base");t?i.style.fontSize=`${t}pt`:i.style.removeProperty("font-size")})}function mt(o,i){const t=()=>{const n=o.value;n&&(en(n).forEach(Fe.fitTextNode),tn(n))};e.watchEffect(()=>{i(),e.nextTick(t)},{flush:"post"}),e.onMounted(()=>{e.nextTick(t)})}const on=["data-fit","data-fit-base","data-fit-min"],nn=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},a=e.ref(null),d=e.computed(()=>h.resolveElementTextFit("text",i.element.options)),s=e.computed(()=>i.element.options.fontSize||12),l=e.computed(()=>h.resolveShrinkMinFontSize(i.element.options.shrinkMinFontSize)),r=e.computed(()=>{const m=i.element.options,f=d.value==="autoHeight";return{fontSize:s.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",lineHeight:m.lineHeight?m.lineHeight+"pt":"normal",letterSpacing:m.letterSpacing?m.letterSpacing+"pt":"normal",textDecoration:m.textDecoration||"none",padding:`${m.contentPaddingTop||0}pt ${m.contentPaddingRight||0}pt ${m.contentPaddingBottom||0}pt ${m.contentPaddingLeft||0}pt`,width:"100%",height:f?"auto":"100%",boxSizing:"border-box",overflow:f?"visible":"hidden",...m.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...m.verticalAlign?{display:"flex",alignItems:t[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}:{}}}),u=e.computed(()=>i.designMode?i.element.options.testData?i.element.options.testData:i.element.options.formatter||"文本":h.resolveTextBinding(i.element.options,i.data));return mt(a,()=>[d.value,s.value,l.value,i.element.options.width,i.element.options.height,i.element.options.wordWrap,i.element.options.letterSpacing,i.element.options.lineHeight,u.value]),(m,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"print-text",style:e.normalizeStyle(r.value),"data-fit":d.value==="shrink"?"shrink":void 0,"data-fit-base":String(s.value),"data-fit-min":String(l.value)},e.toDisplayString(u.value),13,on))}}),ln={class:"print-image"},an=["src"],sn={key:1,class:"image-placeholder"},rn=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{const s=i.element.options.src||"";return s?s.includes("{")?i.designMode?h.evaluateTemplate(s,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(s,i.data?.[0]||{}):s:""}),n=e.ref(!1);function a(){n.value=!0}e.watch(t,()=>{n.value=!1});const d=e.computed(()=>({objectFit:i.element.options.fit||"contain"}));return(s,l)=>(e.openBlock(),e.createElementBlock("div",ln,[t.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(d.value),onError:a},null,44,an)):(e.openBlock(),e.createElementBlock("div",sn,"图片"))]))}}),dn=re(rn,[["__scopeId","data-v-007a2979"]]),cn=["data-fit","data-fit-base","data-fit-min"],un=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},a=e.ref(null),d=e.computed(()=>h.resolveElementTextFit("longText",i.element.options)),s=e.computed(()=>i.element.options.fontSize||12),l=e.computed(()=>h.resolveShrinkMinFontSize(i.element.options.shrinkMinFontSize)),r=e.computed(()=>{const m=i.element.options,f=d.value==="autoHeight";return{fontSize:s.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",lineHeight:m.lineHeight?m.lineHeight+"pt":"1.5",letterSpacing:m.letterSpacing?m.letterSpacing+"pt":"normal",textIndent:m.longTextIndent?m.longTextIndent+"pt":"0",width:"100%",height:f?"auto":"100%",overflow:f?"visible":"hidden",wordBreak:"break-all",boxSizing:"border-box",...m.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...m.verticalAlign?{display:"flex",alignItems:t[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}:{}}}),u=e.computed(()=>i.designMode?i.element.options.formatter?i.element.options.formatter:"长文本内容":h.resolveTextBinding(i.element.options,i.data));return mt(a,()=>[d.value,s.value,l.value,i.element.options.width,i.element.options.height,i.element.options.wordWrap,i.element.options.lineHeight,u.value]),(m,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"print-longtext",style:e.normalizeStyle(r.value),"data-fit":d.value==="shrink"?"shrink":void 0,"data-fit-base":String(s.value),"data-fit-min":String(l.value)},e.toDisplayString(u.value),13,cn))}}),mn=["title"],pn=["title","onClick"],vn=e.defineComponent({__name:"TableContextMenu",props:{visible:{type:Boolean},x:{},y:{},canDeleteRow:{type:Boolean},canDeleteCol:{type:Boolean},mergeDisabledReason:{},canSplit:{type:Boolean},currentRowType:{},rowTypeDisabledReason:{type:Function}},emits:["action"],setup(o,{emit:i}){const t=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],n=i;function a(d,s){n("action",d,s)}return(d,s)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:o.x+"px",top:o.y+"px"}),onMousedown:s[8]||(s[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:s[0]||(s[0]=l=>a("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:s[1]||(s[1]=l=>a("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteRow}]),onClick:s[2]||(s[2]=l=>o.canDeleteRow&&a("delete-row"))}," 删除行 ",2),s[9]||(s[9]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:"menu-item",onClick:s[3]||(s[3]=l=>a("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:s[4]||(s[4]=l=>a("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteCol}]),onClick:s[5]||(s[5]=l=>o.canDeleteCol&&a("delete-col"))}," 删除列 ",2),s[10]||(s[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!o.mergeDisabledReason}]),title:o.mergeDisabledReason||"",onClick:s[6]||(s[6]=l=>!o.mergeDisabledReason&&a("merge"))}," 合并单元格 ",10,mn),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canSplit}]),onClick:s[7]||(s[7]=l=>o.canSplit&&a("split"))}," 拆分单元格 ",2),s[11]||(s[11]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),s[12]||(s[12]=e.createElementVNode("div",{class:"menu-group-title"},"行类型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(t,l=>e.createElementVNode("div",{key:l.value,class:e.normalizeClass(["menu-item",{disabled:!!o.rowTypeDisabledReason(l.value),active:o.currentRowType===l.value}]),title:o.rowTypeDisabledReason(l.value)||"",onClick:r=>!o.rowTypeDisabledReason(l.value)&&a("set-row-type",l.value)},e.toDisplayString(l.label),11,pn)),64))],36)):e.createCommentVNode("",!0)]))}}),fn=re(vn,[["__scopeId","data-v-44e319c1"]]),gn={class:"cell-barcode"},hn=["preserveAspectRatio"],bn=["src"],En={key:1,class:"cell-barcode-fallback"},yn=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(o){const i=o,t=e.ref(null),n=e.ref(!1),a=e.ref(""),d=e.ref(null),s={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},l=e.computed(()=>s[i.fit||"contain"]??"xMidYMid meet"),r=e.computed(()=>d.value?{width:d.value.width,height:d.value.height}:{maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}),u=e.computed(()=>({objectFit:i.fit||"contain",maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}));function m(){if(n.value=!1,d.value=null,!t.value)return;const R=h.barcodeUnitsPerModule(i.barWidth);try{Bt(t.value,i.value,{format:i.barcodeType||"CODE128",width:R,height:h.BARCODE_BAR_HEIGHT_MODULES*R,displayValue:i.showText!==!1,fontSize:(i.barFontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*R,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*R,marginRight:h.BARCODE_QUIET_ZONE_MODULES*R,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*R})}catch{return}n.value=!0;const S=f(t.value),g=S?h.resolveBarcodeSize({unitWidth:S.width/R,unitHeight:S.height/R,boxWidthMm:h.barcodeAvailableBoxMm(i.targetWidthMm,i.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(i.targetHeightMm,i.maxHeight),dpi:i.printerDpi,barWidth:i.barWidth}):null;d.value=g?{width:`${g.widthMm}mm`,height:`${g.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function f(R){const S=(R.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return S.length!==4||S.some(g=>!Number.isFinite(g))?null:{width:S[2],height:S[3]}}async function V(){if(!i.value){a.value="";return}try{a.value=await xt.toDataURL(i.value,{width:96,margin:1,errorCorrectionLevel:i.qrCodeLevel||"M"})}catch{a.value=""}}function y(){i.cellType==="barcode"?m():V()}return e.onMounted(y),e.watch(()=>[i.cellType,i.value,i.barcodeType,i.qrCodeLevel,i.showText,i.printerDpi,i.targetWidthMm,i.targetHeightMm,i.barWidth,i.barFontSize,i.maxWidth,i.maxHeight],y),(R,S)=>(e.openBlock(),e.createElementBlock("div",gn,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:t,preserveAspectRatio:l.value,style:e.normalizeStyle(r.value)},null,12,hn)),[[e.vShow,o.cellType==="barcode"&&n.value]]),o.cellType==="qrcode"&&a.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:a.value,alt:"qrcode",style:e.normalizeStyle(u.value)},null,12,bn)):e.createCommentVNode("",!0),!n.value&&o.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",En,e.toDisplayString(o.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),kn=re(yn,[["__scopeId","data-v-81e37239"]]),Vn={class:"cell-image"},Nn=["src"],wn={key:1,class:"image-placeholder"},Cn=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{}},setup(o){const i=o,t=e.computed(()=>{const s=i.value||"";return s?s.includes("{")?i.designMode?h.evaluateTemplate(s,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(s,i.data?.[0]||{}):s:""}),n=e.ref(!1);function a(){n.value=!0}e.watch(t,()=>{n.value=!1});const d=e.computed(()=>({objectFit:i.fit||"contain",maxWidth:i.maxWidth?`${i.maxWidth}mm`:"100%",maxHeight:i.maxHeight?`${i.maxHeight}mm`:"100%"}));return(s,l)=>(e.openBlock(),e.createElementBlock("div",Vn,[t.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(d.value),onError:a},null,44,Nn)):(e.openBlock(),e.createElementBlock("div",wn,"图片"))]))}}),Sn=re(Cn,[["__scopeId","data-v-d5bc444b"]]),Bn=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],xn=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],$n={key:0,class:"data-placeholder"},Dn={key:3,class:"data-placeholder"},Tn={key:0,class:"col-resize-layer"},Mn=["aria-label","onMousedown"],Pn={key:1,class:"row-badges"},je=3.7795275591,zn=.1,Rn=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-element","dblclick-cell"],setup(o,{emit:i}){const t={header:"题",data:"数",subtotal:"小",summary:"汇"},n=o,a=i,d=e.inject(He,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),s=e.computed(()=>n.element.options.tableRows??[]),l=e.computed(()=>n.element.options.tableColWidths??[]),r=e.computed(()=>n.element.options.tableDefaultFontSize??10),u=e.computed(()=>n.element.options.tableDefaultColor??"#333333"),m=e.computed(()=>{const D=d.tableSelection.value;return D&&D.elementId===n.element.id?D:null});function f(D){let A=0;for(let H=0;H<D;H++)A+=s.value[H].height;return A}const V=e.ref(null),y=e.ref(null),R=e.ref([]);function S(){if(!n.designMode)return;const D=V.value;if(!D)return;const A=D.offsetHeight;if(A<=0)return;const H=n.element.options,ee=A/je;Math.abs(ee-(H.height??0))>zn&&(H.height=Math.round(ee*100)/100);const Y=D.offsetTop;R.value=Array.from(D.rows).map(fe=>({top:(fe.offsetTop-Y)/je,height:fe.offsetHeight/je}))}function g(D){return R.value[D]?.top??f(D)}function p(D){return R.value[D]?.height??s.value[D]?.height??0}e.watch(()=>[n.element.options,n.designMode],()=>S(),{deep:!0,flush:"post"}),e.onMounted(()=>{S(),document.fonts?.ready.then(()=>S())});const $=e.computed(()=>{const D=n.element.options.dataSource;if(D&&Array.isArray(h.DEFAULT_DEMO_DATA[D]))return h.DEFAULT_DEMO_DATA[D];for(const A of Object.values(h.DEFAULT_DEMO_DATA))if(Array.isArray(A))return A}),Z=e.computed(()=>{if(n.data)return n.data});function le(D){return D.cellType==="barcode"||D.cellType==="qrcode"}function F(D,A){return le(A)?h.resolveBarcodeDesignValue(A.formatter,$.value):A.formatter||""}function K(D,A){const H=n.element.options,ee={designMode:n.designMode,showGhostBorder:n.showTableGhostBorder};return{fontFamily:A.fontFamily||"inherit",textAlign:A.align??"left",verticalAlign:A.valign??"middle",fontSize:(A.fontSize??r.value)+"pt",fontWeight:A.fontWeight??"normal",color:A.color??u.value,backgroundColor:A.backgroundColor??"transparent",borderTop:h.resolveCellBorderCss(A.borders?.top,ee),borderRight:h.resolveCellBorderCss(A.borders?.right,ee),borderBottom:h.resolveCellBorderCss(A.borders?.bottom,ee),borderLeft:h.resolveCellBorderCss(A.borders?.left,ee),padding:(A.padding??H.tableDefaultPadding??1)+"mm",whiteSpace:A.wordWrap??!0?"normal":"nowrap",overflow:A.wordWrap??!0?"visible":"hidden"}}function b(D){return h.resolveCellTextFit(D)}function O(D){return b(D)!=="autoHeight"}function q(D){return D.fontSize??r.value}function P(D,A){return h.cellFitCapMm(s.value,D,A,n.element.options.tableDefaultPadding??1)}function k(D,A){return h.cellFitWidthMm(l.value,D,A,n.element.options.tableDefaultPadding??1)}function T(D,A){return{maxHeight:P(A,D)+"mm",overflow:"hidden",...D.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}mt(y,()=>[n.designMode,n.data?.length,l.value.join(","),r.value,n.element.options.tableDefaultPadding,s.value.map(D=>`${D.height}:${D.cells.map(A=>`${A.formatter??""}|${A.fontSize??""}|${A.wordWrap??""}|${A.textFit??""}|${A.colspan??1}`).join("~")}`).join(",")]);function X(D,A){const H=m.value;return{"cell-selected":!!H&&D>=H.r1&&D<=H.r2&&A>=H.c1&&A<=H.c2,"row-data-bg":s.value[D].type==="data"}}const ne=e.ref(null);function ae(D,A){const H=h.normalizeSelection(s.value,D,A);d.setTableSelection({elementId:n.element.id,...H})}function ue(D,A,H){!n.designMode||!n.isSelected||(H.stopPropagation(),H.shiftKey&&m.value?ae({r:m.value.r1,c:m.value.c1},{r:D,c:A}):(ne.value={r:D,c:A},ae({r:D,c:A},{r:D,c:A})),window.addEventListener("mouseup",()=>{ne.value=null},{once:!0}))}function Q(D,A){ne.value&&ae(ne.value,{r:D,c:A})}function c(D,A){n.designMode&&a("dblclick-cell",n.element.id,D,A)}const w=e.reactive({visible:!1,x:0,y:0});function W(D,A,H){if(!n.designMode||!n.isSelected)return;const ee=m.value;ee&&D>=ee.r1&&D<=ee.r2&&A>=ee.c1&&A<=ee.c2||ae({r:D,c:A},{r:D,c:A}),w.x=H.clientX,w.y=H.clientY,w.visible=!0,window.addEventListener("mousedown",()=>{w.visible=!1},{once:!0})}const he=e.computed(()=>{const D=m.value;return D?h.canMergeReason(s.value,D):"未选择单元格"}),pe=e.computed(()=>{const D=m.value;if(!D)return!1;for(let A=D.r1;A<=D.r2;A++)for(let H=D.c1;H<=D.c2;H++){const ee=s.value[A].cells[H];if(!ee.merged&&((ee.rowspan??1)>1||(ee.colspan??1)>1))return!0}return!1});function ce(D){const A=m.value;if(!A)return"未选择单元格";if(A.r1!==A.r2)return"行类型仅支持单行设置";const H=JSON.parse(JSON.stringify(s.value));return h.setRowType(H,A.r1,D)}function ve(){h.syncTableElementSize(n.element.options)}function M(D,A){const H=d.maxTableWidth.value,ee=D.reduce((Y,fe)=>Y+fe,0)+D[A];return ee>H?`插入后表格总宽 ${Math.round(ee*10)/10}mm 超过打印范围宽度 ${H}mm,请先缩小列宽`:null}function N(D,A){const H=m.value;if(!H)return;w.visible=!1;const ee=n.element.options,Y=ee.tableRows,fe=ee.tableColWidths;let L=null;switch(D){case"insert-row-above":h.insertRow(Y,H.r1,"above");break;case"insert-row-below":h.insertRow(Y,H.r2,"below");break;case"delete-row":L=h.deleteRow(Y,H.r1);break;case"insert-col-left":L=M(fe,H.c1),L||h.insertCol(Y,fe,H.c1,"left");break;case"insert-col-right":L=M(fe,H.c2),L||h.insertCol(Y,fe,H.c2,"right");break;case"delete-col":L=h.deleteCol(Y,fe,H.c1);break;case"merge":h.mergeCells(Y,H);break;case"split":h.splitCells(Y,H);break;case"set-row-type":L=h.setRowType(Y,H.r1,A);break}if(L){alert(L);return}d.setTableSelection(null),ve(),d.recordHistory()}const C=e.computed(()=>n.designMode&&!!n.isSelected&&!n.element.options.locked&&l.value.length>=1),U=e.computed(()=>Array.from({length:l.value.length},(D,A)=>A+1));function v(D){return l.value.slice(0,D).reduce((A,H)=>A+H,0)}const E=e.ref(null);let B=0,j=0;function _(D,A){C.value&&A.button===0&&(E.value=D,B=A.clientX,j=l.value[D-1],document.addEventListener("mousemove",oe),document.addEventListener("mouseup",me))}function oe(D){if(E.value===null)return;const A=n.scale||1,H=(D.clientX-B)/(A*je),ee=E.value-1,Y=n.element.options.tableColWidths;Y[ee]=h.clampResizedColumnWidth(Y,ee,j+H,d.maxTableWidth.value),ve()}function me(){document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",me),E.value!==null&&(E.value=null,ve(),d.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",me)}),(D,A)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:y,class:e.normalizeClass(["print-table",{"design-mode":o.designMode}]),onContextmenu:A[0]||(A[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:V,style:e.normalizeStyle({fontSize:r.value+"pt",color:u.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(H,ee)=>(e.openBlock(),e.createElementBlock("col",{key:ee,style:e.normalizeStyle({width:H+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(H,ee)=>(e.openBlock(),e.createElementBlock("tr",{key:H.id,style:e.normalizeStyle({height:H.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(H.cells,(Y,fe)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:Y.id},[Y.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:Y.rowspan||1,colspan:Y.colspan||1,class:e.normalizeClass(X(ee,fe)),style:e.normalizeStyle(K(H,Y)),onMousedown:e.withModifiers(L=>ue(ee,fe,L),["left"]),onMouseenter:L=>Q(ee,fe),onDblclick:e.withModifiers(L=>c(ee,fe),["stop"]),onContextmenu:e.withModifiers(L=>W(ee,fe,L),["prevent","stop"])},[le(Y)?(e.openBlock(),e.createBlock(kn,{key:0,"cell-type":Y.cellType,value:F(H,Y),"barcode-type":Y.barcodeType,"qr-code-level":Y.qrCodeLevel,"show-text":Y.showBarcodeText!==!1,fit:Y.fit,"max-width":Y.maxWidth,"max-height":Y.maxHeight,"printer-dpi":Y.printerDpi,"target-width-mm":k(fe,Y),"target-height-mm":P(ee,Y),"bar-width":Y.barWidth,"bar-font-size":Y.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):Y.cellType==="image"?(e.openBlock(),e.createBlock(Sn,{key:1,value:Y.formatter||"",fit:Y.fit,"max-width":Y.maxWidth,"max-height":Y.maxHeight,"design-mode":o.designMode,data:Z.value},null,8,["value","fit","max-width","max-height","design-mode","data"])):O(Y)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(T(Y,ee)),"data-fit":b(Y)==="shrink"?"shrink":void 0,"data-fit-base":String(q(Y)),"data-fit-min":String(e.unref(h.resolveShrinkMinFontSize)(Y.shrinkMinFontSize)),"data-fit-mm":P(ee,Y)},[H.type==="data"?(e.openBlock(),e.createElementBlock("span",$n,e.toDisplayString(F(H,Y)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(F(H,Y)),1)],64))],12,xn)):H.type==="data"?(e.openBlock(),e.createElementBlock("span",Dn,e.toDisplayString(F(H,Y)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(F(H,Y)),1)],64))],46,Bn))],64))),128))],4))),128))])],4),C.value?(e.openBlock(),e.createElementBlock("div",Tn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(U.value,H=>(e.openBlock(),e.createElementBlock("div",{key:H,class:e.normalizeClass(["col-resize-handle",{dragging:E.value===H}]),role:"separator","aria-label":"列宽手柄"+H,style:e.normalizeStyle({left:v(H)+"mm"}),onMousedown:e.withModifiers(ee=>_(H,ee),["stop","prevent"])},null,46,Mn))),128))])):e.createCommentVNode("",!0),o.designMode&&o.isSelected?(e.openBlock(),e.createElementBlock("div",Pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(H,ee)=>(e.openBlock(),e.createElementBlock("span",{key:H.id,class:"row-badge",style:e.normalizeStyle({top:g(ee)+"mm",height:p(ee)+"mm"})},e.toDisplayString(t[H.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(fn,{visible:w.visible,x:w.x,y:w.y,"can-delete-row":s.value.length>1,"can-delete-col":l.value.length>1,"merge-disabled-reason":he.value,"can-split":pe.value,"current-row-type":m.value?s.value[m.value.r1]?.type??null:null,"row-type-disabled-reason":ce,onAction:N},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),Ln=re(Rn,[["__scopeId","data-v-4531a154"]]),yt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="hline"),n=e.computed(()=>{const a=i.element.options,d=(a.borderWidth||.75)+"pt",s=a.borderStyle||"solid",l=a.borderColor||"#333";return t.value?{width:"100%",height:"0",borderTop:`${d} ${s} ${l}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${d} ${s} ${l}`,boxSizing:"border-box"}});return(a,d)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(n.value)},null,4))}}),kt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="oval"),n=e.computed(()=>{const a=i.element.options;return{width:"100%",height:"100%",borderWidth:(a.borderWidth||1)+"pt",borderStyle:a.borderStyle||"solid",borderColor:a.borderColor||"#333",backgroundColor:a.backgroundColor||"transparent",borderRadius:t.value?"50%":"0",boxSizing:"border-box"}});return(a,d)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(n.value)},null,4))}}),An={class:"print-barcode",ref:"containerRef"},Un=["preserveAspectRatio"],In=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.ref(null),n=e.ref(null),a={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},d=e.computed(()=>a[i.element.options.fit||"contain"]??"xMidYMid meet"),s=e.computed(()=>n.value?{width:n.value.width,height:n.value.height}:{maxWidth:"100%",maxHeight:"100%"});function l(){if(!t.value)return;const u=i.element.options,m=(i.designMode?u.testData||u.formatter:h.resolveTextBinding(u,i.data))||"条码",f=h.barcodeUnitsPerModule(u.barWidth);try{Bt(t.value,m,{format:u.barcodeType||"CODE128",width:f,height:h.BARCODE_BAR_HEIGHT_MODULES*f,displayValue:!u.hideTitle,fontSize:(u.fontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*f,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*f,marginRight:h.BARCODE_QUIET_ZONE_MODULES*f,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*f})}catch{n.value=null;return}const V=r(t.value),y=V?h.resolveBarcodeSize({unitWidth:V.width/f,unitHeight:V.height/f,boxWidthMm:h.barcodeAvailableBoxMm(u.width,u.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(u.height,u.maxHeight),dpi:u.printerDpi,barWidth:u.barWidth}):null;n.value=y?{width:`${y.widthMm}mm`,height:`${y.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function r(u){const m=(u.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return m.length!==4||m.some(f=>!Number.isFinite(f))?null:{width:m[2],height:m[3]}}return e.onMounted(l),e.watch(()=>[i.element.options.formatter,i.element.options.testData,i.element.options.barcodeType,i.element.options.width,i.element.options.height,i.element.options.barWidth,i.element.options.printerDpi,i.element.options.hideTitle,i.element.options.fontSize,i.element.options.maxWidth,i.element.options.maxHeight],l),(u,m)=>(e.openBlock(),e.createElementBlock("div",An,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:t,preserveAspectRatio:d.value,style:e.normalizeStyle(s.value)},null,12,Un))],512))}}),Fn=re(In,[["__scopeId","data-v-6eb95a40"]]),On={class:"print-qrcode"},Hn=["src"],Wn=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.ref(""),n=e.computed(()=>{const d=i.element.options;return{objectFit:d.fit||"contain",maxWidth:d.maxWidth?`${d.maxWidth}mm`:"100%",maxHeight:d.maxHeight?`${d.maxHeight}mm`:"100%"}});async function a(){const d=i.element.options,s=(i.designMode?d.testData||d.formatter:h.resolveTextBinding(d,i.data))||"二维码",l=Math.min(d.width||80,d.height||80);try{t.value=await xt.toDataURL(s,{width:l,margin:1,errorCorrectionLevel:String(d.qrCodeLevel??"M")})}catch{t.value=""}}return e.onMounted(a),e.watch(()=>[i.element.options.formatter,i.element.options.testData,i.element.options.qrCodeLevel],a),(d,s)=>(e.openBlock(),e.createElementBlock("div",On,[t.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,alt:"qrcode",style:e.normalizeStyle(n.value)},null,12,Hn)):e.createCommentVNode("",!0)]))}}),Gn=re(Wn,[["__scopeId","data-v-3454544f"]]),Kn=["innerHTML"],qn=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{if(i.element.options.formatter){const n=i.data&&i.data.length>0?i.data[0]:{},a=h.evaluateTemplate(i.element.options.formatter,n??{});return a?It.sanitize(a):""}return'<div style="background:#e0e0e0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:10pt;color:#999">HTML</div>'});return(n,a)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:t.value},null,8,Kn))}}),Yn=re(qn,[["__scopeId","data-v-880bbde5"]]),jn=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>{const a=i.element.options;return{fontSize:(a.fontSize||12)+"pt",fontWeight:a.fontWeight||"normal",fontFamily:a.fontFamily||"inherit",color:a.color||"#333",textAlign:a.textAlign||"left",lineHeight:a.lineHeight?a.lineHeight+"pt":"normal",letterSpacing:a.letterSpacing?a.letterSpacing+"pt":"normal"}}),n=e.computed(()=>i.designMode?i.element.options.title||"{pageIndex}/{totalPages}":i.element.options.title||"");return(a,d)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(t.value)},e.toDisplayString(n.value),5))}}),Xn=re(jn,[["__scopeId","data-v-38f1d7df"]]),Zn={key:0,class:"drag-preview"},Jn={key:1,class:"resize-handles"},Qn=["onMousedown"],_n={key:2,class:"selected-indicator"},el={class:"position-label"},tl=e.defineComponent({__name:"BaseElement",props:{element:{},isSelected:{type:Boolean},designMode:{type:Boolean},printData:{},scale:{},allElements:{},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},zone:{},adsorbHandler:{type:Function},clearAdsorbGuides:{type:Function}},emits:["select","update:element","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","clone-element"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(null),d=e.inject($t,null),s=e.computed(()=>d?.value?d.value.has(t.element.id):t.isSelected??!1),l=e.inject(Dt,null),r=e.computed(()=>l?.value.has(t.element.id)??!1),u={text:e.markRaw(nn),image:e.markRaw(dn),longText:e.markRaw(un),table:e.markRaw(Ln),hline:e.markRaw(yt),vline:e.markRaw(yt),rect:e.markRaw(kt),oval:e.markRaw(kt),barcode:e.markRaw(Fn),qrcode:e.markRaw(Gn),html:e.markRaw(Yn),pageNumber:e.markRaw(Xn)},m=e.computed(()=>u[t.element.printElementType.type]),f=e.computed(()=>t.element.printElementType.type==="table"?{showTableGhostBorder:t.showTableGhostBorder,scale:t.scale}:{}),V=e.computed(()=>{const k=t.element.options;return{position:"absolute",left:k.left+"mm",top:k.top+"mm",width:k.width+"mm",height:k.height+"mm",zIndex:k.zIndex||"auto"}}),y=e.computed(()=>{const k=t.element.options;return`x:${Math.round(k.left)} y:${Math.round(k.top)} ${Math.round(k.width)}×${Math.round(k.height)}mm`});let R=0,S=0;const g=e.reactive({disabled:!t.designMode||!!t.element.options.locked,getScale:()=>(t.scale||1)*h.mmToPx(1),onDrag:k=>{const T=k.left-R,X=k.top-S;a.value&&(a.value.style.transform=`translate(${T}mm, ${X}mm)`)},onDragEnd:(k,T)=>{if(T.altKey){const ae=JSON.parse(JSON.stringify(t.element));ae.id=h.generateId(),ae.options.left=k.left,ae.options.top=k.top,ae.options.groupId=void 0,n("clone-element",ae,{left:k.left,top:k.top}),a.value&&(a.value.style.transform="");return}const X=k.left-R,ne=k.top-S;if(t.element.options.left=k.left,t.element.options.top=k.top,a.value&&(a.value.style.transform=""),t.element.options.groupId&&t.allElements)for(const ae of t.allElements)ae.id!==t.element.id&&ae.options.groupId===t.element.options.groupId&&(ae.options.left+=X,ae.options.top+=ne)},onStart:()=>{R=t.element.options.left,S=t.element.options.top,n("select",t.element.id,!1),n("drag-start")},onStop:()=>{t.clearAdsorbGuides?.(),n("drag-stop")},onAdsorb:k=>{let T=k.left,X=k.top;return t.snapToGrid&&(T=Math.round(k.left/5)*5,X=Math.round(k.top/5)*5),t.adsorbHandler?t.adsorbHandler({id:t.element.id,left:T,top:X,width:t.element.options.width,height:t.element.options.height}):{left:T,top:X,lines:[]}}}),{setup:p,cleanup:$,isDragging:Z}=_o(a,g);e.watchEffect(()=>{g.disabled=!t.designMode||!!t.element.options.locked});const le=e.computed(()=>s.value&&!!t.designMode&&!t.element.options.locked&&t.element.printElementType.type!=="table"),{startResize:F,cleanup:K}=h.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(t.scale||1)*h.mmToPx(1),getRect:()=>({left:t.element.options.left,top:t.element.options.top,width:t.element.options.width,height:t.element.options.height}),onResize:k=>{t.element.options.left=k.left,t.element.options.top=k.top,t.element.options.width=k.width,t.element.options.height=k.height},onStart:()=>{n("drag-start")},onStop:()=>{n("drag-stop")}});function b(k){t.designMode&&k.button===0&&n("select",t.element.id,k.ctrlKey||k.metaKey)}function O(){t.designMode&&n("dblclick-element",t.element.id)}function q(k,T,X){t.designMode&&n("dblclick-cell",k,T,X)}e.onMounted(()=>{t.designMode&&p()});function P(){$(),K(),t.clearAdsorbGuides?.()}return e.onUnmounted(()=>{P()}),(k,T)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:a,class:e.normalizeClass(["print-element",{selected:s.value,previewed:r.value,"design-mode":o.designMode,locked:o.element.options.locked,hidden:o.element.options.visible===!1,"drag-ghost":e.unref(Z),[`type-${o.element.printElementType.type}`]:!0,[`zone-${o.zone||"content"}`]:!0}]),style:e.normalizeStyle(V.value),onMousedown:e.withModifiers(b,["stop"]),onDblclick:e.withModifiers(O,["stop"]),onContextmenu:T[0]||(T[0]=e.withModifiers(X=>k.$emit("contextmenu",o.element.id,X),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m.value),e.mergeProps({element:o.element,data:o.printData,"design-mode":o.designMode,"is-selected":s.value},f.value,{onDblclickCell:q}),null,16,["element","data","design-mode","is-selected"])),e.unref(Z)?(e.openBlock(),e.createElementBlock("div",Zn)):e.createCommentVNode("",!0),le.value?(e.openBlock(),e.createElementBlock("div",Jn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.RESIZE_POINTS),X=>(e.openBlock(),e.createElementBlock("div",{key:X,class:e.normalizeClass(["resize-handle",`handle-${X}`]),onMousedown:e.withModifiers(ne=>e.unref(F)(X,ne),["stop"])},null,42,Qn))),128))])):e.createCommentVNode("",!0),s.value&&o.designMode?(e.openBlock(),e.createElementBlock("div",_n,[e.createElementVNode("div",el,e.toDisplayString(y.value),1)])):e.createCommentVNode("",!0)],38))}}),it=re(tl,[["__scopeId","data-v-45a5eb4c"]]);function ol(o={}){const i=e.ref([]),t=e.ref({width:0,height:0});function n(s,l,r){return h.computeAdsorb(s,l,r,o)}function a(s,l,r){i.value=s,t.value={width:l,height:r}}function d(){i.value=[]}return{check:n,renderLines:a,clearLines:d,guideLines:i,paperSize:t}}function nl(o){const{check:i,renderLines:t,clearLines:n,guideLines:a,paperSize:d}=ol(o.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function s(r){const u=o.getElements().filter(V=>V.id!==r.id).map(V=>({id:V.id,left:V.options.left,top:V.options.top,width:V.options.width,height:V.options.height})),m=i(r,u,o.getGuides?.()),f=o.getPaperSize();return t(m.lines,f.width,f.height),m}function l(){n()}return{requestAdsorb:s,clearGuides:l,guideLines:a,paperSize:d}}const ll=["src"],al=["width","height","viewBox"],il=["x","y","font-size","fill","transform"],sl={key:0,class:"zone-label"},rl={key:0,class:"zone-height-tip"},dl={key:0,class:"zone-label"},cl={key:0,class:"zone-height-tip"},ul=["onMousedown","onDblclick"],ml=e.defineComponent({__name:"CanvasPaper",props:{templateData:{},runtimeElements:{},designMode:{type:Boolean},printData:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},guides:{}},emits:["select","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","zone-height-change","zone-height-commit","guide-move","guide-remove","clone-element"],setup(o,{expose:i,emit:t}){const n=o,a=t,d=e.ref(null),s=e.computed(()=>h.getPaperDimensions(n.templateData).width),l=e.computed(()=>h.getPaperDimensions(n.templateData).height),r=e.computed(()=>n.templateData.designBackground),u=e.ref(!1);e.watch(()=>r.value?.src,()=>{u.value=!1});const m=e.computed(()=>{const N=r.value?.rotation;return N===90||N===180||N===270?N:0}),f=e.computed(()=>{const N=m.value,C=N===90||N===270,U=C?l.value:s.value,v=C?s.value:l.value,E={width:U+"mm",height:v+"mm",left:(s.value-U)/2+"mm",top:(l.value-v)/2+"mm"};return N!==0&&(E.transform=`rotate(${N}deg)`),E});function V(){u.value=!0,console.warn("[print-designer] 设计背景图加载失败:",r.value?.src)}const y=e.computed(()=>`${8/(n.scale||1)}px`),R=e.computed(()=>{const N=n.scale||1,C=h.mmToPx(s.value)*N,U=h.mmToPx(l.value)*N;return{width:C+"px",height:U+"px",position:"relative"}}),S=e.computed(()=>{const N=n.templateData.margins,C=n.templateData.header.height,U=n.templateData.footer.height,v=s.value-N.left-N.right;return{header:{left:N.left,top:N.top,width:v,height:C},content:{left:N.left,top:N.top+C,width:v,height:l.value-N.top-N.bottom-C-U},footer:{left:N.left,top:l.value-N.bottom-U,width:v,height:U}}});function g(N){return{position:"absolute",left:N.left+"mm",top:N.top+"mm",width:N.width+"mm",height:N.height+"mm"}}const p=e.computed(()=>{const N={header:[],footer:[],content:[]};for(const C of n.runtimeElements)C.zone==="header"?N.header.push(C):C.zone==="footer"?N.footer.push(C):N.content.push(C);return N}),$=e.computed(()=>p.value.header),Z=e.computed(()=>p.value.footer),le=e.computed(()=>p.value.content);let F="content";const{requestAdsorb:K,clearGuides:b,guideLines:O,paperSize:q}=nl({getElements:()=>p.value[F],getPaperSize:()=>{const N=S.value[F];return{width:N.width,height:N.height}},getGuides:()=>{const N=[],C=[];for(const U of n.guides??[])U.type==="vertical"?N.push(U.position):C.push(U.position);return{vertical:N,horizontal:C}}});function P(N){F=n.runtimeElements.find(v=>v.id===N.id)?.zone||"content";const U=K(N);return(U.left!==N.left||U.top!==N.top)&&c(U.left+N.width/2,U.top+N.height/2),U}function k(N,C){if(N.button!==0)return;const U=C.position,v=N.clientX,E=N.clientY,B=n.scale??1,j=25.4/96,_=me=>{const D=(C.type==="vertical"?me.clientX-v:me.clientY-E)/B*j,A=C.type==="vertical"?s.value:l.value,H=Math.min(Math.max(U+D,0),A);a("guide-move",C.id,H)},oe=()=>{window.removeEventListener("mousemove",_),window.removeEventListener("mouseup",oe)};window.addEventListener("mousemove",_),window.addEventListener("mouseup",oe)}const T=e.computed(()=>({width:s.value+"mm",minHeight:l.value+"mm",background:n.templateData.pageBackground||"var(--pd-paper, #fff)",boxShadow:"var(--pd-shadow-paper, 0 1px 2px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.08))",overflow:"hidden",position:"relative",transform:n.scale?`scale(${n.scale})`:void 0,transformOrigin:"0 0"})),X=e.computed(()=>{const N=n.templateData.margins;return{padding:`${N.top}mm ${N.right}mm ${N.bottom}mm ${N.left}mm`,position:"relative",boxSizing:"border-box",minHeight:l.value+"mm"}}),ne=e.computed(()=>({backgroundImage:`url("data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><path d="M0 .5H20M.5 0V20" fill="none" stroke="rgba(0,0,0,0.08)" stroke-width="1" stroke-dasharray="4 4"/></svg>')}")`,backgroundSize:"5mm 5mm",backgroundPosition:"0 0"}));let ae=0,ue=null;const Q=e.ref(null);function c(N,C){ae+=1,Q.value={left:N,top:C,key:ae},ue&&clearTimeout(ue),ue=setTimeout(()=>{Q.value=null},300)}const w=e.computed(()=>ge.resolveWatermarkLayout(n.templateData.watermark,n.printData,{width:s.value,height:l.value})),W=e.ref(null);function he(N,C){C.button===0&&(ve(),W.value={zone:N,startY:C.clientY,startH:n.templateData[N].height},window.addEventListener("mousemove",pe),window.addEventListener("mouseup",ce))}function pe(N){if(!W.value)return;const{zone:C,startY:U,startH:v}=W.value,B=(N.clientY-U)/(n.scale||1)*25.4/96,j=C==="header"?B:-B,_=Math.min(100,l.value-n.templateData.margins.top-n.templateData.margins.bottom-(C==="header"?n.templateData.footer.height:n.templateData.header.height)-10),oe=Math.min(_,Math.max(0,Math.round((v+j)*10)/10));a("zone-height-change",C,oe)}function ce(){if(!W.value)return;const N=W.value.zone;W.value=null,window.removeEventListener("mousemove",pe),window.removeEventListener("mouseup",ce),a("zone-height-commit",N)}function ve(){window.removeEventListener("mousemove",pe),window.removeEventListener("mouseup",ce),W.value=null}e.onUnmounted(()=>{ve(),ue&&clearTimeout(ue)});function M(N,C){a("select",N,C)}return i({contentRef:d}),(N,C)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(R.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(T.value)},[o.designMode&&r.value?.src&&!u.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(f.value)},[e.createElementVNode("img",{src:r.value.src,draggable:"false",alt:"",onError:V},null,40,ll)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:d,style:e.normalizeStyle(X.value)},[o.showGrid&&o.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle(ne.value)},null,4)):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",{key:Q.value.key,class:"snap-indicator",style:e.normalizeStyle({left:Q.value.left+"mm",top:Q.value.top+"mm"})},null,4)):e.createCommentVNode("",!0),w.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(w.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.tiles,(U,v)=>(e.openBlock(),e.createElementBlock("svg",{key:v,class:"watermark-tile",width:U.widthMm+"mm",height:U.heightMm+"mm",viewBox:`0 0 ${w.value.tileWidthPx} ${w.value.tileHeightPx}`,style:e.normalizeStyle({left:U.leftMm+"mm",top:U.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:w.value.tileWidthPx/2,y:w.value.tileHeightPx/2,"font-size":w.value.fontSizePx,fill:w.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${w.value.rotate},${w.value.tileWidthPx/2},${w.value.tileHeightPx/2})`},e.toDisplayString(w.value.text),9,il)],12,al))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":o.designMode}]),style:e.normalizeStyle(g(S.value.header))},[o.designMode?(e.openBlock(),e.createElementBlock("span",sl,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,U=>(e.openBlock(),e.createBlock(it,{key:U.id,element:U,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":$.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"header","adsorb-handler":P,"clear-adsorb-guides":e.unref(b),onSelect:M,onDragStart:C[0]||(C[0]=v=>N.$emit("drag-start")),onDragStop:C[1]||(C[1]=v=>N.$emit("drag-stop")),onDblclickElement:C[2]||(C[2]=v=>N.$emit("dblclick-element",v)),onDblclickCell:C[3]||(C[3]=(v,E,B)=>N.$emit("dblclick-cell",v,E,B)),onContextmenu:C[4]||(C[4]=(v,E)=>N.$emit("contextmenu",v,E)),onCloneElement:(v,E)=>N.$emit("clone-element",v,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:C[5]||(C[5]=e.withModifiers(U=>he("header",U),["prevent","stop"]))},[W.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",rl,e.toDisplayString(o.templateData.header.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-content",{"design-mode":o.designMode}]),style:e.normalizeStyle(g(S.value.content))},[o.designMode&&o.templateData.firstPageOverlay.height>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"zone-overlay",style:e.normalizeStyle({height:o.templateData.firstPageOverlay.height+"mm"})},[...C[17]||(C[17]=[e.createElementVNode("span",{class:"zone-label"},"首页叠加",-1)])],4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(le.value,U=>(e.openBlock(),e.createBlock(it,{key:U.id,element:U,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":le.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"content","adsorb-handler":P,"clear-adsorb-guides":e.unref(b),onSelect:M,onDragStart:C[6]||(C[6]=v=>N.$emit("drag-start")),onDragStop:C[7]||(C[7]=v=>N.$emit("drag-stop")),onDblclickElement:C[8]||(C[8]=v=>N.$emit("dblclick-element",v)),onDblclickCell:C[9]||(C[9]=(v,E,B)=>N.$emit("dblclick-cell",v,E,B)),onContextmenu:C[10]||(C[10]=(v,E)=>N.$emit("contextmenu",v,E)),onCloneElement:(v,E)=>N.$emit("clone-element",v,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128))],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-footer",{"design-mode":o.designMode}]),style:e.normalizeStyle(g(S.value.footer))},[o.designMode?(e.openBlock(),e.createElementBlock("span",dl,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value,U=>(e.openBlock(),e.createBlock(it,{key:U.id,element:U,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":Z.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"footer","adsorb-handler":P,"clear-adsorb-guides":e.unref(b),onSelect:M,onDragStart:C[11]||(C[11]=v=>N.$emit("drag-start")),onDragStop:C[12]||(C[12]=v=>N.$emit("drag-stop")),onDblclickElement:C[13]||(C[13]=v=>N.$emit("dblclick-element",v)),onDblclickCell:C[14]||(C[14]=(v,E,B)=>N.$emit("dblclick-cell",v,E,B)),onContextmenu:C[15]||(C[15]=(v,E)=>N.$emit("contextmenu",v,E)),onCloneElement:(v,E)=>N.$emit("clone-element",v,E)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:C[16]||(C[16]=e.withModifiers(U=>he("footer",U),["prevent","stop"]))},[W.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",cl,e.toDisplayString(o.templateData.footer.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(O),(U,v)=>(e.openBlock(),e.createElementBlock("div",{key:v,class:e.normalizeClass(["adsorb-guide",[`guide-${U.type}`]]),style:e.normalizeStyle(U.type==="vertical"?{left:U.position+"mm",top:"0",height:e.unref(q).height+"mm",borderLeftColor:U.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:U.position+"mm",left:"0",width:e.unref(q).width+"mm",borderTopColor:U.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.guides,U=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+U.id,class:e.normalizeClass(["manual-guide",[`guide-${U.type}`]]),style:e.normalizeStyle(U.type==="vertical"?{left:U.position+"mm",top:"0",height:l.value+"mm","--guide-hit":y.value}:{top:U.position+"mm",left:"0",width:s.value+"mm","--guide-hit":y.value}),onMousedown:e.withModifiers(v=>k(v,U),["prevent","stop"]),onDblclick:e.withModifiers(v=>U.id&&a("guide-remove",U.id),["prevent","stop"])},null,46,ul))),128))],4)],4)],4))}}),pl=re(ml,[["__scopeId","data-v-38b3a452"]]),vl=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(o,{emit:i}){const t=o,n=i,a=e.computed(()=>t.orientation==="horizontal"),d=e.computed(()=>a.value?"vertical":"horizontal"),s=e.ref(null),l=e.ref(null),r=e.computed(()=>l.value??t.cursorPx??null),u=e.computed(()=>a.value?{width:t.viewportPx+"px",height:h.RULER_THICKNESS+"px"}:{width:h.RULER_THICKNESS+"px",height:t.viewportPx+"px"});let m=0;function f(){m||(m=requestAnimationFrame(()=>{m=0,V()}))}function V(){const b=s.value;if(!b)return;const O=b.getContext("2d");if(!O)return;const q=window.devicePixelRatio||1,P=Math.max(0,Math.round(t.viewportPx)),k=h.RULER_THICKNESS;b.width=(a.value?P:k)*q,b.height=(a.value?k:P)*q,O.setTransform(q,0,0,q,0,0);const T=getComputedStyle(b),X=T.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",ne=T.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",ae=T.getPropertyValue("--pd-accent").trim()||"#165DFF";O.fillStyle=X,O.fillRect(0,0,a.value?P:k,a.value?k:P);const ue=t.scale>0?t.scale:1,Q=h.mmToPx(1)*ue;if(Q<=0)return;const c=-t.originPx/Q,w=(P-t.originPx)/Q,W=h.chooseMajorStepMM(ue),he=h.buildRulerTicks(c,w,W);y(O,he,Q,ne,!0),y(O,he,Q,ne,!1),R(O,0,ae),R(O,t.paperLengthMM,ae);const pe=r.value;if(pe!==null&&pe>=0&&pe<=P){if(O.strokeStyle=ae,O.lineWidth=1.5,O.beginPath(),a.value){const ce=Math.round(pe)+.5;O.moveTo(ce,0),O.lineTo(ce,k)}else{const ce=Math.round(pe)+.5;O.moveTo(0,ce),O.lineTo(k,ce)}O.stroke()}}function y(b,O,q,P,k){b.strokeStyle=P,b.fillStyle=P,b.globalAlpha=k?.32:1,b.lineWidth=1,b.font="9px ui-monospace, Menlo, monospace",b.textBaseline="top";for(const T of O){if((T.mm<0||T.mm>t.paperLengthMM)!==k)continue;const ne=Math.round(t.originPx+T.mm*q)+.5,ae=T.major?8:4;b.beginPath(),a.value?(b.moveTo(ne,0),b.lineTo(ne,ae)):(b.moveTo(0,ne),b.lineTo(ae,ne)),b.stroke(),T.major&&T.label&&(a.value?b.fillText(T.label,ne+2,11):(b.save(),b.translate(11,ne+2),b.rotate(-Math.PI/2),b.fillText(T.label,0,0),b.restore()))}b.globalAlpha=1}function R(b,O,q){const P=h.mmToPx(1)*(t.scale>0?t.scale:1),k=Math.round(t.originPx+O*P)+.5;k<=0||k>=t.viewportPx||(b.strokeStyle=q,b.globalAlpha=.55,b.lineWidth=1,b.beginPath(),a.value?(b.moveTo(k,0),b.lineTo(k,h.RULER_THICKNESS)):(b.moveTo(0,k),b.lineTo(h.RULER_THICKNESS,k)),b.stroke(),b.globalAlpha=1)}e.watch(()=>[t.viewportPx,t.originPx,t.paperLengthMM,t.scale,t.cursorPx,t.orientation],f),e.onMounted(f),e.onBeforeUnmount(()=>{m&&cancelAnimationFrame(m)});let S=!1;function g(b){const O=s.value;if(!O)return null;const q=O.getBoundingClientRect(),P=a.value?b.clientX-q.left:b.clientY-q.top;if(P<0||P>t.viewportPx)return null;const k=h.mmToPx(1)*(t.scale>0?t.scale:1);return(P-t.originPx)/k}function p(b){b.button===0&&(S=!0,b.preventDefault(),window.addEventListener("mousemove",F),window.addEventListener("mouseup",K),le(b))}function $(b){const O=s.value;if(!O)return;const q=O.getBoundingClientRect();l.value=a.value?b.clientX-q.left:b.clientY-q.top,f()}function Z(){l.value=null,f()}function le(b){const O=g(b);n("guide-dragging",O)}function F(b){S&&le(b)}function K(b){if(!S)return;S=!1,window.removeEventListener("mousemove",F),window.removeEventListener("mouseup",K);const O=g(b);O!==null&&O>=0&&O<=t.paperLengthMM&&n("add-guide",d.value,O),n("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",F),window.removeEventListener("mouseup",K)}),(b,O)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:s,class:e.normalizeClass(["pd-ruler",`is-${o.orientation}`]),style:e.normalizeStyle(u.value),onMousedown:p,onMousemove:$,onMouseleave:Z},null,38))}}),Vt=re(vl,[["__scopeId","data-v-1e7d0633"]]),fl={class:"canvas-scroll"},gl={key:0,class:"overlay-layer"},hl=["src"],Xe=96/25.4,bl=e.defineComponent({__name:"CanvasArea",props:{templateData:{},elements:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},hasClipboard:{type:Boolean},guides:{},overlayVisible:{type:Boolean},screenshotUrl:{},overlayOpacity:{},selectedElementHasGroup:{type:Boolean},showRuler:{type:Boolean,default:!0}},emits:["select","drop-element","drop-field","drag-start","drag-stop","dblclick-element","dblclick-cell","zone-height-change","zone-height-commit","select-all","clear-selection","preview","commit-preview","paste","copy","cut","delete","move-layer","group","ungroup","coordinate","add-guide","guide-move","guide-remove","zoom","clone-element"],setup(o,{expose:i,emit:t}){const n=o,a=t;function d(v,E){a("select",v,E)}const s=e.ref(null),l=e.computed(()=>h.getPaperDimensions(n.templateData).width),r=e.computed(()=>h.getPaperDimensions(n.templateData).height),u=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),m=e.reactive({x:null,y:null}),f=e.reactive({x:0,y:0}),V=e.computed(()=>({transform:`translate(${f.x}px, ${f.y}px)`}));function y(){const v=s.value,E=v?.querySelector(".hiprint-printPaper");if(!v||!E)return;const B=v.getBoundingClientRect(),j=E.getBoundingClientRect(),_=n.scale||1,oe=j.width/h.mmToPx(l.value);u.paperScale=Math.abs(oe-_)<.002?_:oe,u.originX=j.left-B.left-h.RULER_THICKNESS,u.originY=j.top-B.top-h.RULER_THICKNESS,u.viewW=v.clientWidth-h.RULER_THICKNESS,u.viewH=v.clientHeight-h.RULER_THICKNESS}function R(){f.x=s.value?.scrollLeft??0,f.y=s.value?.scrollTop??0,y()}let S=null,g=0;function p(){cancelAnimationFrame(g);const v=performance.now()+220,E=()=>{y(),performance.now()<v&&(g=requestAnimationFrame(E))};g=requestAnimationFrame(E)}const $=e.ref(null);function Z(v,E){$.value=E===null?null:{type:v,mm:E}}const le=e.computed(()=>{const v=$.value,E=s.value?.querySelector(".hiprint-printPaper");if(!v||!E)return{};const B=E.getBoundingClientRect(),j=B.width/h.mmToPx(l.value),_=h.mmToPx(v.mm)*(j>0?j:n.scale||1);return v.type==="vertical"?{left:B.left+_+"px",top:B.top+"px",height:B.height+"px"}:{left:B.left+"px",top:B.top+_+"px",width:B.width+"px"}});function F(v){const E=s.value?.querySelector(".hiprint-printPaper");if(!E)return;const B=E.getBoundingClientRect(),j=n.scale||1,_=h.pxToMm((v.clientX-B.left)/j),oe=h.pxToMm((v.clientY-B.top)/j);if(!(_<0||oe<0))return{x:_,y:oe}}function K(v){const E=F(v),B=v.dataTransfer?.getData("fieldData");if(B)try{const _=JSON.parse(B);a("drop-field",_,E);return}catch{}const j=v.dataTransfer?.getData("elementType");j&&a("drop-element",j,E)}const b=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let O={x:0,y:0};function q(v){return!v||!(v instanceof HTMLElement)?!1:!!(v===s.value||v.classList.contains("canvas-scroll")||v.classList.contains("hiprint-printPaper")||v.classList.contains("hiprint-printPaper-content")||v.classList.contains("zone-layer")||v.classList.contains("grid-bg")||v.classList.contains("watermark-layer"))}function P(v){const E=s.value,B=E?.querySelector(".hiprint-printPaper");if(!E||!B)return;const j=E.getBoundingClientRect();m.x=v.clientX-j.left-h.RULER_THICKNESS,m.y=v.clientY-j.top-h.RULER_THICKNESS;const _=B.getBoundingClientRect(),oe=n.scale||1,me=h.pxToMm((v.clientX-_.left)/oe),D=h.pxToMm((v.clientY-_.top)/oe);if(me<0||D<0){a("coordinate",null);return}a("coordinate",{x:me,y:D})}function k(){a("coordinate",null),m.x=null,m.y=null}function T(v,E,B,j){const _=s.value;if(!_)return;const oe=Math.max(j,Math.round(v)),me=Math.round((n.scale||1)*100);if(oe===me)return;const D=n.scale||1,A=oe/100/D,H=getComputedStyle(_),ee=parseFloat(H.paddingLeft)||0,Y=parseFloat(H.paddingTop)||0,fe=_.scrollLeft+E-ee,L=_.scrollTop+B-Y;a("zoom",oe-me),e.nextTick(()=>{const x=getComputedStyle(_),J=parseFloat(x.paddingLeft)||0,be=parseFloat(x.paddingTop)||0;_.scrollLeft=fe*A-E+J,_.scrollTop=L*A-B+be})}function X(v){if(!(v.ctrlKey||v.metaKey))return;v.preventDefault();const E=s.value;if(!E)return;const B=Math.round((n.scale||1)*100),j=h.nextWheelScale(B,v.deltaY>0?-1:1);if(j===B)return;const _=E.getBoundingClientRect();T(j,v.clientX-_.left,v.clientY-_.top,h.MIN_SCALE_PERCENT)}function ne(v){const E=s.value;if(!E)return;const B=Math.round((n.scale||1)*100),j=h.nextWheelScale(B,v);T(j,E.clientWidth/2,E.clientHeight/2,h.MIN_SCALE_PERCENT)}function ae(v){const E=s.value;if(!E)return;const B=E.querySelector(".hiprint-printPaper"),j=B?.style.transition??"";B&&(B.style.transition="none"),T(v,E.clientWidth/2,E.clientHeight/2,h.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{B&&(B.style.transition=j)})}function ue(v){v.button!==2&&q(v.target)&&(a("clear-selection"),O={x:v.clientX,y:v.clientY},b.visible=!0,b.x=v.clientX,b.y=v.clientY,b.w=0,b.h=0,window.addEventListener("mousemove",c),window.addEventListener("mouseup",w))}function Q(){if(b.w<3||b.h<3)return[];const v=s.value?.querySelector(".hiprint-printPaper");if(!v)return[];const E=v.getBoundingClientRect(),B=n.scale||1,j=b.x<O.x,_=[];for(const oe of n.elements){if(oe.options.visible===!1||oe.options.locked)continue;const me=E.left+oe.options.left*Xe*B,D=E.top+oe.options.top*Xe*B,A=me+oe.options.width*Xe*B,H=D+oe.options.height*Xe*B,ee=me<b.x+b.w&&A>b.x&&D<b.y+b.h&&H>b.y,Y=me>=b.x&&A<=b.x+b.w&&D>=b.y&&H<=b.y+b.h;(j?Y:ee)&&_.push(oe.id)}return _}function c(v){const E=v.clientX-O.x,B=v.clientY-O.y;b.x=E>=0?O.x:v.clientX,b.y=B>=0?O.y:v.clientY,b.w=Math.abs(E),b.h=Math.abs(B),a("preview",Q())}function w(){window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",w);const v=Q();a("preview",v),v.length>0?a("commit-preview"):a("clear-selection"),a("preview",[]),b.visible=!1}const W=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),he=e.ref(null);function pe(v,E){!E&&!q(v.target)||(W.targetId=E??null,W.visible=!0,W.x=v.clientX,W.y=v.clientY,W.flipX=0,W.flipY=0,e.nextTick(()=>{const B=he.value;if(!B)return;const j=B.getBoundingClientRect(),_=4;v.clientX+j.width+_>window.innerWidth&&(W.flipX=-j.width),v.clientY+j.height+_>window.innerHeight&&(W.flipY=-j.height)}),window.removeEventListener("mousedown",ce),setTimeout(()=>{window.addEventListener("mousedown",ce,{once:!0})},0))}function ce(){W.visible=!1,window.removeEventListener("mousedown",ce)}function ve(){W.visible=!1,n.hasClipboard&&a("paste")}function M(){W.visible=!1,a("select-all")}function N(){W.visible=!1,a("clear-selection")}function C(v,E){W.visible=!1,v==="copy"?a("copy"):v==="cut"?a("cut"):v==="paste"?a("paste"):v==="delete"?a("delete"):v==="move-layer"?a("move-layer",E):v==="group"?a("group"):v==="ungroup"&&n.selectedElementHasGroup&&a("ungroup")}e.onMounted(()=>{e.nextTick(y),s.value&&typeof ResizeObserver<"u"&&(S=new ResizeObserver(y),S.observe(s.value))}),e.watch(()=>n.scale,p),e.watch([l,r],()=>e.nextTick(y));function U(){const v=s.value;if(!v)return;let E=0,B=0,j=0;const _=performance.now()+800,oe=()=>{const{scrollWidth:me,scrollHeight:D}=v;if(me===B&&D===j?E++:E=0,B=me,j=D,E>=2||performance.now()>_){const A=v.scrollWidth,H=v.scrollHeight,ee=v.clientWidth,Y=v.clientHeight;v.scrollLeft=Math.max(0,(A-ee)/2),v.scrollTop=Math.max(0,(H-Y)/2);return}requestAnimationFrame(oe)};requestAnimationFrame(oe)}return i({centerScroll:U,fitToWindow:ae,zoomByStep:ne}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",w),S?.disconnect(),cancelAnimationFrame(g)}),(v,E)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:s,class:"canvas-area",onDragover:E[24]||(E[24]=e.withModifiers(()=>{},["prevent"])),onDrop:K,onMousedown:ue,onMousemove:P,onMouseleave:k,onWheel:X,onScroll:R,onContextmenu:e.withModifiers(pe,["prevent"])},[e.createElementVNode("div",fl,[e.createVNode(pl,{"template-data":o.templateData,"runtime-elements":o.elements,"design-mode":!0,"print-data":[],scale:o.scale,"show-grid":o.showGrid,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,guides:o.guides,onSelect:d,onGuideMove:E[0]||(E[0]=(B,j)=>v.$emit("guide-move",B,j)),onGuideRemove:E[1]||(E[1]=B=>v.$emit("guide-remove",B)),onDragStart:E[2]||(E[2]=B=>v.$emit("drag-start")),onDragStop:E[3]||(E[3]=B=>v.$emit("drag-stop")),onDblclickElement:E[4]||(E[4]=B=>v.$emit("dblclick-element",B)),onDblclickCell:E[5]||(E[5]=(B,j,_)=>v.$emit("dblclick-cell",B,j,_)),onContextmenu:E[6]||(E[6]=(B,j)=>pe(j,B)),onZoneHeightChange:E[7]||(E[7]=(B,j)=>v.$emit("zone-height-change",B,j)),onZoneHeightCommit:E[8]||(E[8]=B=>v.$emit("zone-height-commit",B)),onCloneElement:E[9]||(E[9]=(B,j)=>v.$emit("clone-element",B,j))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"]),o.overlayVisible&&o.screenshotUrl?(e.openBlock(),e.createElementBlock("div",gl,[e.createElementVNode("img",{src:o.screenshotUrl,class:"overlay-image",style:e.normalizeStyle({opacity:o.overlayOpacity??.5})},null,12,hl)])):e.createCommentVNode("",!0)]),o.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(V.value)},[E[25]||(E[25]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Vt,{orientation:"horizontal","viewport-px":u.viewW,"origin-px":u.originX,"paper-length-m-m":l.value,scale:u.paperScale,"cursor-px":m.x,onAddGuide:E[10]||(E[10]=(B,j)=>a("add-guide",B,j)),onGuideDragging:E[11]||(E[11]=B=>Z("vertical",B))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Vt,{orientation:"vertical","viewport-px":u.viewH,"origin-px":u.originY,"paper-length-m-m":r.value,scale:u.paperScale,"cursor-px":m.y,onAddGuide:E[12]||(E[12]=(B,j)=>a("add-guide",B,j)),onGuideDragging:E[13]||(E[13]=B=>Z("horizontal",B))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),$.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${$.value.type}`]),style:e.normalizeStyle(le.value)},null,6)):e.createCommentVNode("",!0),b.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:b.x+"px",top:b.y+"px",width:b.w+"px",height:b.h+"px"})},null,4)):e.createCommentVNode("",!0),W.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:he,class:"context-menu",style:e.normalizeStyle({left:W.x+W.flipX+"px",top:W.y+W.flipY+"px"})},[W.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:E[14]||(E[14]=B=>C("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[15]||(E[15]=B=>C("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:E[16]||(E[16]=B=>C("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:E[17]||(E[17]=B=>C("delete"))},"删除"),E[26]||(E[26]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:E[18]||(E[18]=B=>C("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[19]||(E[19]=B=>C("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[20]||(E[20]=B=>C("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:E[21]||(E[21]=B=>C("move-layer","bottom"))},"置底"),E[27]||(E[27]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:E[22]||(E[22]=B=>C("group"))},"编组 Ctrl+G"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.selectedElementHasGroup}]),onClick:E[23]||(E[23]=B=>C("ungroup"))},"取消编组 Ctrl+Shift+G",2)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:ve},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:M},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:N},"取消选择")],64))],4)):e.createCommentVNode("",!0)],544))}}),El=re(bl,[["__scopeId","data-v-b3acf7d7"]]),yl={class:"property-search"},kl=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(o,{emit:i}){const t=e.ref(""),n=i;function a(){n("search",t.value)}return(d,s)=>(e.openBlock(),e.createElementBlock("div",yl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":s[0]||(s[0]=l=>t.value=l),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:a},null,544),[[e.vModelText,t.value]])]))}}),Vl=re(kl,[["__scopeId","data-v-10ab6c84"]]),Nl={class:"group-icon"},wl={class:"group-title"},Cl={class:"expand-icon"},Sl={class:"group-content"},Bl=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(o){const i=o,t=e.ref(i.defaultExpanded??!0),a={Document:"≡",Brush:"◧",Setting:"⚙"}[i.icon]||"•";function d(){t.value=!t.value,s()}function s(){const r=`property-group-${i.groupKey}`;try{localStorage.setItem(r,String(t.value))}catch{}}function l(){const r=`property-group-${i.groupKey}`;try{const u=localStorage.getItem(r);u!==null&&(t.value=u==="true")}catch{}}return e.onMounted(()=>{l()}),(r,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":t.value}])},[e.createElementVNode("div",{class:"group-header",onClick:d},[e.createElementVNode("span",Nl,e.toDisplayString(e.unref(a)),1),e.createElementVNode("span",wl,e.toDisplayString(o.title),1),e.createElementVNode("span",Cl,e.toDisplayString(t.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",Sl,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,t.value]])],2))}}),Ce=re(Bl,[["__scopeId","data-v-2ba57031"]]),xl={class:"pd-stepper"},$l=["disabled"],Dl=["value","placeholder","min","max","step"],Tl=["disabled"],Ml=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,a=e.computed(()=>{const S=String(t.step),g=S.indexOf(".");return g===-1?0:S.length-g-1});function d(S){return Number.isFinite(S)?Number(S.toFixed(a.value)):0}const s=e.computed(()=>{const S=t.modelValue;if(!(S==null||!Number.isFinite(S)))return d(S)}),l=e.ref(s.value===void 0?"":String(s.value));e.watch(s,S=>{l.value=S===void 0?"":String(S)});const r=e.computed(()=>s.value!==void 0?s.value:t.min!==void 0?t.min:0),u=e.computed(()=>t.min!==void 0&&r.value<=t.min),m=e.computed(()=>t.max!==void 0&&r.value>=t.max);function f(S){let g=d(S);return t.min!==void 0&&g<t.min&&(g=t.min),t.max!==void 0&&g>t.max&&(g=t.max),g}function V(S){if(S<0&&u.value||S>0&&m.value)return;const g=f(r.value+S*t.step);l.value=String(g),n("update:modelValue",g)}function y(S){l.value=S.target.value}function R(){const S=l.value.trim();if(S===""){s.value!==void 0&&(l.value=String(s.value));return}const g=Number(S);if(!Number.isFinite(g)){l.value=s.value===void 0?"":String(s.value);return}const p=f(g);l.value=String(p),p!==s.value&&n("update:modelValue",p)}return(S,g)=>(e.openBlock(),e.createElementBlock("div",xl,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:u.value,title:"减小","aria-label":"减小",onClick:g[0]||(g[0]=p=>V(-1))},"−",8,$l),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:l.value,placeholder:o.placeholder,min:o.min,max:o.max,step:o.step,onInput:y,onChange:R,onBlur:R,onKeydown:g[1]||(g[1]=e.withKeys(e.withModifiers(p=>p.target.blur(),["prevent"]),["enter"]))},null,40,Dl),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:m.value,title:"增大","aria-label":"增大",onClick:g[2]||(g[2]=p=>V(1))},"+",8,Tl)]))}}),se=re(Ml,[["__scopeId","data-v-9722a7cf"]]),Pl={class:"position-grid"},zl={class:"pd-field"},Rl={class:"pd-field"},Ll={class:"pd-field"},Al={class:"pd-field"},Ul=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,a)=>(e.openBlock(),e.createBlock(Ce,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:a[4]||(a[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Pl,[e.withDirectives(e.createElementVNode("div",zl,[a[5]||(a[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(se,{modelValue:o.element.options.left,"onUpdate:modelValue":a[0]||(a[0]=d=>o.element.options.left=d),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-left")]]),e.withDirectives(e.createElementVNode("div",Rl,[a[6]||(a[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(se,{modelValue:o.element.options.top,"onUpdate:modelValue":a[1]||(a[1]=d=>o.element.options.top=d),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-top")]]),e.withDirectives(e.createElementVNode("div",Ll,[a[7]||(a[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(se,{modelValue:o.element.options.width,"onUpdate:modelValue":a[2]||(a[2]=d=>o.element.options.width=d),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-width")]]),e.withDirectives(e.createElementVNode("div",Al,[a[8]||(a[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(se,{modelValue:o.element.options.height,"onUpdate:modelValue":a[3]||(a[3]=d=>o.element.options.height=d),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-height")]])])],32)]),_:1}))}}),Il=re(Ul,[["__scopeId","data-v-bc364679"]]),Fl=["aria-expanded","title"],Ol={class:"picker-preview"},Hl={class:"picker-heading"},Wl=["disabled"],Gl={class:"preset-color-grid"},Kl=["title","aria-label","onClick"],ql=e.defineComponent({__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(!1),d=e.ref(),s=e.ref(),l=e.ref(),r=e.ref({}),u=e.ref(0),m=e.ref(0),f=e.ref(0),V=e.ref("#000000"),y=e.ref(!1),R=e.computed(()=>t.modelValue||"#000000"),S=e.computed(()=>t.modelValue?{background:t.modelValue}:{background:"transparent"}),g=e.computed(()=>W(pe(u.value,m.value,f.value))),p=e.computed({get:()=>Math.round(u.value),set:M=>K(ce(M),m.value,f.value)});e.watch(()=>t.modelValue,M=>{if(!M){V.value="";return}F(M)},{immediate:!0});function $(M){V.value=M.toUpperCase(),F(M),n("update:modelValue",M)}function Z(){t.clearable&&n("update:modelValue","")}function le(M){const C=M.target.value.trim();if(!C){t.clearable&&n("update:modelValue","");return}c(C)&&(F(C),n("update:modelValue",w(C)))}function F(M){const N=c(M);if(!N)return;const C=he(N.r,N.g,N.b);u.value=C.h,m.value=C.s,f.value=C.v,V.value=w(M).toUpperCase()}function K(M,N,C){u.value=ce(M),m.value=ve(N),f.value=ve(C),V.value=g.value.toUpperCase(),n("update:modelValue",g.value)}function b(M){M.currentTarget.setPointerCapture(M.pointerId),y.value=!0,P(M)}function O(M){y.value&&P(M)}function q(M){y.value=!1;const N=M.currentTarget;N.hasPointerCapture(M.pointerId)&&N.releasePointerCapture(M.pointerId)}function P(M){const N=l.value;if(!N)return;const C=N.getBoundingClientRect(),U=ve((M.clientX-C.left)/C.width),v=ve(1-(M.clientY-C.top)/C.height);K(u.value,U,v)}function k(M){const N=M.shiftKey?.1:.02;let C=!0;M.key==="ArrowLeft"?K(u.value,m.value-N,f.value):M.key==="ArrowRight"?K(u.value,m.value+N,f.value):M.key==="ArrowUp"?K(u.value,m.value,f.value+N):M.key==="ArrowDown"?K(u.value,m.value,f.value-N):C=!1,C&&M.preventDefault()}function T(){a.value?ne():X()}async function X(){const M=d.value;if(!M)return;t.modelValue&&F(R.value),a.value=!0,await e.nextTick();const N=M.getBoundingClientRect(),C=190,U=s.value?.offsetHeight??216,v=8,E=Math.min(N.left,window.innerWidth-C-v),B=N.bottom+6,j=B+U>window.innerHeight-v?Math.max(v,N.top-U-6):B;r.value={left:`${Math.max(v,E)}px`,top:`${j}px`}}function ne(){a.value=!1}function ae(M){const N=M.target;d.value?.contains(N)||s.value?.contains(N)||ne()}function ue(){a.value&&ne()}function Q(M){M.key==="Escape"&&a.value&&ne()}function c(M){const N=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(M.trim());if(!N)return null;const C=N[1],U=C.length===3?C.split("").map(v=>v+v).join(""):C;return{r:Number.parseInt(U.slice(0,2),16),g:Number.parseInt(U.slice(2,4),16),b:Number.parseInt(U.slice(4,6),16)}}function w(M){const N=c(M);return N?W(N):"#000000"}function W({r:M,g:N,b:C}){return`#${[M,N,C].map(U=>Math.round(ve(U/255)*255).toString(16).padStart(2,"0")).join("")}`}function he(M,N,C){const U=M/255,v=N/255,E=C/255,B=Math.max(U,v,E),j=Math.min(U,v,E),_=B-j;let oe=0;return _!==0&&(B===U?oe=(v-E)/_%6:B===v?oe=(E-U)/_+2:oe=(U-v)/_+4,oe*=60,oe<0&&(oe+=360)),{h:oe,s:B===0?0:_/B,v:B}}function pe(M,N,C){const U=C*N,v=(M%360+360)%360/60,E=U*(1-Math.abs(v%2-1)),[B,j,_]=v<1?[U,E,0]:v<2?[E,U,0]:v<3?[0,U,E]:v<4?[0,E,U]:v<5?[E,0,U]:[U,0,E],oe=C-U;return{r:(B+oe)*255,g:(j+oe)*255,b:(_+oe)*255}}function ce(M){return((Number.isFinite(M)?M:0)%360+360)%360}function ve(M){return Math.min(1,Math.max(0,Number.isFinite(M)?M:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",ae,!0),window.addEventListener("scroll",ue,!0),window.addEventListener("resize",ue),document.addEventListener("keydown",Q)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",ae,!0),window.removeEventListener("scroll",ue,!0),window.removeEventListener("resize",ue),document.removeEventListener("keydown",Q)}),(M,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",{ref_key:"triggerRef",ref:d,type:"button",class:"preset-color-trigger","aria-expanded":a.value,"aria-haspopup":"dialog",title:o.modelValue||"自动",onClick:T},[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(S.value)},null,4)],8,Fl),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[a.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:s,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(r.value),onPointerdown:N[2]||(N[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",Ol,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!o.modelValue}]),style:e.normalizeStyle(o.modelValue?{background:g.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[0]||(N[0]=C=>V.value=C),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:le},null,544),[[e.vModelText,V.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:l,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(u.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:b,onPointermove:O,onPointerup:q,onPointercancel:q,onKeydown:k},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${m.value*100}%`,top:`${(1-f.value)*100}%`,background:g.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[1]||(N[1]=C=>p.value=C),class:"picker-hue",type:"range",min:"0",max:"360",step:"1","aria-label":"色相"},null,512),[[e.vModelText,p.value,void 0,{number:!0}]]),e.createElementVNode("div",Hl,[N[4]||(N[4]=e.createElementVNode("span",null,"常用颜色",-1)),o.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!o.modelValue,title:"清除选中的颜色",onClick:Z},[...N[3]||(N[3]=[e.createElementVNode("svg",{viewBox:"0 0 16 16",width:"12",height:"12","aria-hidden":"true"},[e.createElementVNode("path",{d:"M3 3l10 10M13 3L3 13",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round",fill:"none"})],-1),e.createTextVNode(" 清除 ",-1)])],8,Wl)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Gl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.PRESET_COLORS),C=>(e.openBlock(),e.createElementBlock("button",{key:C,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!o.modelValue&&C.toLowerCase()===o.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:C}),title:C,"aria-label":C,onClick:U=>$(C)},null,14,Kl))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),we=re(ql,[["__scopeId","data-v-12290e7e"]]),Yl={class:"font-select"},jl=["placeholder","aria-expanded","aria-activedescendant","onKeydown"],Xl=["id","aria-selected","onMousedown"],Zl=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"}},emits:["update:model-value"],setup(o,{emit:i}){const t=o,n=i,a=jt(),d=`font-select-list-${e.useId()}`,s=e.ref(null),l=e.ref(R(t.modelValue)),r=e.ref(""),u=e.ref(!1),m=e.ref(-1),f=e.computed(()=>{const q=t.modelValue?.trim();return q?ht(a.value,q)?"":q:""}),V=e.computed(()=>{const q=(t.modelValue??"").trim(),P=(X,ne,ae,ue)=>({kind:X,key:ne,label:ae,value:ue,selected:(ue??"")===q}),k=r.value.trim();if(!k){const X=[P("clear","__clear__",t.placeholder)];f.value&&X.push(P("unknown","__unknown__",`${f.value}(未知)`,f.value));for(const ne of a.value)X.push(P("font",ne.family,bt(ne),ne.family));return X}const T=Xt(a.value,k).map(X=>P("font",X.family,bt(X),X.family));if(!T.length){const X=y(k);T.push(P("free","__free__",`使用「${X}」`,X))}return T});function y(q){const P=Oe(q);return a.value.find(T=>T.label&&Oe(T.label)===P)?.family??q}function R(q){const P=q?.trim();return P?ht(a.value,P)?.label??P:""}const S=e.computed(()=>u.value&&m.value>=0?`${d}-${m.value}`:void 0);function g(){const q=(t.modelValue??"").trim();return V.value.findIndex(P=>(P.value??"")===q)}function p(){u.value||(u.value=!0,r.value="",m.value=g())}function $(){u.value=!0}function Z(){u.value=!0,r.value=l.value,m.value=V.value.length?0:-1}function le(q){if(!u.value){p();return}const P=V.value.length-1;P<0||(m.value=Math.min(Math.max(m.value+q,0),P),F())}function F(){e.nextTick(()=>{s.value?.children[m.value]?.scrollIntoView?.({block:"nearest"})})}function K(){if(!u.value)return;const q=V.value[m.value];if(q){b(q);return}const P=r.value.trim();if(P){const k=y(P);b({value:k})}}function b(q){l.value=R(q.value),r.value="",u.value=!1,m.value=-1,n("update:model-value",q.value)}function O(){u.value=!1,r.value="",m.value=-1,l.value=R(t.modelValue)}return e.watch(()=>t.modelValue,q=>{l.value=R(q)}),(q,P)=>(e.openBlock(),e.createElementBlock("div",Yl,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":P[0]||(P[0]=k=>l.value=k),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:o.placeholder,"aria-expanded":u.value,"aria-controls":d,"aria-activedescendant":S.value,onFocus:p,onClick:$,onInput:Z,onKeydown:[P[1]||(P[1]=e.withKeys(e.withModifiers(k=>le(1),["prevent"]),["down"])),P[2]||(P[2]=e.withKeys(e.withModifiers(k=>le(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(K,["prevent"]),["enter"]),e.withKeys(e.withModifiers(O,["prevent"]),["esc"])],onBlur:O},null,40,jl),[[e.vModelText,l.value]]),u.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:d,ref_key:"listRef",ref:s,class:"font-select-list",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,(k,T)=>(e.openBlock(),e.createElementBlock("li",{id:`${d}-${T}`,key:k.key,class:e.normalizeClass(["font-select-option",{"is-active":T===m.value,"is-muted":k.kind==="unknown"||k.kind==="free"}]),role:"option","aria-selected":k.selected,onMousedown:e.withModifiers(X=>b(k),["prevent"])},e.toDisplayString(k.label),43,Xl))),128))],512)):e.createCommentVNode("",!0)]))}}),Tt=re(Zl,[["__scopeId","data-v-c559b167"]]),Jl={class:"pd-field"},Ql={class:"pd-field"},_l={class:"pd-field"},ea={class:"pd-field"},ta={class:"pd-radio-group",role:"radiogroup"},oa={class:"pd-radio"},na={class:"pd-radio"},la={class:"pd-radio"},aa={class:"pd-field"},ia={class:"pd-radio-group",role:"radiogroup"},sa={class:"pd-radio"},ra={class:"pd-radio"},da={class:"pd-radio"},ca={class:"color-row"},ua={class:"pd-field"},ma={class:"pd-field"},pa={class:"pd-field"},va={class:"pd-field"},fa={class:"pd-field"},ga=["value"],ha={key:0,class:"pd-field"},ba={class:"pd-field"},Ea=["checked"],ya={key:1,class:"pd-empty"},ka=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(s){return i.searching?i.matchedKeys?.has(s)??!0:!0}const n=e.computed(()=>i.element.printElementType.type==="table"),a=e.computed(()=>h.resolveElementTextFit(i.element.printElementType.type||"text",i.element.options));function d(s){i.element.options.textFit=s.target.value}return(s,l)=>(e.openBlock(),e.createBlock(Ce,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:l[15]||(l[15]=e.withModifiers(()=>{},["prevent"]))},[o.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Jl,[l[16]||(l[16]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(Tt,{modelValue:o.element.options.fontFamily,"onUpdate:modelValue":l[0]||(l[0]=r=>o.element.options.fontFamily=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",Ql,[l[17]||(l[17]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(se,{modelValue:o.element.options.fontSize,"onUpdate:modelValue":l[1]||(l[1]=r=>o.element.options.fontSize=r),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",_l,[l[19]||(l[19]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":l[2]||(l[2]=r=>o.element.options.fontWeight=r),style:{width:"100%"}},[...l[18]||(l[18]=[e.createElementVNode("option",{value:"normal"},"正常",-1),e.createElementVNode("option",{value:"bold"},"粗体",-1),e.createElementVNode("option",{value:"bolder"},"更粗",-1),e.createElementVNode("option",{value:"lighter"},"细体",-1)])],512),[[e.vModelSelect,o.element.options.fontWeight]])],512),[[e.vShow,t("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",ea,[l[23]||(l[23]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",ta,[e.createElementVNode("label",oa,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[3]||(l[3]=r=>o.element.options.textAlign=r),value:"left"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),l[20]||(l[20]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",na,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[4]||(l[4]=r=>o.element.options.textAlign=r),value:"center"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),l[21]||(l[21]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",la,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[5]||(l[5]=r=>o.element.options.textAlign=r),value:"right"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),l[22]||(l[22]=e.createElementVNode("span",null,"右",-1))])])],512),[[e.vShow,t("ap-align")]]),e.withDirectives(e.createElementVNode("div",aa,[l[27]||(l[27]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",ia,[e.createElementVNode("label",sa,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[6]||(l[6]=r=>o.element.options.verticalAlign=r),value:"top"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),l[24]||(l[24]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",ra,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[7]||(l[7]=r=>o.element.options.verticalAlign=r),value:"middle"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),l[25]||(l[25]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",da,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":l[8]||(l[8]=r=>o.element.options.verticalAlign=r),value:"bottom"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),l[26]||(l[26]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,t("ap-vertical-align")]]),e.createElementVNode("div",ca,[e.withDirectives(e.createElementVNode("div",ua,[l[28]||(l[28]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(we,{modelValue:o.element.options.color,"onUpdate:modelValue":l[9]||(l[9]=r=>o.element.options.color=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-color")]]),e.withDirectives(e.createElementVNode("div",ma,[l[29]||(l[29]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":l[10]||(l[10]=r=>o.element.options.backgroundColor=r)},null,8,["modelValue"])],512),[[e.vShow,t("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",pa,[l[30]||(l[30]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(se,{modelValue:o.element.options.lineHeight,"onUpdate:modelValue":l[11]||(l[11]=r=>o.element.options.lineHeight=r),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,t("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",va,[l[31]||(l[31]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(se,{modelValue:o.element.options.letterSpacing,"onUpdate:modelValue":l[12]||(l[12]=r=>o.element.options.letterSpacing=r),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,t("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",fa,[l[33]||(l[33]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:a.value,style:{width:"100%"},onChange:d},[...l[32]||(l[32]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,ga)],512),[[e.vShow,t("ap-text-fit")]]),a.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",ha,[l[34]||(l[34]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(se,{"model-value":o.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":l[13]||(l[13]=r=>o.element.options.shrinkMinFontSize=r??void 0)},null,8,["model-value"])],512)),[[e.vShow,t("ap-shrink-min")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",ba,[l[35]||(l[35]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:o.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:l[14]||(l[14]=r=>o.element.options.wordWrap=r.target.checked?void 0:!1)},null,40,Ea)],512),[[e.vShow,t("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),!o.isTextType&&!n.value?(e.openBlock(),e.createElementBlock("p",ya,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),Va=re(ka,[["__scopeId","data-v-ec9e5cb7"]]),Na={class:"pd-field"},wa=["value"],Ca={class:"pd-field"},Sa=["value"],Ba={class:"pd-hint"},xa={class:"pd-field"},$a={class:"pd-field"},Da=["checked"],Ta={class:"pd-field"},Ma={key:1,class:"pd-field"},Pa=["value"],za={key:2,class:"pd-hint"},Ra={key:3,class:"pd-field"},La=["value"],Aa={class:"pd-field"},Ua={class:"pd-field"},Ia=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(o,{emit:i}){const t=o,n=i,a=e.computed(()=>t.element.printElementType.type==="barcode"),d=e.computed(()=>t.element.printElementType.type==="qrcode"),s=e.computed(()=>(t.element.options.barcodeType||"CODE128").toUpperCase()),l=e.computed(()=>t.element.options.printerDpi?String(t.element.options.printerDpi):""),r=e.computed(()=>!!t.element.options.printerDpi),u=e.computed(()=>a.value&&r.value);function m(S){const g=Number(S.target.value);t.element.options.printerDpi=g>0?g:void 0,R()}function f(S){const g=S.target.value;t.element.options.barcodeType=g==="CODE128"?void 0:g,R()}function V(S){t.element.options.fit=S.target.value||void 0,R()}function y(S){return t.searching?t.matchedKeys?.has(S)??!0:!0}function R(){n("change")}return(S,g)=>(e.openBlock(),e.createBlock(Ce,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:g[6]||(g[6]=e.withModifiers(()=>{},["prevent"]))},[a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Na,[g[8]||(g[8]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:s.value,onChange:f},[...g[7]||(g[7]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,wa)],512),[[e.vShow,y("cd-type")]]),e.withDirectives(e.createElementVNode("div",Ca,[g[10]||(g[10]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:l.value,onChange:m},[...g[9]||(g[9]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,Sa)],512),[[e.vShow,y("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",Ba,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,y("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",xa,[g[11]||(g[11]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(se,{"model-value":o.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":g[0]||(g[0]=p=>{o.element.options.barWidth=p,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(u.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,y("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",$a,[g[12]||(g[12]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:o.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:g[1]||(g[1]=p=>{o.element.options.hideTitle=p.target.checked?void 0:!0,R()})},null,40,Da)],512),[[e.vShow,y("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",Ta,[g[13]||(g[13]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(se,{"model-value":o.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":g[2]||(g[2]=p=>{o.element.options.fontSize=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-font-size")]])],64)):d.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ma,[g[15]||(g[15]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(o.element.options.qrCodeLevel??"M"),onChange:g[3]||(g[3]=p=>{o.element.options.qrCodeLevel=p.target.value,R()})},[...g[14]||(g[14]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Pa)],512)),[[e.vShow,y("cd-ec-level")]]):e.createCommentVNode("",!0),g[20]||(g[20]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),a.value?(e.openBlock(),e.createElementBlock("p",za,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),a.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",Ra,[g[17]||(g[17]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:o.element.options.fit||"contain",onChange:V},[...g[16]||(g[16]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,La)],512)),[[e.vShow,y("cd-fit")]]),e.withDirectives(e.createElementVNode("div",Aa,[g[18]||(g[18]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(se,{"model-value":o.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":g[4]||(g[4]=p=>{o.element.options.maxWidth=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",Ua,[g[19]||(g[19]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(se,{"model-value":o.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":g[5]||(g[5]=p=>{o.element.options.maxHeight=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,y("cd-max-height")]])],32)]),_:1}))}}),Fa={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},Oa={class:"pd-dialog-header"},Ha={class:"expression-editor"},Wa={class:"ee-nav"},Ga={class:"ee-nav-tabs"},Ka={class:"ee-content"},qa={class:"ee-content-search"},Ya=["placeholder"],ja={class:"ee-content-list"},Xa={class:"ee-field-group-icon"},Za=["onDblclick"],Ja={class:"ee-field-info"},Qa={class:"ee-item-label"},_a={class:"ee-item-key"},ei={key:0,class:"pd-empty"},ti=["onDblclick"],oi={class:"ee-field-info"},ni={class:"ee-item-label"},li={class:"ee-item-key"},ai={class:"ee-func-group"},ii=["onDblclick"],si={class:"ee-field-info"},ri={class:"ee-item-label"},di={class:"ee-item-key"},ci={class:"ee-func-group"},ui=["onDblclick"],mi={class:"ee-field-info"},pi={class:"ee-item-label"},vi={class:"ee-item-key"},fi={class:"ee-func-group"},gi=["onDblclick"],hi={class:"ee-field-info"},bi={class:"ee-item-label"},Ei={class:"ee-item-key"},yi={class:"ee-editor"},ki={class:"ee-editor-section"},Vi={class:"ee-editor-section"},Ni={class:"pd-dialog-footer"},wi=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(o,{emit:i}){const t=o,n=i,a=e.computed({get:()=>t.modelValue,set:P=>n("update:modelValue",P)}),d=e.ref("field"),s=e.computed(()=>{switch(d.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),l=e.ref(""),r=e.computed(()=>h.filterGroups(h.groupFields(t.fields??[]),l.value));e.watch(a,P=>{P&&(p.value=t.expression||"")});function u(P){const{insideParens:k}=V();O(k?P.fieldKey:`{${P.fieldKey}}`)}function m(P){const{insideParens:k}=V();O(k?P.template.replace(/^\{|\}$/g,""):P.template)}function f(P){const{insideBlock:k}=V(),T=k?P.template:`{${P.template}}`,X=T.indexOf("(")+1;O(T,X)}function V(){const k=$.value?.selectionStart??p.value.length,T=p.value.substring(0,k);let X=!1;const ne=T.lastIndexOf("{");ne!==-1&&!T.slice(ne+1).includes("}")&&(X=!0);let ae=!1;const ue=T.lastIndexOf("(");return ue!==-1&&!T.slice(ue+1).includes(")")&&(ae=!0),{insideBlock:X,insideParens:ae}}const y=e.computed(()=>{if(!l.value.trim())return K;const P=l.value.trim().toLowerCase();return K.filter(k=>k.label.toLowerCase().includes(P)||k.name.toLowerCase().includes(P))}),R=e.computed(()=>{if(!l.value.trim())return Z;const P=l.value.trim().toLowerCase();return Z.filter(k=>k.label.toLowerCase().includes(P)||k.name.toLowerCase().includes(P))}),S=e.computed(()=>{if(!l.value.trim())return le;const P=l.value.trim().toLowerCase();return le.filter(k=>k.label.toLowerCase().includes(P)||k.name.toLowerCase().includes(P))}),g=e.computed(()=>{if(!l.value.trim())return F;const P=l.value.trim().toLowerCase();return F.filter(k=>k.label.toLowerCase().includes(P)||k.name.toLowerCase().includes(P))}),p=e.ref(t.expression||""),$=e.ref(null);e.watch(()=>t.expression,P=>{p.value=P||""});const Z=[{name:"SUM",label:"求和",template:"SUM()"},{name:"AVG",label:"平均值",template:"AVG()"},{name:"COUNT",label:"计数",template:"COUNT()"},{name:"MIN",label:"最小值",template:"MIN()"},{name:"MAX",label:"最大值",template:"MAX()"}],le=[{name:"ADD",label:"相加",template:"ADD()"},{name:"SUB",label:"相减",template:"SUB()"},{name:"MUL",label:"相乘",template:"MUL()"},{name:"DIV",label:"相除",template:"DIV()"},{name:"ROUND",label:"四舍五入",template:"ROUND()"},{name:"ROUNDUP",label:"进一法",template:"ROUNDUP()"},{name:"ROUNDDOWN",label:"去尾法",template:"ROUNDDOWN()"},{name:"ROUNDBANK",label:"四舍六入五成双",template:"ROUNDBANK()"}],F=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],K=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],b=e.computed(()=>{if(!p.value.trim())return"(输入表达式后预览)";try{const P={...h.DEFAULT_DEMO_DATA,...ge.resolveSystemVariables()},k=h.evaluateTemplate(p.value,P);return k==null?"(无法计算)":String(k)}catch{return"(表达式错误)"}});function O(P,k=P.length){const T=$.value;if(!T){p.value+=P;return}const X=T.selectionStart,ne=T.selectionEnd,ae=p.value.substring(0,X),ue=p.value.substring(ne);p.value=ae+P+ue;const Q=X+k;e.nextTick(()=>{T.focus(),T.selectionStart=T.selectionEnd=Q})}function q(){n("update:expression",p.value),a.value=!1}return(P,k)=>a.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:k[7]||(k[7]=e.withKeys(T=>a.value=!1,["esc"]))},[e.createElementVNode("section",Fa,[e.createElementVNode("header",Oa,[k[8]||(k[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:k[0]||(k[0]=T=>a.value=!1)},"×")]),e.createElementVNode("div",Ha,[e.createElementVNode("div",Wa,[k[9]||(k[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",Ga,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="field"}]),onClick:k[1]||(k[1]=T=>d.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="variable"}]),onClick:k[2]||(k[2]=T=>d.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:d.value==="function"}]),onClick:k[3]||(k[3]=T=>d.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",Ka,[e.createElementVNode("div",qa,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":k[4]||(k[4]=T=>l.value=T),placeholder:s.value},null,8,Ya),[[e.vModelText,l.value]])]),e.createElementVNode("div",ja,[d.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,T=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:T.key||"_top"},[T.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":T.isList}])},[e.createElementVNode("span",Xa,e.toDisplayString(T.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(T.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.fields,X=>(e.openBlock(),e.createElementBlock("div",{key:X.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:T.key?"22px":"10px"}),onDblclick:ne=>u(X)},[e.createElementVNode("div",Ja,[e.createElementVNode("span",Qa,e.toDisplayString(X.fieldLabel),1),e.createElementVNode("span",_a,e.toDisplayString(X.fieldKey),1)])],44,Za))),128))],64))),128)),r.value.length===0?(e.openBlock(),e.createElementBlock("p",ei,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),d.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(y.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:X=>m(T)},[e.createElementVNode("div",oi,[e.createElementVNode("span",ni,e.toDisplayString(T.label),1),e.createElementVNode("span",li,e.toDisplayString(T.template),1)])],40,ti))),128)):e.createCommentVNode("",!0),d.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",ai,[k[10]||(k[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:X=>f(T)},[e.createElementVNode("div",si,[e.createElementVNode("span",ri,e.toDisplayString(T.label),1),e.createElementVNode("span",di,e.toDisplayString(T.name)+"()",1)])],40,ii))),128))]),e.createElementVNode("div",ci,[k[11]||(k[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:X=>f(T)},[e.createElementVNode("div",mi,[e.createElementVNode("span",pi,e.toDisplayString(T.label),1),e.createElementVNode("span",vi,e.toDisplayString(T.name)+"()",1)])],40,ui))),128))]),e.createElementVNode("div",fi,[k[12]||(k[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:X=>f(T)},[e.createElementVNode("div",hi,[e.createElementVNode("span",bi,e.toDisplayString(T.label),1),e.createElementVNode("span",Ei,e.toDisplayString(T.name)+"()",1)])],40,gi))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",yi,[e.createElementVNode("div",ki,[k[13]||(k[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:$,"onUpdate:modelValue":k[5]||(k[5]=T=>p.value=T),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,p.value]])]),e.createElementVNode("div",Vi,[k[14]||(k[14]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":b.value==="(表达式错误)"}])},e.toDisplayString(b.value),3)]),k[15]||(k[15]=e.createStaticVNode('<div class="ee-help-section" data-v-3fb017fe><div class="ee-help-title" data-v-3fb017fe>帮助信息</div><div class="ee-help-grid" data-v-3fb017fe><div class="ee-help-card ee-help-field" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>输入方式</div><div class="ee-help-card-content" data-v-3fb017fe> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-3fb017fe> 静态数据直接输入即可,如:供应商名称<br data-v-3fb017fe> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-3fb017fe> 示例:{SUM(supplier.name)}<br data-v-3fb017fe> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>函数使用</div><div class="ee-help-card-content" data-v-3fb017fe> SUM(字段) - 求和<br data-v-3fb017fe> AVG(字段) - 平均值<br data-v-3fb017fe> COUNT(字段) - 计数<br data-v-3fb017fe> IF(条件, 真值, 假值) - 条件判断<br data-v-3fb017fe> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-3fb017fe> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>系统变量</div><div class="ee-help-card-content" data-v-3fb017fe> {pageIndex} - 当前页码<br data-v-3fb017fe> {totalPages} - 总页数<br data-v-3fb017fe> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>示例</div><div class="ee-help-card-content" data-v-3fb017fe> 静态文本:供应商名称<br data-v-3fb017fe> 动态字段:{supplier.name}<br data-v-3fb017fe> 函数调用:{SUM(amount)}<br data-v-3fb017fe> 条件判断:{IF(amount&gt;1000, &quot;大单&quot;, &quot;小单&quot;)}<br data-v-3fb017fe> 运算并修约:{ROUND(qty * price, 2)} </div></div></div></div>',1))])]),e.createElementVNode("footer",Ni,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:k[6]||(k[6]=T=>a.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:q},"确定")])])],32)):e.createCommentVNode("",!0)}}),Je=re(wi,[["__scopeId","data-v-3fb017fe"]]),Ci={class:"pd-field"},Si={class:"pd-label"},Bi=["value","placeholder"],xi=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=i,n=e.ref(!1);function a(){n.value=!0}return(d,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Ci,[e.createElementVNode("span",Si,e.toDisplayString(o.descriptor.label),1),e.createElementVNode("input",{value:o.modelValue,class:"pd-input",placeholder:o.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:s[0]||(s[0]=l=>t("update:modelValue",l.target.value)),onDblclick:a},null,40,Bi)]),e.createVNode(Je,{modelValue:n.value,"onUpdate:modelValue":s[1]||(s[1]=l=>n.value=l),fields:o.fields,expression:o.modelValue,"onUpdate:expression":s[2]||(s[2]=l=>t("update:modelValue",l))},null,8,["modelValue","fields","expression"])],64))}}),$i=re(xi,[["__scopeId","data-v-40a99329"]]),Di={class:"pd-field"},Ti=["value"],Mi=["value"],Pi={class:"pd-field"},zi={class:"pd-field"},Ri={class:"pd-field"},Li={class:"pd-field"},Ai={style:{width:"60px"}},Ui=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(o){const i=o,t=e.inject(He,null),n=e.computed(()=>i.fields.filter(s=>s.fieldType==="list").map(s=>({label:s.fieldLabel,value:s.fieldKey})));function a(s){i.element.options.dataSource=s||void 0,t?.recordHistory()}function d(s,l){if(l===void 0)return;const r=i.element.options.tableColWidths,u=t?.maxTableWidth.value??1/0,m=r.reduce((f,V,y)=>y===s?f:f+V,0);if(m+l>u){const f=Math.max(5,Math.round((u-m)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${u}mm,列${s+1} 已调整为 ${f}mm`),r[s]=f}else r[s]=l;h.syncTableElementSize(i.element.options),t?.recordHistory()}return(s,l)=>(e.openBlock(),e.createBlock(Ce,{title:"表格设置",icon:"Grid","default-expanded":"","group-key":"table-settings"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:l[4]||(l[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Di,[l[5]||(l[5]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:o.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:l[0]||(l[0]=r=>a(r.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>(e.openBlock(),e.createElementBlock("option",{key:r.value,value:r.value},e.toDisplayString(r.label),9,Mi))),128))],40,Ti)]),e.createElementVNode("div",Pi,[l[6]||(l[6]=e.createElementVNode("span",{class:"pd-label"},"默认字号 (pt)",-1)),e.createVNode(se,{modelValue:o.element.options.tableDefaultFontSize,"onUpdate:modelValue":l[1]||(l[1]=r=>o.element.options.tableDefaultFontSize=r),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",zi,[l[7]||(l[7]=e.createElementVNode("span",{class:"pd-label"},"默认文字颜色",-1)),e.createVNode(we,{modelValue:o.element.options.tableDefaultColor,"onUpdate:modelValue":l[2]||(l[2]=r=>o.element.options.tableDefaultColor=r)},null,8,["modelValue"])]),e.createElementVNode("div",Ri,[l[8]||(l[8]=e.createElementVNode("span",{class:"pd-label"},"默认内边距 (mm)",-1)),e.createVNode(se,{modelValue:o.element.options.tableDefaultPadding,"onUpdate:modelValue":l[3]||(l[3]=r=>o.element.options.tableDefaultPadding=r),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",Li,[l[9]||(l[9]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.element.options.tableColWidths,(r,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"col-width-row"},[e.createElementVNode("span",Ai,"列"+e.toDisplayString(u+1),1),e.createVNode(se,{"model-value":r,min:5,max:200,"onUpdate:modelValue":m=>d(u,m)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),Ii=re(Ui,[["__scopeId","data-v-b5fdc7ff"]]),Fi={class:"border-row"},Oi={class:"pd-field"},Hi={class:"pd-field"},Wi={class:"pd-field"},Gi=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,a)=>(e.openBlock(),e.createBlock(Ce,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:a[3]||(a[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Fi,[e.withDirectives(e.createElementVNode("div",Oi,[a[4]||(a[4]=e.createElementVNode("span",{class:"pd-label"},"边框宽度",-1)),e.createVNode(se,{modelValue:o.element.options.borderWidth,"onUpdate:modelValue":a[0]||(a[0]=d=>o.element.options.borderWidth=d),min:0,max:20,step:.25},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",Hi,[a[5]||(a[5]=e.createElementVNode("span",{class:"pd-label"},"边框颜色",-1)),e.createVNode(we,{modelValue:o.element.options.borderColor,"onUpdate:modelValue":a[1]||(a[1]=d=>o.element.options.borderColor=d)},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-color")]])]),e.withDirectives(e.createElementVNode("div",Wi,[a[6]||(a[6]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":a[2]||(a[2]=d=>o.element.options.backgroundColor=d)},null,8,["modelValue"])],512),[[e.vShow,t("bb-bg-color")]])],32)]),_:1}))}}),Ki=re(Gi,[["__scopeId","data-v-e0e6d714"]]),qi={class:"advanced-row"},Yi={class:"pd-field"},ji={class:"pd-field"},Xi={class:"pd-field"},Zi={class:"pd-field"},Ji=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(o){const i=o;function t(n){return i.searching?i.matchedKeys?.has(n)??!0:!0}return(n,a)=>(e.openBlock(),e.createBlock(Ce,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:a[4]||(a[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",qi,[e.withDirectives(e.createElementVNode("div",Yi,[a[5]||(a[5]=e.createElementVNode("span",{class:"pd-label"},"锁定",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":a[0]||(a[0]=d=>o.element.options.locked=d)},null,512),[[e.vModelCheckbox,o.element.options.locked]])],512),[[e.vShow,t("ad-locked")]]),e.withDirectives(e.createElementVNode("div",ji,[a[6]||(a[6]=e.createElementVNode("span",{class:"pd-label"},"每页重复",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":a[1]||(a[1]=d=>o.element.options.fixed=d)},null,512),[[e.vModelCheckbox,o.element.options.fixed]])],512),[[e.vShow,t("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",Xi,[a[7]||(a[7]=e.createElementVNode("span",{class:"pd-label"},"层级",-1)),e.createVNode(se,{modelValue:o.element.options.zIndex,"onUpdate:modelValue":a[2]||(a[2]=d=>o.element.options.zIndex=d),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,t("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",Zi,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:a[3]||(a[3]=d=>n.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,t("ad-delete")]])],32)]),_:1}))}}),Qi=re(Ji,[["__scopeId","data-v-14924be2"]]),_i={key:0,class:"pd-field"},es=["checked"],ts={class:"pd-field"},os=["checked"],ns={class:"pd-field"},ls=["checked"],Nt=e.defineComponent({__name:"PaginationGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const i=o,t=e.computed(()=>i.element.printElementType.type==="table"),n=e.computed({get:()=>i.element.options.tablePagination?.enabled??!0,set:()=>{}});function a(m){i.element.options.tablePagination={enabled:m}}const d=e.computed({get:()=>i.element.options.pagination?.pageable??!0,set:()=>{}}),s=e.computed({get:()=>i.element.options.pagination?.keepWithNext??!1,set:()=>{}});function l(m){i.element.options.pagination={pageable:m,keepWithNext:s.value}}function r(m){i.element.options.pagination={pageable:d.value,keepWithNext:m}}function u(m){return i.searching?i.matchedKeys?.has(m)??!0:!0}return(m,f)=>(e.openBlock(),e.createBlock(Ce,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:f[3]||(f[3]=e.withModifiers(()=>{},["prevent"]))},[t.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",_i,[f[4]||(f[4]=e.createElementVNode("span",{class:"pd-label"},"启用分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:n.value,onChange:f[0]||(f[0]=V=>a(V.target.checked))},null,40,es)],512)),[[e.vShow,u("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",ts,[f[5]||(f[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:d.value,onChange:f[1]||(f[1]=V=>l(V.target.checked))},null,40,os)],512),[[e.vShow,u("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",ns,[f[6]||(f[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:s.value,onChange:f[2]||(f[2]=V=>r(V.target.checked))},null,40,ls)],512),[[e.vShow,u("pg-keep-with-next")]])],64))],32)]),_:1}))}}),as={class:"image-content-upload"},is=["disabled"],ss=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(!1),d=e.inject(dt,e.computed(()=>{})),s=e.computed(()=>t.disabled||a.value||!d.value);async function l(r){const u=r.target,m=u.files?.[0];if(m){if(!m.type.startsWith("image/")){alert("仅支持上传图片文件"),u.value="";return}if(!d.value){alert("图片上传能力未配置"),u.value="";return}a.value=!0;try{const f=await d.value(m);f?n("success",f):alert("图片上传失败")}catch(f){alert(f instanceof Error?f.message:"图片上传失败")}finally{a.value=!1,u.value=""}}}return(r,u)=>(e.openBlock(),e.createElementBlock("div",as,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:s.value}])},[u[0]||(u[0]=e.createElementVNode("svg",{class:"pd-icon",viewBox:"0 0 24 24","aria-hidden":"true"},[e.createElementVNode("path",{fill:"currentColor",d:"M12 3l4 4h-3v7h-2V7H8zm-7 12h14v5H5Z"})],-1)),e.createTextVNode(" "+e.toDisplayString(a.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:s.value,onChange:l},null,40,is)],2),u[1]||(u[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),rs=re(ss,[["__scopeId","data-v-b730e8e6"]]),ds={class:"pd-field"},cs=["value"],us={class:"pd-field"},ms={key:0,class:"pd-field"},ps=["checked"],vs=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(o){const i=o,t=e.inject(He),n=e.computed(()=>i.element.options.tableRows[i.selection.r1]);function a(l){const r=h.setRowType(i.element.options.tableRows,i.selection.r1,l);if(r){alert(r);return}t.recordHistory()}function d(l){l!==void 0&&(n.value.height=l,h.syncTableElementSize(i.element.options),t.recordHistory())}function s(l){h.setHeaderRepeat(i.element.options.tableRows,l),t.recordHistory()}return(l,r)=>(e.openBlock(),e.createBlock(Ce,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:r[2]||(r[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ds,[r[4]||(r[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:n.value.type,class:"pd-select",style:{width:"100%"},onChange:r[0]||(r[0]=u=>a(u.target.value))},[...r[3]||(r[3]=[e.createElementVNode("option",{value:"header"},"标题行",-1),e.createElementVNode("option",{value:"data"},"数据行",-1),e.createElementVNode("option",{value:"subtotal"},"小计行(每页小计)",-1),e.createElementVNode("option",{value:"summary"},"汇总行",-1)])],40,cs)]),e.createElementVNode("div",us,[r[5]||(r[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(se,{"model-value":n.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":d},null,8,["model-value"])]),n.value.type==="header"?(e.openBlock(),e.createElementBlock("div",ms,[r[6]||(r[6]=e.createElementVNode("span",{class:"pd-label",title:"多级表头作为一个结构整体重复,勾选后表头区所有行都会在每页顶部重复"},"表头每页重复",-1)),e.createElementVNode("input",{checked:n.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:r[1]||(r[1]=u=>s(!!u.target.checked))},null,40,ps)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),fs={class:"pd-field"},gs={class:"pd-radio-group",role:"radiogroup"},hs={class:"pd-radio"},bs=["checked"],Es={class:"pd-radio"},ys=["checked"],ks={class:"pd-radio"},Vs=["checked"],Ns={class:"pd-radio"},ws=["checked"],Cs={key:0,class:"pd-field"},Ss=["value"],Bs={key:1,class:"pd-field"},xs=["checked"],$s={key:2,class:"pd-field"},Ds={key:3,class:"pd-hint"},Ts={key:4,class:"pd-field"},Ms={key:5,class:"pd-field"},Ps=["value"],zs={key:6,class:"pd-hint"},Rs={key:7,class:"pd-field"},Ls=["value"],As={key:8,class:"pd-hint"},Us={key:9,class:"pd-field"},Is=["value"],Fs={key:10,class:"pd-field"},Os={key:11,class:"pd-field"},Hs={class:"pd-field"},Ws=["value"],Gs={class:"pd-field"},Ks={class:"pd-radio-group",role:"radiogroup"},qs={class:"pd-radio"},Ys=["checked"],js={class:"pd-radio"},Xs=["checked"],Zs={class:"pd-radio"},Js=["checked"],Qs={class:"pd-field"},_s={class:"pd-radio-group",role:"radiogroup"},er={class:"pd-radio"},tr=["checked"],or={class:"pd-radio"},nr=["checked"],lr={class:"pd-radio"},ar=["checked"],ir={class:"cell-style-grid"},sr={class:"pd-field cell-font-field"},rr={class:"pd-field"},dr={class:"pd-field"},cr=["checked"],ur={class:"pd-field"},mr={class:"pd-field"},pr={class:"border-style-row"},vr={style:{width:"112px","flex-shrink":"0"}},fr={class:"pd-button-group border-presets"},gr={class:"pd-checkbox-group"},hr={class:"pd-checkbox"},br={class:"pd-checkbox"},Er={class:"pd-checkbox"},yr={class:"pd-checkbox"},kr={class:"pd-field"},Vr={class:"pd-field"},Nr=["checked"],wr={key:12,class:"pd-field"},Cr=["value"],Sr={key:13,class:"pd-field"},Br={class:"merge-btns"},xr=["disabled","title"],$r=["disabled"],Dr=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(o,{expose:i}){const t=o,n=e.inject(He),a=e.computed(()=>t.element.options.tableRows),d=e.computed(()=>{const Q=h.findMainCell(a.value,t.selection.r1,t.selection.c1);return a.value[Q.r].cells[Q.c]}),s=e.ref(!1),l=e.ref(""),r=e.computed(()=>d.value.cellType==="barcode"),u=e.computed(()=>d.value.cellType==="qrcode"),m=e.computed(()=>d.value.cellType==="image"),f=e.computed(()=>r.value&&!!d.value.printerDpi),V=e.computed(()=>!r.value&&!u.value&&!m.value),y=e.computed(()=>h.resolveCellTextFit(d.value));function R(Q){const c=Q.target.value;F(w=>{w.textFit=c})}function S(Q){F(c=>{c.align=Q})}function g(Q){F(c=>{c.valign=Q})}function p(Q){const c=Number(Q);F(w=>{w.printerDpi=c>0?c:void 0})}function $(Q){F(c=>{c.cellType=Q==="text"?void 0:Q,Q!=="barcode"&&(c.barcodeType=void 0,c.showBarcodeText=void 0,c.printerDpi=void 0),Q!=="qrcode"&&(c.qrCodeLevel=void 0)})}function Z(){l.value=d.value.formatter||"",s.value=!0}function le(Q){F(c=>{c.formatter=Q||void 0})}function F(Q){const c=t.selection;for(let w=c.r1;w<=c.r2;w++)for(let W=c.c1;W<=c.c2;W++){const he=a.value[w].cells[W];he.merged||Q(he)}n.recordHistory()}const K=e.ref("solid"),b=e.ref(.75),O=e.ref("#333333"),q=e.ref([]);function P(){return{width:b.value,style:K.value,color:O.value}}function k(Q){h.applyBorderPreset(a.value,t.selection,Q,P()),n.recordHistory()}function T(Q){const c=Q.target,w=new Set(q.value);c.checked?w.add(c.value):w.delete(c.value),q.value=[...w];const W=P();F(he=>{const pe={...he.borders??{}};for(const ce of["top","right","bottom","left"])w.has(ce)?pe[ce]={...W}:delete pe[ce];he.borders=pe})}const X=e.computed(()=>h.canMergeReason(a.value,t.selection)),ne=e.computed(()=>{const Q=t.selection;for(let c=Q.r1;c<=Q.r2;c++)for(let w=Q.c1;w<=Q.c2;w++){const W=a.value[c].cells[w];if(!W.merged&&((W.rowspan??1)>1||(W.colspan??1)>1))return!0}return!1});function ae(){h.mergeCells(a.value,t.selection),n.recordHistory()}function ue(){h.splitCells(a.value,t.selection),n.recordHistory()}return i({openFormatterEditor:Z}),(Q,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Ce,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:c[43]||(c[43]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",fs,[c[49]||(c[49]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",gs,[e.createElementVNode("label",hs,[e.createElementVNode("input",{type:"radio",value:"text",checked:(d.value.cellType||"text")==="text",onChange:c[0]||(c[0]=w=>$(w.target.value))},null,40,bs),c[45]||(c[45]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",Es,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:d.value.cellType==="barcode",onChange:c[1]||(c[1]=w=>$(w.target.value))},null,40,ys),c[46]||(c[46]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",ks,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:d.value.cellType==="qrcode",onChange:c[2]||(c[2]=w=>$(w.target.value))},null,40,Vs),c[47]||(c[47]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",Ns,[e.createElementVNode("input",{type:"radio",value:"image",checked:d.value.cellType==="image",onChange:c[3]||(c[3]=w=>$(w.target.value))},null,40,ws),c[48]||(c[48]=e.createElementVNode("span",null,"图片",-1))])])]),r.value?(e.openBlock(),e.createElementBlock("div",Cs,[c[51]||(c[51]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:d.value.barcodeType||"CODE128",class:"pd-select",onChange:c[4]||(c[4]=w=>F(W=>{W.barcodeType=w.target.value||void 0}))},[...c[50]||(c[50]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,Ss)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Bs,[c[52]||(c[52]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:d.value.showBarcodeText!==!1,type:"checkbox",class:"pd-switch",onInput:c[5]||(c[5]=w=>F(W=>{W.showBarcodeText=!!w.target.checked}))},null,40,xs)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",$s,[c[53]||(c[53]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(se,{"model-value":d.value.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":c[6]||(c[6]=w=>F(W=>{W.barWidth=w}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",Ds,e.toDisplayString(f.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),1)):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Ts,[c[54]||(c[54]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(se,{"model-value":d.value.barFontSize??10,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":c[7]||(c[7]=w=>F(W=>{W.barFontSize=w??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("div",Ms,[c[56]||(c[56]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{value:d.value.printerDpi?String(d.value.printerDpi):"",class:"pd-select",onChange:c[8]||(c[8]=w=>p(w.target.value))},[...c[55]||(c[55]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,Ps)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",zs,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",Rs,[c[58]||(c[58]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{value:d.value.qrCodeLevel||"M",class:"pd-select",onChange:c[9]||(c[9]=w=>F(W=>{W.qrCodeLevel=w.target.value||void 0}))},[...c[57]||(c[57]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Ls)])):e.createCommentVNode("",!0),r.value?(e.openBlock(),e.createElementBlock("p",As,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),u.value||m.value?(e.openBlock(),e.createElementBlock("div",Us,[c[60]||(c[60]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{value:d.value.fit||"contain",class:"pd-select",onChange:c[10]||(c[10]=w=>F(W=>{W.fit=w.target.value}))},[...c[59]||(c[59]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,Is)])):e.createCommentVNode("",!0),r.value||u.value||m.value?(e.openBlock(),e.createElementBlock("div",Fs,[c[61]||(c[61]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(se,{"model-value":d.value.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":c[11]||(c[11]=w=>F(W=>{W.maxWidth=w??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),r.value||u.value||m.value?(e.openBlock(),e.createElementBlock("div",Os,[c[62]||(c[62]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(se,{"model-value":d.value.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":c[12]||(c[12]=w=>F(W=>{W.maxHeight=w??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Hs,[c[63]||(c[63]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:d.value.formatter||"",class:"pd-input",placeholder:"输入内容,支持 {字段} 表达式",onInput:c[13]||(c[13]=w=>F(W=>{W.formatter=w.target.value||void 0})),onDblclick:Z},null,40,Ws)]),e.createElementVNode("div",Gs,[c[67]||(c[67]=e.createElementVNode("span",{class:"pd-label"},"水平对齐",-1)),e.createElementVNode("div",Ks,[e.createElementVNode("label",qs,[e.createElementVNode("input",{type:"radio",value:"left",checked:d.value.align==="left",onChange:c[14]||(c[14]=w=>S(w.target.value))},null,40,Ys),c[64]||(c[64]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",js,[e.createElementVNode("input",{type:"radio",value:"center",checked:d.value.align==="center",onChange:c[15]||(c[15]=w=>S(w.target.value))},null,40,Xs),c[65]||(c[65]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Zs,[e.createElementVNode("input",{type:"radio",value:"right",checked:d.value.align==="right",onChange:c[16]||(c[16]=w=>S(w.target.value))},null,40,Js),c[66]||(c[66]=e.createElementVNode("span",null,"右",-1))])])]),e.createElementVNode("div",Qs,[c[71]||(c[71]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",_s,[e.createElementVNode("label",er,[e.createElementVNode("input",{type:"radio",value:"top",checked:d.value.valign==="top",onChange:c[17]||(c[17]=w=>g(w.target.value))},null,40,tr),c[68]||(c[68]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",or,[e.createElementVNode("input",{type:"radio",value:"middle",checked:d.value.valign==="middle",onChange:c[18]||(c[18]=w=>g(w.target.value))},null,40,nr),c[69]||(c[69]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",lr,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:d.value.valign==="bottom",onChange:c[19]||(c[19]=w=>g(w.target.value))},null,40,ar),c[70]||(c[70]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",ir,[e.createElementVNode("div",sr,[c[72]||(c[72]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(Tt,{"model-value":d.value.fontFamily,placeholder:"继承默认","onUpdate:modelValue":c[20]||(c[20]=w=>F(W=>{W.fontFamily=w}))},null,8,["model-value"])]),e.createElementVNode("div",rr,[c[73]||(c[73]=e.createElementVNode("span",{class:"pd-label"},"字号 (pt)",-1)),e.createVNode(se,{"model-value":d.value.fontSize,min:5,max:72,placeholder:"默认","onUpdate:modelValue":c[21]||(c[21]=w=>F(W=>{W.fontSize=w??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",dr,[c[74]||(c[74]=e.createElementVNode("span",{class:"pd-label"},"加粗",-1)),e.createElementVNode("input",{checked:d.value.fontWeight==="bold",type:"checkbox",class:"pd-switch",onInput:c[22]||(c[22]=w=>F(W=>{W.fontWeight=w.target.checked?"bold":void 0}))},null,40,cr)]),e.createElementVNode("div",ur,[c[75]||(c[75]=e.createElementVNode("span",{class:"pd-label"},"文字颜色",-1)),e.createVNode(we,{"model-value":d.value.color,"onUpdate:modelValue":c[23]||(c[23]=w=>F(W=>{W.color=w}))},null,8,["model-value"])]),e.createElementVNode("div",mr,[c[76]||(c[76]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(we,{"model-value":d.value.backgroundColor,"onUpdate:modelValue":c[24]||(c[24]=w=>F(W=>{W.backgroundColor=w}))},null,8,["model-value"])])]),c[87]||(c[87]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",pr,[e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":c[25]||(c[25]=w=>K.value=w),style:{width:"90px"}},[...c[77]||(c[77]=[e.createElementVNode("option",{value:"solid"},"实线",-1),e.createElementVNode("option",{value:"dashed"},"虚线",-1),e.createElementVNode("option",{value:"dotted"},"点线",-1),e.createElementVNode("option",{value:"double"},"双线",-1)])],512),[[e.vModelSelect,K.value]]),e.createElementVNode("div",vr,[e.createVNode(se,{modelValue:b.value,"onUpdate:modelValue":c[26]||(c[26]=w=>b.value=w),min:.25,max:5,step:.25},null,8,["modelValue"])]),e.createVNode(we,{modelValue:O.value,"onUpdate:modelValue":c[27]||(c[27]=w=>O.value=w),clearable:!1},null,8,["modelValue"])]),e.createElementVNode("div",fr,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[28]||(c[28]=w=>k("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[29]||(c[29]=w=>k("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[30]||(c[30]=w=>k("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:c[31]||(c[31]=w=>k("none"))},"无")]),e.createElementVNode("div",gr,[e.createElementVNode("label",hr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[32]||(c[32]=w=>q.value=w),value:"top",onChange:c[33]||(c[33]=w=>T(w))},null,544),[[e.vModelCheckbox,q.value]]),c[78]||(c[78]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",br,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[34]||(c[34]=w=>q.value=w),value:"right",onChange:c[35]||(c[35]=w=>T(w))},null,544),[[e.vModelCheckbox,q.value]]),c[79]||(c[79]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Er,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[36]||(c[36]=w=>q.value=w),value:"bottom",onChange:c[37]||(c[37]=w=>T(w))},null,544),[[e.vModelCheckbox,q.value]]),c[80]||(c[80]=e.createElementVNode("span",null,"下",-1))]),e.createElementVNode("label",yr,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":c[38]||(c[38]=w=>q.value=w),value:"left",onChange:c[39]||(c[39]=w=>T(w))},null,544),[[e.vModelCheckbox,q.value]]),c[81]||(c[81]=e.createElementVNode("span",null,"左",-1))])]),e.createElementVNode("div",kr,[c[82]||(c[82]=e.createElementVNode("span",{class:"pd-label"},"内边距 (mm)",-1)),e.createVNode(se,{"model-value":d.value.padding,min:0,max:10,step:.5,placeholder:"默认","onUpdate:modelValue":c[40]||(c[40]=w=>F(W=>{W.padding=w??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",Vr,[c[83]||(c[83]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:d.value.wordWrap??!0,type:"checkbox",class:"pd-switch",onInput:c[41]||(c[41]=w=>F(W=>{W.wordWrap=!!w.target.checked}))},null,40,Nr)]),V.value?(e.openBlock(),e.createElementBlock("div",wr,[c[85]||(c[85]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:y.value,style:{width:"100%"},onChange:R},[...c[84]||(c[84]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Cr)])):e.createCommentVNode("",!0),V.value&&y.value==="shrink"?(e.openBlock(),e.createElementBlock("div",Sr,[c[86]||(c[86]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(se,{"model-value":d.value.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":c[42]||(c[42]=w=>F(W=>{W.shrinkMinFontSize=w??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Br,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!X.value,title:X.value||"",onClick:ae}," 合并单元格 ",8,xr),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!ne.value,onClick:ue},"拆分单元格",8,$r)])],32)]),_:1}),e.createVNode(Je,{modelValue:s.value,"onUpdate:modelValue":c[44]||(c[44]=w=>s.value=w),fields:o.fields,expression:l.value,"onUpdate:expression":le},null,8,["modelValue","fields","expression"])],64))}}),Tr=re(Dr,[["__scopeId","data-v-8a66df60"]]),Mr={class:"watermark-config"},Pr={class:"pd-field"},zr={key:0,class:"pd-field"},Rr={class:"pd-field"},Lr={class:"pd-hint"},Ar={class:"pd-field"},Ur={class:"pd-field"},Ir={class:"pd-hint"},Fr={class:"pd-field"},Or=["value"],Hr={class:"pd-field"},Wr=["min"],Gr={class:"pd-field"},Kr=["min"],qr=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,a=ge.WATERMARK_DENSITY_PRESETS,d=ge.WATERMARK_DEFAULTS.minTileWidth,s=ge.WATERMARK_DEFAULTS.minTileHeight;function l(K){const b=K.trim();return b?/[{}]/.test(b)||/^[A-Za-z_$][\w$]*\s*\(/.test(b)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(b):!1}function r(K){return K?K.mode==="binding"?K.binding??"":K.content??"":""}const u=e.ref(r(t.modelValue)),m=e.ref(t.modelValue?.testData||""),f=e.ref(!1),V=e.ref(t.modelValue?.mode==="binding"?"binding":"fixed"),y=e.reactive({rotate:t.modelValue?.rotate??ge.WATERMARK_DEFAULTS.rotate,color:t.modelValue?.color||ge.WATERMARK_DEFAULTS.color,opacity:t.modelValue?.opacity??ge.WATERMARK_DEFAULTS.opacity,tileWidth:t.modelValue?.tileWidth??ge.WATERMARK_DEFAULTS.tileWidth,tileHeight:t.modelValue?.tileHeight??ge.WATERMARK_DEFAULTS.tileHeight}),R=e.computed(()=>V.value==="binding");e.watch(()=>t.modelValue,K=>{K&&(u.value=r(K),V.value=K.mode==="binding"?"binding":"fixed",m.value=K.testData||"",y.rotate=K.rotate??ge.WATERMARK_DEFAULTS.rotate,y.color=K.color||ge.WATERMARK_DEFAULTS.color,y.opacity=K.opacity??ge.WATERMARK_DEFAULTS.opacity,y.tileWidth=K.tileWidth??ge.WATERMARK_DEFAULTS.tileWidth,y.tileHeight=K.tileHeight??ge.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const S=e.computed({get(){const{tileWidth:K,tileHeight:b}=y;for(const[O,q]of Object.entries(a))if(K===q.width&&b===q.height)return O;return"custom"},set(K){const b=a[K];b&&(y.tileWidth=b.width,y.tileHeight=b.height)}});function g(){V.value=l(u.value)?"binding":"fixed",F()}function p(){g()}function $(){f.value=!0}function Z(K){u.value=K,g()}function le(K){y.color=K,F()}function F(){const K={testData:m.value,rotate:y.rotate,color:y.color,opacity:y.opacity,tileWidth:y.tileWidth,tileHeight:y.tileHeight};n("update:modelValue",V.value==="binding"?{...K,mode:"binding",binding:u.value,content:""}:{...K,mode:"fixed",content:u.value,binding:""})}return(K,b)=>(e.openBlock(),e.createElementBlock("div",Mr,[b[18]||(b[18]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:b[8]||(b[8]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Pr,[b[9]||(b[9]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[0]||(b[0]=O=>u.value=O),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:p,onDblclick:$},null,544),[[e.vModelText,u.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:$},"编辑表达式")]),R.value?(e.openBlock(),e.createElementBlock("div",zr,[b[10]||(b[10]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[1]||(b[1]=O=>m.value=O),placeholder:"表达式取不到值时预览显示",onInput:F},null,544),[[e.vModelText,m.value]])])):e.createCommentVNode("",!0),e.createVNode(Je,{modelValue:f.value,"onUpdate:modelValue":b[2]||(b[2]=O=>f.value=O),fields:o.fields,expression:u.value,"onUpdate:expression":Z},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",Rr,[b[11]||(b[11]=e.createElementVNode("span",{class:"pd-label"},"旋转角度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[3]||(b[3]=O=>y.rotate=O),min:-90,max:90,step:5,onChange:F},null,544),[[e.vModelText,y.rotate,void 0,{number:!0}]]),e.createElementVNode("span",Lr,e.toDisplayString(y.rotate)+"°",1)]),e.createElementVNode("div",Ar,[b[12]||(b[12]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(we,{"model-value":y.color,"onUpdate:modelValue":le},null,8,["model-value"])]),e.createElementVNode("div",Ur,[b[13]||(b[13]=e.createElementVNode("span",{class:"pd-label"},"透明度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[4]||(b[4]=O=>y.opacity=O),min:.05,max:.5,step:.05,onChange:F},null,544),[[e.vModelText,y.opacity,void 0,{number:!0}]]),e.createElementVNode("span",Ir,e.toDisplayString(y.opacity.toFixed(2)),1)]),e.createElementVNode("div",Fr,[b[15]||(b[15]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":b[5]||(b[5]=O=>S.value=O),style:{width:"100%"},onChange:F},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),(O,q)=>(e.openBlock(),e.createElementBlock("option",{key:q,value:q},e.toDisplayString(O.label)+"("+e.toDisplayString(O.width)+"×"+e.toDisplayString(O.height)+")",9,Or))),128)),b[14]||(b[14]=e.createElementVNode("option",{value:"custom"},"自定义",-1))],544),[[e.vModelSelect,S.value]])]),S.value==="custom"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Hr,[b[16]||(b[16]=e.createElementVNode("span",{class:"pd-label"},"瓦片宽",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[6]||(b[6]=O=>y.tileWidth=O),min:e.unref(d),step:10,onChange:F},null,40,Wr),[[e.vModelText,y.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",Gr,[b[17]||(b[17]=e.createElementVNode("span",{class:"pd-label"},"瓦片高",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[7]||(b[7]=O=>y.tileHeight=O),min:e.unref(s),step:10,onChange:F},null,40,Kr),[[e.vModelText,y.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),Yr=re(qr,[["__scopeId","data-v-b55bfc50"]]),jr={class:"design-background-config"},Xr=["title"],Zr={class:"design-background-actions"},Jr=["disabled"],Qr=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(!1),d=e.inject(ct,e.computed(()=>{})),s=e.computed(()=>a.value||!d.value),l=e.computed(()=>t.modelValue?.rotation??0);async function r(f){const V=f.target,y=V.files?.[0];if(y){if(!y.type.startsWith("image/")){alert("仅支持上传图片文件"),V.value="";return}if(!d.value){alert("设计背景上传能力未配置"),V.value="";return}a.value=!0;try{const R=await d.value(y);R?n("update:modelValue",{src:R,rotation:0}):alert("设计背景上传失败")}catch(R){alert(R instanceof Error?R.message:"设计背景上传失败")}finally{a.value=!1,V.value=""}}}function u(){if(!t.modelValue?.src)return;const f=(l.value+90)%360;n("update:modelValue",{src:t.modelValue.src,rotation:f})}function m(){n("update:modelValue",void 0)}return(f,V)=>(e.openBlock(),e.createElementBlock("div",jr,[V[0]||(V[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),V[1]||(V[1]=e.createElementVNode("p",{class:"design-background-tip"},"仅设计器显示,用于套打定位,不会出现在预览和打印中",-1)),o.modelValue?.src?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"design-background-path",title:o.modelValue.src},e.toDisplayString(o.modelValue.src),9,Xr),e.createElementVNode("div",Zr,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:u}," 旋转("+e.toDisplayString(l.value)+"°) ",1),e.createElementVNode("button",{type:"button",class:"pd-button small remove-btn",onClick:m},"移除")])],64)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(["pd-button small upload-label",{disabled:s.value}])},[e.createTextVNode(e.toDisplayString(a.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:s.value,onChange:r},null,40,Jr)],2))]))}}),_r=re(Qr,[["__scopeId","data-v-3f4d2e32"]]),ed={class:"tiling-config","data-test":"tiling-config"},td={class:"pd-field"},od={class:"tiling-switch"},nd=["checked","disabled"],ld={key:0,class:"pd-hint tiling-error"},ad={class:"pd-field"},id=["value"],sd=["value"],rd={key:0,class:"pd-field"},dd={class:"custom-size-grid"},cd={key:1,class:"pd-field"},ud={class:"pd-radio-group",role:"radiogroup"},md={class:"pd-radio"},pd=["checked"],vd={class:"pd-radio"},fd=["checked"],gd={class:"margin-grid"},hd={class:"pd-field"},bd={class:"pd-field"},Ed={class:"pd-field"},yd={class:"pd-field"},kd={class:"pd-field"},Vd={class:"pd-field"},Nd={class:"pd-field"},wd={key:2,class:"pd-hint tiling-summary"},Cd=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(o,{emit:i}){const t=o,n=i,a=Object.keys(h.PAPER_PRESETS).filter(g=>g!=="CUSTOM"&&!h.PAPER_PRESETS[g]?.continuous),d=e.computed(()=>h.isContinuousPaperSize(t.templateData?.paperSize)),s=e.computed(()=>({...ge.TILE_DEFAULTS,...t.modelValue??{},enabled:t.modelValue?.enabled??!1,sheetMargin:{...ge.TILE_DEFAULTS.sheetMargin,...t.modelValue?.sheetMargin??{}}})),l=e.computed(()=>t.templateData?{...t.templateData,tiling:s.value}:void 0),r=e.computed(()=>l.value?ge.validateTiling(l.value):[]),u=e.computed(()=>{const g=l.value;return g?Math.max(ge.computeMaxColumns(g),1):1}),m=e.computed(()=>{const g=l.value;if(!(!g||r.value.length))try{return ge.computeTileLayout(g)}catch{return}}),f=e.computed(()=>{const g=m.value,p=l.value;if(!g||!p)return"";const $=ge.resolveSheetMm(p),Z=s.value.sheetPaperSize==="CUSTOM"?"自定义":s.value.sheetPaperSize??"A4",le=s.value.sheetPaperSize==="CUSTOM"?"":s.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${Z}${le} ${$.width}×${$.height}mm · ${g.columns} 列 × ${g.rows} 行 = 每张 ${g.perSheet} 格`});function V(g){n("update:modelValue",{...s.value,...g})}function y(g,p){V({sheetMargin:{...s.value.sheetMargin,[g]:p??0}})}function R(g){if(g!=="CUSTOM"){V({sheetPaperSize:g});return}const p=l.value,$=p?ge.resolveSheetMm(p):{width:210,height:297};V({sheetPaperSize:"CUSTOM",sheetCustomWidth:s.value.sheetCustomWidth??$.width,sheetCustomHeight:s.value.sheetCustomHeight??$.height})}function S(g){if(!g){V({enabled:!1});return}const p=u.value,$=p>=1?Math.min(ge.TILE_DEFAULTS.columns,p):1;V({...ge.TILE_DEFAULTS,columns:$})}return(g,p)=>(e.openBlock(),e.createElementBlock("div",ed,[p[30]||(p[30]=e.createElementVNode("h3",{class:"pd-divider"},"拼版打印",-1)),p[31]||(p[31]=e.createElementVNode("p",{class:"pd-hint"},"把标签按「列 × 行」铺到一张大纸上批量打印",-1)),e.createElementVNode("div",td,[e.createElementVNode("label",od,[e.createElementVNode("input",{type:"checkbox",checked:s.value.enabled,disabled:d.value,onChange:p[0]||(p[0]=$=>S($.target.checked))},null,40,nd),p[13]||(p[13]=e.createElementVNode("span",null,"启用拼版",-1))]),d.value?(e.openBlock(),e.createElementBlock("p",ld,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),s.value.enabled&&!d.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ad,[p[15]||(p[15]=e.createElementVNode("span",{class:"pd-label"},"目标纸张",-1)),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:s.value.sheetPaperSize??"A4",onChange:p[1]||(p[1]=$=>R($.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),$=>(e.openBlock(),e.createElementBlock("option",{key:$,value:$},e.toDisplayString(e.unref(h.PAPER_PRESETS)[$]?.label??$),9,sd))),128)),p[14]||(p[14]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,id)]),s.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",rd,[p[17]||(p[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",dd,[e.createVNode(se,{"model-value":s.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":p[2]||(p[2]=$=>V({sheetCustomWidth:$}))},null,8,["model-value"]),p[16]||(p[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(se,{"model-value":s.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":p[3]||(p[3]=$=>V({sheetCustomHeight:$}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",cd,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"目标纸方向",-1)),e.createElementVNode("div",ud,[e.createElementVNode("label",md,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(s.value.sheetOrientation??"portrait")==="portrait",onChange:p[4]||(p[4]=$=>V({sheetOrientation:"portrait"}))},null,40,pd),p[18]||(p[18]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",vd,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:s.value.sheetOrientation==="landscape",onChange:p[5]||(p[5]=$=>V({sheetOrientation:"landscape"}))},null,40,fd),p[19]||(p[19]=e.createElementVNode("span",null,"横向",-1))])])])),p[28]||(p[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",gd,[e.createElementVNode("div",hd,[p[21]||(p[21]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":p[6]||(p[6]=$=>y("top",$))},null,8,["model-value"])]),e.createElementVNode("div",bd,[p[22]||(p[22]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":p[7]||(p[7]=$=>y("bottom",$))},null,8,["model-value"])]),e.createElementVNode("div",Ed,[p[23]||(p[23]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":p[8]||(p[8]=$=>y("left",$))},null,8,["model-value"])]),e.createElementVNode("div",yd,[p[24]||(p[24]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(se,{"model-value":s.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":p[9]||(p[9]=$=>y("right",$))},null,8,["model-value"])])]),p[29]||(p[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",kd,[p[25]||(p[25]=e.createElementVNode("span",{class:"pd-label"},"横向间距",-1)),e.createVNode(se,{"model-value":s.value.gapX,min:0,max:50,"onUpdate:modelValue":p[10]||(p[10]=$=>V({gapX:$??0}))},null,8,["model-value"])]),e.createElementVNode("div",Vd,[p[26]||(p[26]=e.createElementVNode("span",{class:"pd-label"},"纵向间距",-1)),e.createVNode(se,{"model-value":s.value.gapY,min:0,max:50,"onUpdate:modelValue":p[11]||(p[11]=$=>V({gapY:$??0}))},null,8,["model-value"])]),e.createElementVNode("div",Nd,[p[27]||(p[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(se,{"model-value":s.value.columns,min:1,max:u.value,"onUpdate:modelValue":p[12]||(p[12]=$=>V({columns:$??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,$=>(e.openBlock(),e.createElementBlock("p",{key:$.code,class:"pd-hint tiling-error"},e.toDisplayString($.message),1))),128)),!r.value.length&&f.value?(e.openBlock(),e.createElementBlock("p",wd,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),Sd=re(Cd,[["__scopeId","data-v-aa278268"]]),Bd={key:0,class:"prop-collapsed"},xd={class:"prop-head"},$d={class:"pd-tabs prop-tabs"},Dd={class:"pd-tab-bar",role:"tablist"},Td={class:"pd-tab-pane",role:"tabpanel"},Md={class:"property-content"},Pd={key:1,class:"pd-empty"},zd={class:"pd-tab-pane",role:"tabpanel"},Rd={class:"pd-field"},Ld=["value"],Ad=["label"],Ud=["value"],Id={key:0,class:"pd-hint"},Fd={key:1,class:"pd-field"},Od={class:"pd-label"},Hd={class:"custom-size-grid"},Wd={key:2,class:"pd-field"},Gd={class:"pd-radio-group",role:"radiogroup"},Kd={class:"pd-radio"},qd=["checked"],Yd={class:"pd-radio"},jd=["checked"],Xd={key:3,class:"pd-field"},Zd={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},Jd={class:"pd-radio"},Qd=["checked"],_d={class:"pd-radio"},ec=["checked"],tc={class:"pd-radio"},oc=["checked"],nc={class:"pd-radio"},lc=["checked"],ac={class:"pd-field"},ic={class:"page-bg-row"},sc={key:5,class:"pd-hint"},rc={class:"margin-grid"},dc={class:"pd-field"},cc={class:"pd-field"},uc={class:"pd-field"},mc={class:"pd-field"},pc={class:"pd-field"},vc={class:"pd-field"},fc={class:"pd-field"},gc=e.defineComponent({__name:"PropertyPanel",props:{element:{},templateData:{},fields:{},activeTab:{},tableSelection:{},recordHistory:{type:Function},collapsed:{type:Boolean},multiPage:{type:Boolean}},emits:["delete-element","update:templateData","update:activeTab","toggle-collapse"],setup(o,{emit:i}){const t=o,n=i,a=e.computed(()=>{const L=[];for(const[x,J]of Object.entries(h.PAPER_PRESETS)){if(t.multiPage&&h.isContinuousPaperSize(x))continue;const be=J.group??"其他";let ke=L.find(Ve=>Ve.group===be);ke||(ke={group:be,items:[]},L.push(ke)),ke.items.push({key:x,label:J.label??x})}return L}),d=e.ref(""),s=e.computed(()=>t.element?["text","longText"].includes(t.element.printElementType.type):!1),l=e.computed(()=>t.element?t.element.printElementType.type==="image":!1),r=e.computed(()=>t.element?["barcode","qrcode"].includes(t.element.printElementType.type):!1),u=e.computed(()=>!t.element||t.element.printElementType.type!=="table"?!1:!!t.tableSelection&&t.tableSelection.elementId===t.element.id),m=e.computed(()=>t.element?t.element.printElementType.type==="table":!1),f=e.computed(()=>h.searchProperties(d.value)),V=e.computed(()=>f.value.groups),y=e.computed(()=>f.value.itemKeys),R=e.computed(()=>!!d.value.trim()),S=e.computed(()=>{if(!t.element)return[];if(t.element.printElementType.type==="table"&&t.tableSelection){const{r1:L,c1:x}=t.tableSelection,J=t.element.options.tableRows;if(J&&J[L]){const be=J[L],ke=t.element.options.fields?.[0]?.dataSource;return h.getTableCellBindings(be.type,L,x,ke)}}return h.getElementBindings(t.element)});function g(L){return L.split(".").flatMap(x=>{const J=x.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!J)return[x];const be=J[1],ke=[...J[2].matchAll(/\[(\d+)\]/g)].map(Ve=>Number(Ve[1]));return[be,...ke]})}function p(L){return t.element?g(L).reduce((be,ke)=>be==null?"":be[ke],t.element)??"":""}function $(L,x){if(!t.element)return;const J=g(L),be=J.pop(),ke=J.reduce((Ve,xe)=>((Ve[xe]===void 0||Ve[xe]===null)&&(Ve[xe]={}),Ve[xe]),t.element);ke[be]=x||void 0,t.recordHistory?.()}function Z(L){d.value=L}function le(L){t.element&&$("options.src",L)}const F=e.computed(()=>t.templateData?.paperSize||"A4"),K=e.computed(()=>!t.multiPage&&h.isContinuousPaperSize(F.value)),b=e.computed(()=>h.isLabelPaperSize(F.value)),O=e.computed(()=>t.templateData?.orientation||"portrait"),q=e.computed(()=>!!t.templateData?.tiling?.enabled),P=e.computed(()=>t.templateData?.outputRotation??0),k=e.computed({get:()=>t.templateData?.pageBackground||"#ffffff",set:L=>v(L)}),T=e.computed(()=>t.templateData?.margins.top??10),X=e.computed(()=>t.templateData?.margins.bottom??10),ne=e.computed(()=>t.templateData?.margins.left??10),ae=e.computed(()=>t.templateData?.margins.right??10),ue=e.computed(()=>t.templateData?.header.height??10),Q=e.computed(()=>t.templateData?.footer.height??10),c=e.computed(()=>t.templateData?.firstPageOverlay.height??0),w=e.computed(()=>t.templateData?.customWidth??h.PAPER_PRESETS[F.value]?.width??210),W=e.computed(()=>t.templateData?.customHeight??297),he=e.computed(()=>t.templateData?.designBackground);function pe(L){if(t.templateData){if(!L){const x={...t.templateData};delete x.designBackground,n("update:templateData",x);return}M({designBackground:L})}}const ce=e.computed(()=>t.templateData?.watermark??{});function ve(L){M({watermark:L})}function M(L){if(!t.templateData)return;const x={...t.templateData,...L};n("update:templateData",x)}function N(L){if(t.templateData){if(h.isContinuousPaperSize(L)){M({paperSize:L,customWidth:L==="CONTINUOUS"?t.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...t.templateData.margins,bottom:t.templateData?.margins.bottom??0}});return}if(L==="CUSTOM"){M({paperSize:"CUSTOM"});return}if(h.PAPER_PRESETS[L]){if(h.isLabelPaperSize(L)){M({paperSize:L,...h.labelPaperDefaults(t.templateData)});return}M({paperSize:L})}}}function C(L){M({orientation:String(L)})}function U(L){M({outputRotation:Number(L)})}function v(L){const x=L&&L.toLowerCase()!=="#ffffff"&&L.toLowerCase()!=="#fff"?L:void 0;M(x===void 0?{pageBackground:void 0}:{pageBackground:x})}function E(){M({pageBackground:void 0})}function B(L){L!==void 0&&M({customWidth:L})}function j(L){L!==void 0&&M({customHeight:L})}function _(L){L!==void 0&&M({margins:{...t.templateData.margins,top:L}})}function oe(L){L!==void 0&&M({margins:{...t.templateData.margins,bottom:L}})}function me(L){L!==void 0&&M({margins:{...t.templateData.margins,left:L}})}function D(L){L!==void 0&&M({margins:{...t.templateData.margins,right:L}})}function A(L){L!==void 0&&M({header:{...t.templateData.header,height:L}})}function H(L){L!==void 0&&M({footer:{...t.templateData.footer,height:L}})}function ee(L){L!==void 0&&M({firstPageOverlay:{...t.templateData.firstPageOverlay,height:L}})}const Y=e.computed(()=>t.activeTab||"page");function fe(L){n("update:activeTab",L),n("toggle-collapse")}return(L,x)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",Bd,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:x[0]||(x[0]=J=>fe(Y.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:Y.value==="element"}]),title:"元素属性",onClick:x[1]||(x[1]=J=>fe("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:Y.value==="page"}]),title:"页面属性",onClick:x[2]||(x[2]=J=>fe("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",xd,[x[18]||(x[18]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:x[3]||(x[3]=J=>L.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",$d,[e.createElementVNode("div",Dd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="element"}]),onClick:x[4]||(x[4]=J=>L.$emit("update:activeTab","element"))},"元素属性",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="page"}]),onClick:x[5]||(x[5]=J=>L.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",Td,[o.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Vl,{onSearch:Z}),e.createElementVNode("div",Md,[V.value.includes("position-size")&&!u.value?(e.openBlock(),e.createBlock(Il,{key:0,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("appearance")?(e.openBlock(),e.createBlock(Va,{key:1,element:o.element,"is-text-type":s.value,"matched-keys":y.value,searching:R.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("code")&&r.value?(e.openBlock(),e.createBlock(Ia,{key:2,element:o.element,"matched-keys":y.value,searching:R.value,onChange:x[6]||(x[6]=J=>o.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("binding")?(e.openBlock(),e.createBlock(Ce,{key:3,title:"内容",icon:"Document","default-expanded":"","group-key":"binding"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,J=>(e.openBlock(),e.createBlock($i,{key:J.targetPath,descriptor:J,fields:o.fields,"model-value":p(J.targetPath),"onUpdate:modelValue":be=>$(J.targetPath,be)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),l.value?(e.openBlock(),e.createBlock(rs,{key:0,onSuccess:le})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0),m.value&&o.tableSelection&&o.tableSelection.elementId===o.element.id?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createVNode(vs,{element:o.element,selection:o.tableSelection},null,8,["element","selection"]),e.createVNode(Tr,{element:o.element,selection:o.tableSelection,fields:o.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),m.value&&V.value.includes("content")?(e.openBlock(),e.createBlock(Ii,{key:5,element:o.element,fields:o.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),V.value.includes("border-bg")?(e.openBlock(),e.createBlock(Ki,{key:6,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("pagination")&&m.value?(e.openBlock(),e.createBlock(Nt,{key:7,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("pagination")&&!m.value?(e.openBlock(),e.createBlock(Nt,{key:8,element:o.element,"matched-keys":y.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),V.value.includes("advanced")?(e.openBlock(),e.createBlock(Qi,{key:9,element:o.element,"matched-keys":y.value,searching:R.value,onDeleteElement:x[7]||(x[7]=J=>L.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",Pd,"请在画布中选择一个元素"))],512),[[e.vShow,(o.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",zd,[e.createElementVNode("form",{class:"pd-form",onSubmit:x[17]||(x[17]=e.withModifiers(()=>{},["prevent"]))},[x[40]||(x[40]=e.createElementVNode("h3",{class:"pd-divider"},"纸张设置",-1)),e.createElementVNode("div",Rd,[x[20]||(x[20]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:F.value,class:"pd-select",onChange:x[8]||(x[8]=J=>N(J.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,J=>(e.openBlock(),e.createElementBlock("optgroup",{key:J.group,label:J.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(J.items,be=>(e.openBlock(),e.createElementBlock("option",{key:be.key,value:be.key},e.toDisplayString(be.label),9,Ud))),128))],8,Ad))),128)),x[19]||(x[19]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,Ld)]),b.value?(e.openBlock(),e.createElementBlock("p",Id,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),K.value||F.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Fd,[e.createElementVNode("span",Od,e.toDisplayString(K.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",Hd,[e.createVNode(se,{"model-value":w.value,min:25,max:2e3,"onUpdate:modelValue":B},null,8,["model-value"]),F.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[x[21]||(x[21]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(se,{"model-value":W.value,min:25,max:2e3,"onUpdate:modelValue":j},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),K.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Wd,[x[24]||(x[24]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",Gd,[e.createElementVNode("label",Kd,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:O.value==="portrait",onChange:x[9]||(x[9]=J=>C(J.target.value))},null,40,qd),x[22]||(x[22]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Yd,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:O.value==="landscape",onChange:x[10]||(x[10]=J=>C(J.target.value))},null,40,jd),x[23]||(x[23]=e.createElementVNode("span",null,"横向",-1))])]),x[25]||(x[25]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!K.value&&!q.value?(e.openBlock(),e.createElementBlock("div",Xd,[x[30]||(x[30]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",Zd,[e.createElementVNode("label",Jd,[e.createElementVNode("input",{type:"radio",value:"0",checked:P.value===0,onChange:x[11]||(x[11]=J=>U(J.target.value))},null,40,Qd),x[26]||(x[26]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",_d,[e.createElementVNode("input",{type:"radio",value:"90",checked:P.value===90,onChange:x[12]||(x[12]=J=>U(J.target.value))},null,40,ec),x[27]||(x[27]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",tc,[e.createElementVNode("input",{type:"radio",value:"180",checked:P.value===180,onChange:x[13]||(x[13]=J=>U(J.target.value))},null,40,oc),x[28]||(x[28]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",nc,[e.createElementVNode("input",{type:"radio",value:"270",checked:P.value===270,onChange:x[14]||(x[14]=J=>U(J.target.value))},null,40,lc),x[29]||(x[29]=e.createElementVNode("span",null,"270°",-1))])]),x[31]||(x[31]=e.createElementVNode("p",{class:"pd-hint"},"整页内容旋转对应角度出纸;90°/270° 时纸张长宽互换以贴合内容,内容不变形不裁切;0° 为不旋转(默认)",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",ac,[x[32]||(x[32]=e.createElementVNode("span",{class:"pd-label"},"页面背景色",-1)),e.createElementVNode("div",ic,[e.createVNode(we,{modelValue:k.value,"onUpdate:modelValue":x[15]||(x[15]=J=>k.value=J),class:"page-bg-picker"},null,8,["modelValue"]),e.createElementVNode("button",{type:"button",class:"pd-reset",title:"恢复为默认白色",onClick:E},"默认")])]),e.createVNode(_r,{"model-value":he.value,"onUpdate:modelValue":pe},null,8,["model-value"]),o.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Sd,{key:4,"model-value":o.templateData?.tiling,"template-data":o.templateData,"onUpdate:modelValue":x[16]||(x[16]=J=>M({tiling:J}))},null,8,["model-value","template-data"])),x[41]||(x[41]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),K.value?(e.openBlock(),e.createElementBlock("p",sc,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",rc,[e.createElementVNode("div",dc,[x[33]||(x[33]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(se,{"model-value":T.value,min:0,max:50,"onUpdate:modelValue":_},null,8,["model-value"])]),e.createElementVNode("div",cc,[x[34]||(x[34]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(se,{"model-value":X.value,min:0,max:100,"onUpdate:modelValue":oe},null,8,["model-value"])]),e.createElementVNode("div",uc,[x[35]||(x[35]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(se,{"model-value":ne.value,min:0,max:50,"onUpdate:modelValue":me},null,8,["model-value"])]),e.createElementVNode("div",mc,[x[36]||(x[36]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(se,{"model-value":ae.value,min:0,max:50,"onUpdate:modelValue":D},null,8,["model-value"])])]),x[42]||(x[42]=e.createElementVNode("h3",{class:"pd-divider"},"三区高度 (mm)",-1)),e.createElementVNode("div",pc,[x[37]||(x[37]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(se,{"model-value":ue.value,min:0,max:100,step:.1,"onUpdate:modelValue":A},null,8,["model-value"])]),e.createElementVNode("div",vc,[x[38]||(x[38]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(se,{"model-value":Q.value,min:0,max:100,step:.1,"onUpdate:modelValue":H},null,8,["model-value"])]),e.createElementVNode("div",fc,[x[39]||(x[39]=e.createElementVNode("span",{class:"pd-label"},"首页叠加高度",-1)),e.createVNode(se,{"model-value":c.value,min:0,max:200,"onUpdate:modelValue":ee},null,8,["model-value"])])],32),e.createVNode(Yr,{"model-value":ce.value,fields:o.fields,"onUpdate:modelValue":ve},null,8,["model-value","fields"])],512),[[e.vShow,(o.activeTab||"page")==="page"]])])],64))],2))}}),hc=re(gc,[["__scopeId","data-v-f7152fc4"]]),bc={class:"status-bar"},Ec={key:0,class:"status-item coord"},yc={class:"status-item"},kc={class:"status-item"},Vc={class:"status-item status-paper"},Nc=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(o){return(i,t)=>(e.openBlock(),e.createElementBlock("div",bc,[o.coordinate?(e.openBlock(),e.createElementBlock("span",Ec," x:"+e.toDisplayString(o.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(o.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",yc,"缩放 "+e.toDisplayString(o.scale)+"%",1),e.createElementVNode("span",kc,"元素 "+e.toDisplayString(o.elementCount)+e.toDisplayString(o.selectedCount?` (选中 ${o.selectedCount})`:""),1),e.createElementVNode("span",{class:e.normalizeClass(["status-dirty",{on:o.dirty}])},[t[0]||(t[0]=e.createElementVNode("span",{class:"dirty-dot"},null,-1)),e.createTextVNode(e.toDisplayString(o.dirty?"未保存":"已保存"),1)],2),e.createElementVNode("span",Vc,e.toDisplayString(o.paper),1)]))}}),wc=re(Nc,[["__scopeId","data-v-a91952ff"]]),Cc={id:"getting-started",title:"快速入门",content:`
2
2
  <h2>界面布局</h2>
3
3
  <p>打印模板设计器采用三栏布局:</p>
4
4
  <ul>
@@ -21,7 +21,10 @@
21
21
  <p>使用花括号 <code>{field.path}</code> 语法绑定数据字段:</p>
22
22
  <pre><code>供应商:{supplier.name}
23
23
  日期:{order.date}
24
- 金额:{MONEY(order.total)}</code></pre>
24
+ 金额:{MONEY(order.total)}
25
+ 合计:{ROUND(qty * price, 2)}</code></pre>
26
+ <p>花括号内可直接写四则运算(<code>{qty * price}</code>),也可用 <code>ADD</code> / <code>SUB</code> / <code>MUL</code> / <code>DIV</code> 函数;
27
+ 需要保留几位小数时用 <code>ROUND</code>(四舍五入)、<code>ROUNDUP</code>(进一)、<code>ROUNDDOWN</code>(去尾)或 <code>ROUNDBANK</code>(四舍六入五成双)。</p>
25
28
  <p>双击元素可打开表达式编辑器配置绑定。</p>
26
29
 
27
30
  <h2>保存与预览</h2>
@@ -35,7 +38,7 @@
35
38
  <p><strong>项目名称:</strong>worm-vue3-print</p>
36
39
  <p><strong>仓库地址:</strong><a href="https://gitee.com/liulong_oschina/worm-vue3-print" target="_blank" rel="noopener noreferrer">https://gitee.com/liulong_oschina/worm-vue3-print</a></p>
37
40
  <p>基于 Vue 3 的可视化打印模板设计器,支持拖拽式模板编辑、表达式数据绑定和浏览器端打印预览。</p>
38
- `},kc={id:"features",title:"功能说明",content:`
41
+ `},Sc={id:"features",title:"功能说明",content:`
39
42
  <h2>元素类型</h2>
40
43
  <table>
41
44
  <thead>
@@ -71,7 +74,14 @@
71
74
  <tr><td><code>IF(cond, true, false)</code></td><td>条件判断</td><td><code>{IF(qty > 100, '大量', '少量')}</code></td></tr>
72
75
  <tr><td><code>CONCAT(str1, str2, ...)</code></td><td>字符串拼接</td><td><code>{CONCAT(name, '-', spec)}</code></td></tr>
73
76
  <tr><td><code>IFEMPTY(value, default)</code></td><td>空值默认</td><td><code>{IFEMPTY(remark, '无')}</code></td></tr>
74
- <tr><td><code>ROUND(num, decimals)</code></td><td>四舍五入</td><td><code>{ROUND(price, 2)}</code></td></tr>
77
+ <tr><td><code>ROUND(num, decimals)</code></td><td>四舍五入(位数缺省 2)</td><td><code>{ROUND(price, 2)}</code></td></tr>
78
+ <tr><td><code>ROUNDUP(n, d)</code> / <code>CEIL(n, d)</code></td><td>进一法(远离零)</td><td><code>{ROUNDUP(price, 2)}</code></td></tr>
79
+ <tr><td><code>ROUNDDOWN(n, d)</code> / <code>FLOOR(n, d)</code></td><td>去尾法(朝零)</td><td><code>{ROUNDDOWN(price, 2)}</code></td></tr>
80
+ <tr><td><code>ROUNDBANK(n, d)</code></td><td>四舍六入五成双(GB/T 8170)</td><td><code>{ROUNDBANK(price, 2)}</code></td></tr>
81
+ <tr><td><code>ADD(a, b, ...)</code></td><td>相加(变参)</td><td><code>{ADD(qty, 1)}</code></td></tr>
82
+ <tr><td><code>SUB(a, b, ...)</code></td><td>相减</td><td><code>{SUB(total, discount)}</code></td></tr>
83
+ <tr><td><code>MUL(a, b, ...)</code></td><td>相乘(变参)</td><td><code>{MUL(qty, price)}</code></td></tr>
84
+ <tr><td><code>DIV(a, b)</code></td><td>相除(除数为 0 返回 0)</td><td><code>{DIV(total, qty)}</code></td></tr>
75
85
  <tr><td><code>NOW()</code></td><td>当前日期</td><td><code>{NOW()}</code></td></tr>
76
86
  <tr><td><code>SUBSTR(str, start, len)</code></td><td>子字符串</td><td><code>{SUBSTR(name, 0, 3)}</code></td></tr>
77
87
  <tr><td><code>LEN(str)</code></td><td>字符串长度</td><td><code>{LEN(name)}</code></td></tr>
@@ -165,7 +175,7 @@
165
175
  <li>支持调节水印密度(密/中/疏/自定义瓦片尺寸),以及设置水印颜色</li>
166
176
  <li>水印在画布、浏览器预览、服务端 PDF、静默打印四端渲染一致</li>
167
177
  </ul>
168
- `},Vc={id:"shortcuts",title:"快捷键",content:`
178
+ `},Bc={id:"shortcuts",title:"快捷键",content:`
169
179
  <h2>常用操作</h2>
170
180
  <table>
171
181
  <thead>
@@ -233,7 +243,7 @@
233
243
  <blockquote>
234
244
  <p><strong>注意</strong>:当焦点在输入框、文本框、下拉框内时,快捷键不生效。</p>
235
245
  </blockquote>
236
- `},Nc={id:"faq",title:"常见问题",content:`
246
+ `},xc={id:"faq",title:"常见问题",content:`
237
247
  <h2>如何调整纸张大小?</h2>
238
248
  <ol>
239
249
  <li>在右侧面板选择"页面设置"</li>
@@ -346,7 +356,28 @@
346
356
  <blockquote>
347
357
  <p><strong>提示</strong>:水印配置保存在模板 JSON 的 <code>watermark</code> 字段中,仅对当前模板生效。</p>
348
358
  </blockquote>
349
- `},wc={id:"changelog",title:"更新记录",content:`
359
+ `},$c={id:"changelog",title:"更新记录",content:`
360
+ <h2>v1.3.1 <small>2026-09-21</small></h2>
361
+
362
+ <h3>新增</h3>
363
+ <ul>
364
+ <li><strong>数值运算与修约</strong>:表达式新增四则函数 <code>ADD</code> / <code>SUB</code> / <code>MUL</code> / <code>DIV</code>,以及修约函数 <code>ROUND</code>(四舍五入)、<code>ROUNDUP</code>(进一)、<code>ROUNDDOWN</code>(去尾)、<code>ROUNDBANK</code>(四舍六入五成双)。位数可省略(默认两位),写负数则修约到整十/整百。表达式编辑器「函数」页新增「数值运算」分组,双击即可插入。</li>
365
+ <li><strong>四则运算更准</strong>:直接写 <code>{qty * price}</code> 时,数字字符串按数值参与运算、不再出现 <code>0.30000000000000004</code> 这类浮点尾巴、除以 0 不再印出 <code>Infinity</code>。</li>
366
+ <li><strong>在线示例更好上手</strong>:示例库新增「综合示例模板」(多级表头 + 表格内图片 / 条形码 / 二维码混排),进入页面即自动载入;新增「自定义字段与数据」弹窗,可直接在页面上增删字段、编辑多份打印数据。在线预览已支持静态托管,可直接打开网页体验。</li>
367
+ </ul>
368
+
369
+ <h3>变更</h3>
370
+ <ul>
371
+ <li><strong>静默打印 SDK 并入 core</strong>:原 <code>@worm-vue3-print/client</code> 不再单独安装,改为从 <code>@worm-vue3-print/core/client</code> 导入;<code>PrintClient</code> 等能力保持不变,core 也不会因此增加依赖。</li>
372
+ </ul>
373
+
374
+ <h3>修复</h3>
375
+ <ul>
376
+ <li><code>ROUND(1.005, 2)</code> 此前得到 <code>1</code>(应为 <code>1.01</code>)、<code>ROUND(2.675, 2)</code> 得到 <code>2.67</code>(应为 <code>2.68</code>)——改为按十进制精确修约。</li>
377
+ <li>页码、打印日期此前只能在花括号里单独使用(<code>{pageIndex}</code>),一旦参与运算或函数(<code>{pageIndex + 1}</code>、<code>{ADD(pageIndex,1)}</code>、<code>{DATE(printDate,'YYYY')}</code>)就会被原样印出。现在这些写法都会按所在页真实求值,页眉/页脚、表格单元格同样生效。</li>
378
+ <li><strong>多级表头跨页不再丢层级</strong>:表头有好几层时,翻页后第二层往下曾经整段消失(只重复了最上面一行)。现在「表头每页重复」按整个表头区生效——表头里任意一层勾了,每一页都会完整印出全部层级;新增表头行也会自动跟随同一设置,不用担心漏勾。</li>
379
+ </ul>
380
+
350
381
  <h2>v1.3.0 <small>2026-09-20</small></h2>
351
382
 
352
383
  <h3>新增</h3>
@@ -475,5 +506,5 @@
475
506
  <blockquote>
476
507
  <p>完整更新记录请查阅仓库 <code>docs/中文/CHANGELOG.md</code> 与 <code>docs/en/CHANGELOG.en.md</code>。</p>
477
508
  </blockquote>
478
- `},Cc=[yc,kc,Vc,Nc,wc],Sc={class:"help-modal"},Bc={class:"help-modal-header"},xc={class:"help-modal-body"},$c={class:"help-modal-sidebar"},Tc=["onClick"],Dc={class:"help-modal-content"},Mc=["innerHTML"],st="worm-print-help-tab",Pc=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(o,{emit:i}){const t=o,n=i,l=Cc,d=e.ref(t.initialTab);e.onMounted(()=>{const u=localStorage.getItem(st);u&&l.some(m=>m.id===u)&&(d.value=u)}),e.watch(()=>t.visible,u=>{if(u){const m=localStorage.getItem(st);m&&l.some(g=>g.id===m)&&(d.value=m)}});function s(u){d.value=u,localStorage.setItem(st,u),n("update:tab",u)}const a=e.computed(()=>l.find(m=>m.id===d.value)?.content||"");function r(u){u.key==="Escape"&&t.visible&&n("close")}return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(u,m)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"help-modal"},{default:e.withCtx(()=>[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"help-modal-overlay",onClick:m[1]||(m[1]=e.withModifiers(g=>u.$emit("close"),["self"]))},[e.createElementVNode("div",Sc,[e.createElementVNode("div",Bc,[m[2]||(m[2]=e.createElementVNode("div",{class:"help-modal-title-wrap"},[e.createElementVNode("h2",{class:"help-modal-title"},"帮助文档"),e.createElementVNode("span",{class:"help-modal-project"},"worm-vue3-print")],-1)),e.createElementVNode("button",{class:"help-modal-close",title:"关闭",onClick:m[0]||(m[0]=g=>u.$emit("close"))}," × ")]),e.createElementVNode("div",xc,[e.createElementVNode("div",$c,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),g=>(e.openBlock(),e.createElementBlock("button",{key:g.id,class:e.normalizeClass(["help-tab",{active:d.value===g.id}]),onClick:k=>s(g.id)},e.toDisplayString(g.title),11,Tc))),128))]),e.createElementVNode("div",Dc,[e.createElementVNode("div",{class:"help-content",innerHTML:a.value},null,8,Mc)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),zc=re(Pc,[["__scopeId","data-v-31115934"]]),Lc={class:"page-tabs-list"},Rc=["onBlur","onKeydown"],Ac=["data-tip","onClick","onDblclick"],Ic={class:"page-tabs-actions"},Fc=["data-tip","disabled"],Uc=["data-tip","disabled"],Hc=["data-tip","disabled"],Oc=["data-tip","disabled"],Wc=["data-tip","disabled"],Gc=e.defineComponent({__name:"PageTabs",props:{pages:{},activeIndex:{},multi:{type:Boolean},tilingEnabled:{type:Boolean}},emits:["select","add","duplicate","delete","rename","move"],setup(o,{emit:i}){const t=o,n=i,l=e.ref(-1),d=e.ref(""),s=e.computed(()=>t.pages[t.activeIndex]?.name||`页面 ${t.activeIndex+1}`),a=e.computed(()=>t.tilingEnabled?rt:"新增页面(在当前页后追加空白页)"),r=e.computed(()=>t.tilingEnabled?rt:`复制当前页「${s.value}」`);function u(M){l.value=M,d.value=t.pages[M]?.name??""}function m(M){if(l.value!==M)return;const j=d.value.trim();j&&n("rename",M,j),l.value=-1}function g(){l.value=-1}const k=e.ref(null);let y=null;function R(M){const j=M.dataset.tip;if(!j)return;const ne=M.getBoundingClientRect(),H=Math.min(Math.max(ne.left+ne.width/2,80),window.innerWidth-80);k.value={text:j,x:H,y:ne.bottom+6}}function C(M){const j=M.target.closest?.("[data-tip]");j&&(y&&clearTimeout(y),y=setTimeout(()=>R(j),300))}function v(M){const j=M.target.closest?.("[data-tip]");j&&M.relatedTarget?.closest?.("[data-tip]")===j||f()}function f(){y&&(clearTimeout(y),y=null),k.value=null}return e.onUnmounted(f),(M,j)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:C,onMouseout:v,onMouseleave:f},[e.createElementVNode("div",Lc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.pages,(ne,H)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:H},[l.value===H?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":j[0]||(j[0]=K=>d.value=K),class:"page-tab-rename","data-test":"page-rename-input",onBlur:K=>m(H),onKeydown:[e.withKeys(K=>m(H),["enter"]),e.withKeys(g,["esc"])]},null,40,Rc)),[[e.vModelText,d.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:H===o.activeIndex}]),"data-tip":ne.name?`${ne.name}(双击重命名)`:"双击重命名",onClick:K=>M.$emit("select",H),onDblclick:K=>u(H)},e.toDisplayString(ne.name||`页面 ${H+1}`),43,Ac))],64))),128))]),e.createElementVNode("div",Ic,[e.createElementVNode("button",{"data-test":"add-page","data-tip":a.value,disabled:o.tilingEnabled,onClick:j[1]||(j[1]=ne=>M.$emit("add"))},"+",8,Fc),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":r.value,disabled:o.tilingEnabled,onClick:j[2]||(j[2]=ne=>M.$emit("duplicate"))},"⧉",8,Uc),e.createElementVNode("button",{"data-test":"delete-page","data-tip":o.multi?`删除当前页「${s.value}」`:"仅多页面模板可删除页面",disabled:!o.multi,onClick:j[3]||(j[3]=ne=>M.$emit("delete",o.activeIndex))},"✕",8,Hc),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${s.value}」`,disabled:o.activeIndex<=0,onClick:j[4]||(j[4]=ne=>M.$emit("move",o.activeIndex,o.activeIndex-1))},"←",8,Oc),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${s.value}」`,disabled:o.activeIndex>=o.pages.length-1,onClick:j[5]||(j[5]=ne=>M.$emit("move",o.activeIndex,o.activeIndex+1))},"→",8,Wc)]),k.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"page-tabs-tip",style:e.normalizeStyle({left:`${k.value.x}px`,top:`${k.value.y}px`})},e.toDisplayString(k.value.text),5)):e.createCommentVNode("",!0)],32))}}),Kc=re(Gc,[["__scopeId","data-v-f1c7a18e"]]),wt="print-studio:left",Ct="print-studio:right";function St(o,i){try{const t=localStorage.getItem(o);return t===null?i:t==="1"}catch{return i}}function qc(){const o=e.ref(St(wt,!1)),i=e.ref(St(Ct,!1)),t=e.ref(!1);e.watch(o,s=>{try{localStorage.setItem(wt,s?"1":"0")}catch{}},{flush:"sync"}),e.watch(i,s=>{try{localStorage.setItem(Ct,s?"1":"0")}catch{}},{flush:"sync"});function n(){o.value=!o.value}function l(){i.value=!i.value}function d(){t.value=!1}return{leftCollapsed:o,rightCollapsed:i,toggleLeft:n,toggleRight:l,dirty:t,markSaved:d}}const Yc={class:"designer-container"},jc={class:"designer-body"},Xc=e.defineComponent({__name:"PrintDesigner",props:{initialTemplate:{},initialElements:{},fields:{},isEdit:{type:Boolean},requestScreenshot:{type:Function},uploadImage:{type:Function},uploadDesignBackground:{type:Function},showHelp:{type:Boolean},fonts:{}},emits:["preview","save"],setup(o,{expose:i,emit:t}){const n=o,l=t,d=e.ref(!1);e.watch(()=>n.showHelp,U=>{U===!1&&(d.value=!1)});const{leftCollapsed:s,rightCollapsed:a,toggleLeft:r,toggleRight:u,dirty:m,markSaved:g}=qc(),{scale:k,showRuler:y,showGrid:R,snapToGrid:C,showTableGhostBorder:v,templateData:f,elements:M,fields:j,tilingEnabled:ne,selectedIds:H,selectedElement:K,select:b,selectElement:B,clearSelection:S,selectAll:x,previewIds:T,setPreview:X,commitPreview:ee,hasClipboard:le,copy:ie,paste:ue,cutSelected:J,canUndo:c,canRedo:N,undo:W,redo:he,alignSelected:pe,groupSelected:ce,ungroupSelected:ve,deleteSelected:z,dragStart:V,dragStop:w,addElement:F,addFieldElement:p,moveLayer:E,updateTemplateData:$,getTemplateJson:Y,loadTemplate:Q,pages:oe,activePageIndex:me,switchPage:P,addPage:I,duplicatePage:O,deletePage:_,renamePage:q,movePage:fe,tableSelection:A,setTableSelection:D,recordHistory:Z}=Wt({initialTemplate:n.initialTemplate,initialElements:n.initialElements,initialFields:n.fields});e.watch([M,f],()=>{m.value=!0},{deep:!0});const{guides:be,addGuide:ke,moveGuide:Ve,removeGuide:xe}=Kt(f,Z),Qe=e.computed(()=>{const U=f.value,{width:G}=h.getPaperDimensions(U);return G-U.margins.left-U.margins.right});e.provide(Oe,{tableSelection:A,setTableSelection:D,recordHistory:Z,maxTableWidth:Qe}),e.provide($t,H),e.provide(Tt,T),e.provide(dt,e.computed(()=>n.uploadImage)),e.provide(ct,e.computed(()=>n.uploadDesignBackground));const{catalog:We}=Yt(e.computed(()=>n.fonts));e.provide(ut,We),Qt(e.computed(()=>ge.buildFontFaceCss(n.fonts)));function Ae(){const U=Y();return n.fonts?.length?Array.isArray(U.pages)?{...U,pages:U.pages.map(G=>({...G,fonts:[...n.fonts]}))}:{...U,fonts:[...n.fonts]}:U}e.watch(K,U=>{(!U||U.printElementType.type!=="table")&&D(null)});const Me=e.ref(null),De=e.ref(!1),Pe=e.ref(""),_e=e.ref(.5);async function et(){if(De.value){De.value=!1;return}const U=Ae();if(!U){alert("模板数据为空");return}if(!n.requestScreenshot){alert("截图服务未配置");return}try{const G=U,de=Array.isArray(G.pages)?G.pages[me.value]:U,Ne=await n.requestScreenshot({templateJson:de,printData:h.DEFAULT_DEMO_DATA});Pe.value&&URL.revokeObjectURL(Pe.value),Pe.value=URL.createObjectURL(Ne),De.value=!0}catch{alert("截图生成失败")}}const Ge=e.ref(null);function tt(U){Ge.value=U}const ot=e.computed(()=>{const U=f.value,G=h.getPaperDimensions(U),de=U.orientation==="landscape"?"横向":"纵向",$e=`${h.PAPER_PRESETS[U.paperSize]?.label??U.paperSize} ${de} ${Math.round(G.width)}×${Math.round(G.height)}mm`,Te=U.outputRotation;return Te?`${$e}(旋转${Te}°)`:$e});function Ke(){const U=Me.value?.$el;if(U){const G=getComputedStyle(U),de=parseFloat(G.paddingLeft)+parseFloat(G.paddingRight),Ne=parseFloat(G.paddingTop)+parseFloat(G.paddingBottom),$e=h.getPaperDimensions(f.value),Te=96/25.4,Fe=h.computeFitScale(U.clientWidth-de,U.clientHeight-Ne,$e.width*Te,$e.height*Te);Me.value?.fitToWindow(Fe)}}function nt(U){k.value=Math.max(h.FIT_SCALE_MIN_PERCENT,k.value+U)}function lt(U){Me.value?.zoomByStep(U>0?1:-1)}function qe(U){const G=U.target.tagName;G==="INPUT"||G==="TEXTAREA"||G==="SELECT"||(U.ctrlKey||U.metaKey)&&U.key==="0"&&(U.preventDefault(),Ke())}e.onMounted(()=>document.addEventListener("keydown",qe)),e.onUnmounted(()=>document.removeEventListener("keydown",qe));function L(U){const G=f.value.header.height,de=f.value.footer.height;$(U),U.header.height<G&&ye("header"),U.footer.height<de&&ye("footer")}function te(U,G){f.value={...f.value,[U]:{...f.value[U],height:G}}}function ae(U){$({...f.value}),ye(U)}function ye(U){const G=h.getZoneRects(f.value)[U];M.value.some(Ne=>Ne.zone===U&&(Ne.options.top+Ne.options.height>G.height||Ne.options.left+Ne.options.width>G.width))&&alert(`${U==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}function Se(){const U=f.value.firstPageOverlay,G={options:{left:0,top:0,width:50,height:10,title:"首页叠加"},printElementType:{type:"text",title:"首页叠加"}};f.value={...f.value,firstPageOverlay:{...U,elements:[...U.elements,G]}}}const Ee=B;function Be(U){const G=M.value.find(de=>de.id===U);G&&(G.options.visible=G.options.visible===!1)}function ze(U){const G=M.value.find(de=>de.id===U);G&&(G.options.locked=!G.options.locked)}const Le=e.ref("page");e.watch(K,U=>{Le.value=U?"element":"page"});const Mt={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},Ie=e.ref(!1),Ye=e.ref(null),at=e.ref("");function Pt(U){const G=M.value.find(Ne=>Ne.id===U);if(!G||(b(U,!1),Le.value="element",G.options.locked))return;const de=Mt[G.printElementType.type];de&&(Ye.value={kind:"element",element:G,field:de},at.value=G.options[de]||"",Ie.value=!0)}function zt(U,G,de){const Ne=M.value.find(It=>It.id===U);if(!Ne||(b(U,!1),Le.value="element",Ne.options.locked))return;const $e=Ne.options.tableRows??[],Te=h.findMainCell($e,G,de),Fe=$e[Te.r]?.cells[Te.c];Fe&&(Ye.value={kind:"cell",cell:Fe},at.value=Fe.formatter||"",Ie.value=!0)}function Lt(U){const G=Ye.value;G?.kind==="element"?G.element.options[G.field]=U||void 0:G?.kind==="cell"&&(G.cell.formatter=U||void 0),Z(),Ie.value=!1,Ye.value=null}function Rt(U,G){M.value.push(U),b(U.id,!1),Z()}e.watch(()=>n.initialTemplate,U=>{U&&Q(U,n.initialElements)}),e.watch(()=>n.initialElements,U=>{U&&!n.initialTemplate&&(f.value={...f.value,elements:U.map(G=>({...G,options:{...G.options},printElementType:{...G.printElementType}}))})}),e.watch(()=>n.fields,U=>{j.value=U||[]});const pt=e.computed(()=>{const U=f.value;return U?.tiling?.enabled!==!0?[]:ge.validateTiling(U)});i({getTemplateJson:Ae,validateTemplate:()=>pt.value});function At(){const U=pt.value;if(U.length){alert(U[0].message),Le.value="page";return}const G=Ae();if(Array.isArray(G.pages))try{ge.normalizeTemplate(G)}catch(de){alert(de instanceof Error?de.message:String(de));return}l("save",JSON.stringify(G)),g()}return(U,G)=>(e.openBlock(),e.createElementBlock("div",Yc,[e.createVNode(Eo,{"is-edit":o.isEdit,"can-undo":e.unref(c),"can-redo":e.unref(N),"has-multi-selection":e.unref(H).size>=2,"has-selection":e.unref(H).size>=1,"show-ruler":e.unref(y),"show-grid":e.unref(R),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(v),"selected-element-has-group":!!e.unref(K)?.options.groupId,"overlay-visible":De.value,"show-help":o.showHelp!==!1,scale:e.unref(k),"onUpdate:scale":G[0]||(G[0]=de=>e.isRef(k)?k.value=de:null),onPreview:G[1]||(G[1]=de=>U.$emit("preview")),onSave:At,onUndo:e.unref(W),onRedo:e.unref(he),onAlign:G[2]||(G[2]=de=>e.unref(pe)(de)),onMoveLayer:e.unref(E),onToggleRuler:G[3]||(G[3]=de=>y.value=!e.unref(y)),onToggleGrid:G[4]||(G[4]=de=>R.value=!e.unref(R)),onToggleSnap:G[5]||(G[5]=de=>C.value=!e.unref(C)),onToggleTableGhostBorder:G[6]||(G[6]=de=>v.value=!e.unref(v)),onToggleOverlay:et,onGroup:e.unref(ce),onUngroup:e.unref(ve),onAddOverlayElement:Se,onFitWindow:Ke,onZoom:lt,onHelp:G[7]||(G[7]=de=>d.value=!0)},null,8,["is-edit","can-undo","can-redo","has-multi-selection","has-selection","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","selected-element-has-group","overlay-visible","show-help","scale","onUndo","onRedo","onMoveLayer","onGroup","onUngroup"]),e.createVNode(Kc,{pages:e.unref(oe),"active-index":e.unref(me),multi:e.unref(oe).length>1,"tiling-enabled":e.unref(ne),onSelect:e.unref(P),onAdd:e.unref(I),onDuplicate:e.unref(O),onDelete:e.unref(_),onRename:e.unref(q),onMove:e.unref(fe)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",jc,[e.createVNode(Qo,{fields:e.unref(j),elements:e.unref(M),"selected-ids":e.unref(H),collapsed:e.unref(s),onSelect:e.unref(Ee),onMoveLayer:e.unref(E),onToggleVisible:Be,onToggleLocked:ze,onToggleCollapse:e.unref(r)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onToggleCollapse"]),e.createVNode(El,{ref_key:"canvasAreaRef",ref:Me,"template-data":e.unref(f),elements:e.unref(M),scale:e.unref(k)/100,"show-ruler":e.unref(y),"show-grid":e.unref(R),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(v),"has-clipboard":e.unref(le),guides:e.unref(be),"overlay-visible":De.value,"screenshot-url":Pe.value,"overlay-opacity":_e.value,"selected-element-has-group":!!e.unref(K)?.options.groupId,onSelect:e.unref(Ee),onDropElement:e.unref(F),onDropField:e.unref(p),onDragStart:e.unref(V),onDragStop:e.unref(w),onDblclickElement:Pt,onDblclickCell:zt,onZoneHeightChange:te,onZoneHeightCommit:ae,onSelectAll:e.unref(x),onClearSelection:e.unref(S),onPreview:e.unref(X),onCommitPreview:e.unref(ee),onPaste:e.unref(ue),onCopy:e.unref(ie),onCut:e.unref(J),onDelete:e.unref(z),onMoveLayer:e.unref(E),onCoordinate:tt,onGroup:e.unref(ce),onUngroup:e.unref(ve),onAddGuide:e.unref(ke),onGuideMove:e.unref(Ve),onGuideRemove:e.unref(xe),onZoom:nt,onCloneElement:Rt},null,8,["template-data","elements","scale","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","has-clipboard","guides","overlay-visible","screenshot-url","overlay-opacity","selected-element-has-group","onSelect","onDropElement","onDropField","onDragStart","onDragStop","onSelectAll","onClearSelection","onPreview","onCommitPreview","onPaste","onCopy","onCut","onDelete","onMoveLayer","onGroup","onUngroup","onAddGuide","onGuideMove","onGuideRemove"]),e.createVNode(mc,{element:e.unref(K),"template-data":e.unref(f),fields:e.unref(j),"table-selection":e.unref(A),"record-history":e.unref(Z),collapsed:e.unref(a),"multi-page":e.unref(oe).length>1,"active-tab":Le.value,"onUpdate:activeTab":G[8]||(G[8]=de=>Le.value=de),onDeleteElement:e.unref(z),"onUpdate:templateData":L,onToggleCollapse:e.unref(u)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode(Ec,{coordinate:Ge.value,scale:e.unref(k),"element-count":e.unref(M).length,"selected-count":e.unref(H).size,paper:ot.value,dirty:e.unref(m)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(Je,{modelValue:Ie.value,"onUpdate:modelValue":G[9]||(G[9]=de=>Ie.value=de),fields:e.unref(j),expression:at.value,"onUpdate:expression":Lt},null,8,["modelValue","fields","expression"]),e.createVNode(zc,{visible:d.value,onClose:G[10]||(G[10]=de=>d.value=!1)},null,8,["visible"])]))}}),Zc=re(Xc,[["__scopeId","data-v-080dee1a"]]),Jc={class:"print-html-preview"},Qc={key:0,class:"print-html-preview-error"},_c={key:1,class:"print-html-preview-loading"},eu=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(o,{expose:i,emit:t}){const n=o,l=t,d=e.ref(),s=e.ref(!1),a=e.ref("");let r=0;async function u(){if(!n.templateJson){a.value="",s.value=!1;return}const g=++r;s.value=!0,a.value="";try{const{html:k,pageCount:y,copies:R}=await Ue.renderHtmlPages(n.templateJson,n.printData,n.baseUrl,Ue.browserCodeRenderer,{fontBaseUrl:n.fontBaseUrl});if(g!==r)return;const C=d.value?.contentWindow?.document;C&&(C.open(),C.write(k),C.close()),l("rendered",y,R)}catch(k){if(g!==r)return;a.value=k instanceof Error?k.message:"未知错误",l("error",a.value)}finally{g===r&&(s.value=!1)}}function m(){const g=d.value?.contentWindow;g&&(g.focus(),g.print())}return e.watch(()=>[n.templateJson,n.printData,n.baseUrl,n.fontBaseUrl],()=>{u()},{immediate:!0,deep:!0}),e.onBeforeUnmount(()=>{r++}),i({print:m,rerender:u}),(g,k)=>(e.openBlock(),e.createElementBlock("div",Jc,[a.value?(e.openBlock(),e.createElementBlock("div",Qc,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(a.value),1)])):s.value?(e.openBlock(),e.createElementBlock("div",_c,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:d,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!s.value&&!a.value]])]))}}),tu=re(eu,[["__scopeId","data-v-ff7de2b5"]]);Object.defineProperty(exports,"DEFAULT_DEMO_DATA",{enumerable:!0,get:()=>h.DEFAULT_DEMO_DATA});Object.defineProperty(exports,"getDemoData",{enumerable:!0,get:()=>h.getDemoData});Object.defineProperty(exports,"browserCodeRenderer",{enumerable:!0,get:()=>Ue.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Ue.renderHtmlPages});exports.FONT_CATALOG_KEY=ut;exports.PrintDesigner=Zc;exports.PrintHtmlPreview=tu;exports.UPLOAD_DESIGN_BACKGROUND_KEY=ct;exports.UPLOAD_IMAGE_KEY=dt;exports.createDefaultTemplate=Re;exports.toRuntimePool=Ze;
509
+ `},Dc=[Cc,Sc,Bc,xc,$c],Tc={class:"help-modal"},Mc={class:"help-modal-header"},Pc={class:"help-modal-body"},zc={class:"help-modal-sidebar"},Rc=["onClick"],Lc={class:"help-modal-content"},Ac=["innerHTML"],st="worm-print-help-tab",Uc=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(o,{emit:i}){const t=o,n=i,a=Dc,d=e.ref(t.initialTab);e.onMounted(()=>{const u=localStorage.getItem(st);u&&a.some(m=>m.id===u)&&(d.value=u)}),e.watch(()=>t.visible,u=>{if(u){const m=localStorage.getItem(st);m&&a.some(f=>f.id===m)&&(d.value=m)}});function s(u){d.value=u,localStorage.setItem(st,u),n("update:tab",u)}const l=e.computed(()=>a.find(m=>m.id===d.value)?.content||"");function r(u){u.key==="Escape"&&t.visible&&n("close")}return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(u,m)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"help-modal"},{default:e.withCtx(()=>[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"help-modal-overlay",onClick:m[1]||(m[1]=e.withModifiers(f=>u.$emit("close"),["self"]))},[e.createElementVNode("div",Tc,[e.createElementVNode("div",Mc,[m[2]||(m[2]=e.createElementVNode("div",{class:"help-modal-title-wrap"},[e.createElementVNode("h2",{class:"help-modal-title"},"帮助文档"),e.createElementVNode("span",{class:"help-modal-project"},"worm-vue3-print")],-1)),e.createElementVNode("button",{class:"help-modal-close",title:"关闭",onClick:m[0]||(m[0]=f=>u.$emit("close"))}," × ")]),e.createElementVNode("div",Pc,[e.createElementVNode("div",zc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),f=>(e.openBlock(),e.createElementBlock("button",{key:f.id,class:e.normalizeClass(["help-tab",{active:d.value===f.id}]),onClick:V=>s(f.id)},e.toDisplayString(f.title),11,Rc))),128))]),e.createElementVNode("div",Lc,[e.createElementVNode("div",{class:"help-content",innerHTML:l.value},null,8,Ac)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),Ic=re(Uc,[["__scopeId","data-v-31115934"]]),Fc={class:"page-tabs-list"},Oc=["onBlur","onKeydown"],Hc=["data-tip","onClick","onDblclick"],Wc={class:"page-tabs-actions"},Gc=["data-tip","disabled"],Kc=["data-tip","disabled"],qc=["data-tip","disabled"],Yc=["data-tip","disabled"],jc=["data-tip","disabled"],Xc=e.defineComponent({__name:"PageTabs",props:{pages:{},activeIndex:{},multi:{type:Boolean},tilingEnabled:{type:Boolean}},emits:["select","add","duplicate","delete","rename","move"],setup(o,{emit:i}){const t=o,n=i,a=e.ref(-1),d=e.ref(""),s=e.computed(()=>t.pages[t.activeIndex]?.name||`页面 ${t.activeIndex+1}`),l=e.computed(()=>t.tilingEnabled?rt:"新增页面(在当前页后追加空白页)"),r=e.computed(()=>t.tilingEnabled?rt:`复制当前页「${s.value}」`);function u($){a.value=$,d.value=t.pages[$]?.name??""}function m($){if(a.value!==$)return;const Z=d.value.trim();Z&&n("rename",$,Z),a.value=-1}function f(){a.value=-1}const V=e.ref(null);let y=null;function R($){const Z=$.dataset.tip;if(!Z)return;const le=$.getBoundingClientRect(),F=Math.min(Math.max(le.left+le.width/2,80),window.innerWidth-80);V.value={text:Z,x:F,y:le.bottom+6}}function S($){const Z=$.target.closest?.("[data-tip]");Z&&(y&&clearTimeout(y),y=setTimeout(()=>R(Z),300))}function g($){const Z=$.target.closest?.("[data-tip]");Z&&$.relatedTarget?.closest?.("[data-tip]")===Z||p()}function p(){y&&(clearTimeout(y),y=null),V.value=null}return e.onUnmounted(p),($,Z)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:S,onMouseout:g,onMouseleave:p},[e.createElementVNode("div",Fc,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.pages,(le,F)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:F},[a.value===F?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":Z[0]||(Z[0]=K=>d.value=K),class:"page-tab-rename","data-test":"page-rename-input",onBlur:K=>m(F),onKeydown:[e.withKeys(K=>m(F),["enter"]),e.withKeys(f,["esc"])]},null,40,Oc)),[[e.vModelText,d.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:F===o.activeIndex}]),"data-tip":le.name?`${le.name}(双击重命名)`:"双击重命名",onClick:K=>$.$emit("select",F),onDblclick:K=>u(F)},e.toDisplayString(le.name||`页面 ${F+1}`),43,Hc))],64))),128))]),e.createElementVNode("div",Wc,[e.createElementVNode("button",{"data-test":"add-page","data-tip":l.value,disabled:o.tilingEnabled,onClick:Z[1]||(Z[1]=le=>$.$emit("add"))},"+",8,Gc),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":r.value,disabled:o.tilingEnabled,onClick:Z[2]||(Z[2]=le=>$.$emit("duplicate"))},"⧉",8,Kc),e.createElementVNode("button",{"data-test":"delete-page","data-tip":o.multi?`删除当前页「${s.value}」`:"仅多页面模板可删除页面",disabled:!o.multi,onClick:Z[3]||(Z[3]=le=>$.$emit("delete",o.activeIndex))},"✕",8,qc),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${s.value}」`,disabled:o.activeIndex<=0,onClick:Z[4]||(Z[4]=le=>$.$emit("move",o.activeIndex,o.activeIndex-1))},"←",8,Yc),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${s.value}」`,disabled:o.activeIndex>=o.pages.length-1,onClick:Z[5]||(Z[5]=le=>$.$emit("move",o.activeIndex,o.activeIndex+1))},"→",8,jc)]),V.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"page-tabs-tip",style:e.normalizeStyle({left:`${V.value.x}px`,top:`${V.value.y}px`})},e.toDisplayString(V.value.text),5)):e.createCommentVNode("",!0)],32))}}),Zc=re(Xc,[["__scopeId","data-v-f1c7a18e"]]),wt="print-studio:left",Ct="print-studio:right";function St(o,i){try{const t=localStorage.getItem(o);return t===null?i:t==="1"}catch{return i}}function Jc(){const o=e.ref(St(wt,!1)),i=e.ref(St(Ct,!1)),t=e.ref(!1);e.watch(o,s=>{try{localStorage.setItem(wt,s?"1":"0")}catch{}},{flush:"sync"}),e.watch(i,s=>{try{localStorage.setItem(Ct,s?"1":"0")}catch{}},{flush:"sync"});function n(){o.value=!o.value}function a(){i.value=!i.value}function d(){t.value=!1}return{leftCollapsed:o,rightCollapsed:i,toggleLeft:n,toggleRight:a,dirty:t,markSaved:d}}const Qc={class:"designer-container"},_c={class:"designer-body"},eu=e.defineComponent({__name:"PrintDesigner",props:{initialTemplate:{},initialElements:{},fields:{},isEdit:{type:Boolean},requestScreenshot:{type:Function},uploadImage:{type:Function},uploadDesignBackground:{type:Function},showHelp:{type:Boolean},fonts:{}},emits:["preview","save"],setup(o,{expose:i,emit:t}){const n=o,a=t,d=e.ref(!1);e.watch(()=>n.showHelp,I=>{I===!1&&(d.value=!1)});const{leftCollapsed:s,rightCollapsed:l,toggleLeft:r,toggleRight:u,dirty:m,markSaved:f}=Jc(),{scale:V,showRuler:y,showGrid:R,snapToGrid:S,showTableGhostBorder:g,templateData:p,elements:$,fields:Z,tilingEnabled:le,selectedIds:F,selectedElement:K,select:b,selectElement:O,clearSelection:q,selectAll:P,previewIds:k,setPreview:T,commitPreview:X,hasClipboard:ne,copy:ae,paste:ue,cutSelected:Q,canUndo:c,canRedo:w,undo:W,redo:he,alignSelected:pe,groupSelected:ce,ungroupSelected:ve,deleteSelected:M,dragStart:N,dragStop:C,addElement:U,addFieldElement:v,moveLayer:E,updateTemplateData:B,getTemplateJson:j,loadTemplate:_,pages:oe,activePageIndex:me,switchPage:D,addPage:A,duplicatePage:H,deletePage:ee,renamePage:Y,movePage:fe,tableSelection:L,setTableSelection:x,recordHistory:J}=Wt({initialTemplate:n.initialTemplate,initialElements:n.initialElements,initialFields:n.fields});e.watch([$,p],()=>{m.value=!0},{deep:!0});const{guides:be,addGuide:ke,moveGuide:Ve,removeGuide:xe}=Kt(p,J),Qe=e.computed(()=>{const I=p.value,{width:G}=h.getPaperDimensions(I);return G-I.margins.left-I.margins.right});e.provide(He,{tableSelection:L,setTableSelection:x,recordHistory:J,maxTableWidth:Qe}),e.provide($t,F),e.provide(Dt,k),e.provide(dt,e.computed(()=>n.uploadImage)),e.provide(ct,e.computed(()=>n.uploadDesignBackground));const{catalog:We}=Yt(e.computed(()=>n.fonts));e.provide(ut,We),Qt(e.computed(()=>ge.buildFontFaceCss(n.fonts)));function Ae(){const I=j();return n.fonts?.length?Array.isArray(I.pages)?{...I,pages:I.pages.map(G=>({...G,fonts:[...n.fonts]}))}:{...I,fonts:[...n.fonts]}:I}e.watch(K,I=>{(!I||I.printElementType.type!=="table")&&x(null)});const Me=e.ref(null),Te=e.ref(!1),Pe=e.ref(""),_e=e.ref(.5);async function et(){if(Te.value){Te.value=!1;return}const I=Ae();if(!I){alert("模板数据为空");return}if(!n.requestScreenshot){alert("截图服务未配置");return}try{const G=I,de=Array.isArray(G.pages)?G.pages[me.value]:I,Ne=await n.requestScreenshot({templateJson:de,printData:h.DEFAULT_DEMO_DATA});Pe.value&&URL.revokeObjectURL(Pe.value),Pe.value=URL.createObjectURL(Ne),Te.value=!0}catch{alert("截图生成失败")}}const Ge=e.ref(null);function tt(I){Ge.value=I}const ot=e.computed(()=>{const I=p.value,G=h.getPaperDimensions(I),de=I.orientation==="landscape"?"横向":"纵向",$e=`${h.PAPER_PRESETS[I.paperSize]?.label??I.paperSize} ${de} ${Math.round(G.width)}×${Math.round(G.height)}mm`,De=I.outputRotation;return De?`${$e}(旋转${De}°)`:$e});function Ke(){const I=Me.value?.$el;if(I){const G=getComputedStyle(I),de=parseFloat(G.paddingLeft)+parseFloat(G.paddingRight),Ne=parseFloat(G.paddingTop)+parseFloat(G.paddingBottom),$e=h.getPaperDimensions(p.value),De=96/25.4,Ie=h.computeFitScale(I.clientWidth-de,I.clientHeight-Ne,$e.width*De,$e.height*De);Me.value?.fitToWindow(Ie)}}function nt(I){V.value=Math.max(h.FIT_SCALE_MIN_PERCENT,V.value+I)}function lt(I){Me.value?.zoomByStep(I>0?1:-1)}function qe(I){const G=I.target.tagName;G==="INPUT"||G==="TEXTAREA"||G==="SELECT"||(I.ctrlKey||I.metaKey)&&I.key==="0"&&(I.preventDefault(),Ke())}e.onMounted(()=>document.addEventListener("keydown",qe)),e.onUnmounted(()=>document.removeEventListener("keydown",qe));function z(I){const G=p.value.header.height,de=p.value.footer.height;B(I),I.header.height<G&&ye("header"),I.footer.height<de&&ye("footer")}function te(I,G){p.value={...p.value,[I]:{...p.value[I],height:G}}}function ie(I){B({...p.value}),ye(I)}function ye(I){const G=h.getZoneRects(p.value)[I];$.value.some(Ne=>Ne.zone===I&&(Ne.options.top+Ne.options.height>G.height||Ne.options.left+Ne.options.width>G.width))&&alert(`${I==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}function Se(){const I=p.value.firstPageOverlay,G={options:{left:0,top:0,width:50,height:10,title:"首页叠加"},printElementType:{type:"text",title:"首页叠加"}};p.value={...p.value,firstPageOverlay:{...I,elements:[...I.elements,G]}}}const Ee=O;function Be(I){const G=$.value.find(de=>de.id===I);G&&(G.options.visible=G.options.visible===!1)}function ze(I){const G=$.value.find(de=>de.id===I);G&&(G.options.locked=!G.options.locked)}const Re=e.ref("page");e.watch(K,I=>{Re.value=I?"element":"page"});const Mt={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},Ue=e.ref(!1),Ye=e.ref(null),at=e.ref("");function Pt(I){const G=$.value.find(Ne=>Ne.id===I);if(!G||(b(I,!1),Re.value="element",G.options.locked))return;const de=Mt[G.printElementType.type];de&&(Ye.value={kind:"element",element:G,field:de},at.value=G.options[de]||"",Ue.value=!0)}function zt(I,G,de){const Ne=$.value.find(Ut=>Ut.id===I);if(!Ne||(b(I,!1),Re.value="element",Ne.options.locked))return;const $e=Ne.options.tableRows??[],De=h.findMainCell($e,G,de),Ie=$e[De.r]?.cells[De.c];Ie&&(Ye.value={kind:"cell",cell:Ie},at.value=Ie.formatter||"",Ue.value=!0)}function Rt(I){const G=Ye.value;G?.kind==="element"?G.element.options[G.field]=I||void 0:G?.kind==="cell"&&(G.cell.formatter=I||void 0),J(),Ue.value=!1,Ye.value=null}function Lt(I,G){$.value.push(I),b(I.id,!1),J()}e.watch(()=>n.initialTemplate,I=>{I&&_(I,n.initialElements)}),e.watch(()=>n.initialElements,I=>{I&&!n.initialTemplate&&(p.value={...p.value,elements:I.map(G=>({...G,options:{...G.options},printElementType:{...G.printElementType}}))})}),e.watch(()=>n.fields,I=>{Z.value=I||[]});const pt=e.computed(()=>{const I=p.value;return I?.tiling?.enabled!==!0?[]:ge.validateTiling(I)});i({getTemplateJson:Ae,validateTemplate:()=>pt.value});function At(){const I=pt.value;if(I.length){alert(I[0].message),Re.value="page";return}const G=Ae();if(Array.isArray(G.pages))try{ge.normalizeTemplate(G)}catch(de){alert(de instanceof Error?de.message:String(de));return}a("save",JSON.stringify(G)),f()}return(I,G)=>(e.openBlock(),e.createElementBlock("div",Qc,[e.createVNode(Eo,{"is-edit":o.isEdit,"can-undo":e.unref(c),"can-redo":e.unref(w),"has-multi-selection":e.unref(F).size>=2,"has-selection":e.unref(F).size>=1,"show-ruler":e.unref(y),"show-grid":e.unref(R),"snap-to-grid":e.unref(S),"show-table-ghost-border":e.unref(g),"selected-element-has-group":!!e.unref(K)?.options.groupId,"overlay-visible":Te.value,"show-help":o.showHelp!==!1,scale:e.unref(V),"onUpdate:scale":G[0]||(G[0]=de=>e.isRef(V)?V.value=de:null),onPreview:G[1]||(G[1]=de=>I.$emit("preview")),onSave:At,onUndo:e.unref(W),onRedo:e.unref(he),onAlign:G[2]||(G[2]=de=>e.unref(pe)(de)),onMoveLayer:e.unref(E),onToggleRuler:G[3]||(G[3]=de=>y.value=!e.unref(y)),onToggleGrid:G[4]||(G[4]=de=>R.value=!e.unref(R)),onToggleSnap:G[5]||(G[5]=de=>S.value=!e.unref(S)),onToggleTableGhostBorder:G[6]||(G[6]=de=>g.value=!e.unref(g)),onToggleOverlay:et,onGroup:e.unref(ce),onUngroup:e.unref(ve),onAddOverlayElement:Se,onFitWindow:Ke,onZoom:lt,onHelp:G[7]||(G[7]=de=>d.value=!0)},null,8,["is-edit","can-undo","can-redo","has-multi-selection","has-selection","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","selected-element-has-group","overlay-visible","show-help","scale","onUndo","onRedo","onMoveLayer","onGroup","onUngroup"]),e.createVNode(Zc,{pages:e.unref(oe),"active-index":e.unref(me),multi:e.unref(oe).length>1,"tiling-enabled":e.unref(le),onSelect:e.unref(D),onAdd:e.unref(A),onDuplicate:e.unref(H),onDelete:e.unref(ee),onRename:e.unref(Y),onMove:e.unref(fe)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",_c,[e.createVNode(Qo,{fields:e.unref(Z),elements:e.unref($),"selected-ids":e.unref(F),collapsed:e.unref(s),onSelect:e.unref(Ee),onMoveLayer:e.unref(E),onToggleVisible:Be,onToggleLocked:ze,onToggleCollapse:e.unref(r)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onToggleCollapse"]),e.createVNode(El,{ref_key:"canvasAreaRef",ref:Me,"template-data":e.unref(p),elements:e.unref($),scale:e.unref(V)/100,"show-ruler":e.unref(y),"show-grid":e.unref(R),"snap-to-grid":e.unref(S),"show-table-ghost-border":e.unref(g),"has-clipboard":e.unref(ne),guides:e.unref(be),"overlay-visible":Te.value,"screenshot-url":Pe.value,"overlay-opacity":_e.value,"selected-element-has-group":!!e.unref(K)?.options.groupId,onSelect:e.unref(Ee),onDropElement:e.unref(U),onDropField:e.unref(v),onDragStart:e.unref(N),onDragStop:e.unref(C),onDblclickElement:Pt,onDblclickCell:zt,onZoneHeightChange:te,onZoneHeightCommit:ie,onSelectAll:e.unref(P),onClearSelection:e.unref(q),onPreview:e.unref(T),onCommitPreview:e.unref(X),onPaste:e.unref(ue),onCopy:e.unref(ae),onCut:e.unref(Q),onDelete:e.unref(M),onMoveLayer:e.unref(E),onCoordinate:tt,onGroup:e.unref(ce),onUngroup:e.unref(ve),onAddGuide:e.unref(ke),onGuideMove:e.unref(Ve),onGuideRemove:e.unref(xe),onZoom:nt,onCloneElement:Lt},null,8,["template-data","elements","scale","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","has-clipboard","guides","overlay-visible","screenshot-url","overlay-opacity","selected-element-has-group","onSelect","onDropElement","onDropField","onDragStart","onDragStop","onSelectAll","onClearSelection","onPreview","onCommitPreview","onPaste","onCopy","onCut","onDelete","onMoveLayer","onGroup","onUngroup","onAddGuide","onGuideMove","onGuideRemove"]),e.createVNode(hc,{element:e.unref(K),"template-data":e.unref(p),fields:e.unref(Z),"table-selection":e.unref(L),"record-history":e.unref(J),collapsed:e.unref(l),"multi-page":e.unref(oe).length>1,"active-tab":Re.value,"onUpdate:activeTab":G[8]||(G[8]=de=>Re.value=de),onDeleteElement:e.unref(M),"onUpdate:templateData":z,onToggleCollapse:e.unref(u)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode(wc,{coordinate:Ge.value,scale:e.unref(V),"element-count":e.unref($).length,"selected-count":e.unref(F).size,paper:ot.value,dirty:e.unref(m)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(Je,{modelValue:Ue.value,"onUpdate:modelValue":G[9]||(G[9]=de=>Ue.value=de),fields:e.unref(Z),expression:at.value,"onUpdate:expression":Rt},null,8,["modelValue","fields","expression"]),e.createVNode(Ic,{visible:d.value,onClose:G[10]||(G[10]=de=>d.value=!1)},null,8,["visible"])]))}}),tu=re(eu,[["__scopeId","data-v-080dee1a"]]),ou={class:"print-html-preview"},nu={key:0,class:"print-html-preview-error"},lu={key:1,class:"print-html-preview-loading"},au=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(o,{expose:i,emit:t}){const n=o,a=t,d=e.ref(),s=e.ref(!1),l=e.ref("");let r=0;async function u(){if(!n.templateJson){l.value="",s.value=!1;return}const f=++r;s.value=!0,l.value="";try{const{html:V,pageCount:y,copies:R}=await Fe.renderHtmlPages(n.templateJson,n.printData,n.baseUrl,Fe.browserCodeRenderer,{fontBaseUrl:n.fontBaseUrl});if(f!==r)return;const S=d.value?.contentWindow?.document;S&&(S.open(),S.write(V),S.close()),a("rendered",y,R)}catch(V){if(f!==r)return;l.value=V instanceof Error?V.message:"未知错误",a("error",l.value)}finally{f===r&&(s.value=!1)}}function m(){const f=d.value?.contentWindow;f&&(f.focus(),f.print())}return e.watch(()=>[n.templateJson,n.printData,n.baseUrl,n.fontBaseUrl],()=>{u()},{immediate:!0,deep:!0}),e.onBeforeUnmount(()=>{r++}),i({print:m,rerender:u}),(f,V)=>(e.openBlock(),e.createElementBlock("div",ou,[l.value?(e.openBlock(),e.createElementBlock("div",nu,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(l.value),1)])):s.value?(e.openBlock(),e.createElementBlock("div",lu,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:d,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!s.value&&!l.value]])]))}}),iu=re(au,[["__scopeId","data-v-ff7de2b5"]]);Object.defineProperty(exports,"DEFAULT_DEMO_DATA",{enumerable:!0,get:()=>h.DEFAULT_DEMO_DATA});Object.defineProperty(exports,"getDemoData",{enumerable:!0,get:()=>h.getDemoData});Object.defineProperty(exports,"browserCodeRenderer",{enumerable:!0,get:()=>Fe.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Fe.renderHtmlPages});exports.FONT_CATALOG_KEY=ut;exports.PrintDesigner=tu;exports.PrintHtmlPreview=iu;exports.UPLOAD_DESIGN_BACKGROUND_KEY=ct;exports.UPLOAD_IMAGE_KEY=dt;exports.createDefaultTemplate=Le;exports.toRuntimePool=Ze;
479
510
  //# sourceMappingURL=index.cjs.map