@worm-vue3-print/canvas 1.3.7 → 1.3.8
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/canvas.css +1 -1
- package/dist/components/CanvasArea.vue.d.ts +1 -1
- package/dist/components/CanvasPaper.vue.d.ts +1 -1
- package/dist/components/DesignerToolbar.vue.d.ts +1 -1
- package/dist/components/ExpressionEditor.vue.d.ts +1 -1
- package/dist/components/FieldTreePanel.vue.d.ts +1 -1
- package/dist/components/FormatToolbar.vue.d.ts +1 -1
- package/dist/components/HelpButton.vue.d.ts +1 -1
- package/dist/components/HelpModal.vue.d.ts +1 -1
- package/dist/components/LayerPanel.vue.d.ts +1 -1
- package/dist/components/LeftPanel.vue.d.ts +1 -1
- package/dist/components/PageTabs.vue.d.ts +1 -1
- package/dist/components/PresetColorPicker.vue.d.ts +1 -1
- package/dist/components/PrintDesigner.vue.d.ts +1 -1
- package/dist/components/PrintHtmlPreview.vue.d.ts +1 -1
- package/dist/components/PropertyPanel.vue.d.ts +1 -1
- package/dist/components/Ruler.vue.d.ts +1 -1
- package/dist/components/StatusBar.vue.d.ts +1 -1
- package/dist/components/ToolbarDropdown.vue.d.ts +1 -1
- package/dist/components/ToolbarMore.vue.d.ts +1 -1
- package/dist/components/WatermarkConfig.vue.d.ts +1 -1
- package/dist/components/elements/BarcodeElement.vue.d.ts +1 -1
- package/dist/components/elements/BaseElement.vue.d.ts +1 -1
- package/dist/components/elements/CellBarcode.vue.d.ts +1 -1
- package/dist/components/elements/CellImage.vue.d.ts +5 -1
- package/dist/components/elements/HtmlElement.vue.d.ts +1 -1
- package/dist/components/elements/ImageElement.vue.d.ts +1 -1
- package/dist/components/elements/LineElement.vue.d.ts +1 -1
- package/dist/components/elements/LongTextElement.vue.d.ts +1 -1
- package/dist/components/elements/PageNumberElement.vue.d.ts +1 -1
- package/dist/components/elements/QrcodeElement.vue.d.ts +1 -1
- package/dist/components/elements/ShapeElement.vue.d.ts +1 -1
- package/dist/components/elements/TableContextMenu.vue.d.ts +1 -1
- package/dist/components/elements/TableElement.vue.d.ts +1 -1
- package/dist/components/elements/TextElement.vue.d.ts +1 -1
- package/dist/components/property/AdvancedGroup.vue.d.ts +1 -1
- package/dist/components/property/AppearanceGroup.vue.d.ts +1 -1
- package/dist/components/property/BindingControl.vue.d.ts +1 -1
- package/dist/components/property/BorderBgGroup.vue.d.ts +1 -1
- package/dist/components/property/CodeGroup.vue.d.ts +1 -1
- package/dist/components/property/CropAnchorField.vue.d.ts +35 -0
- package/dist/components/property/DesignBackgroundConfig.vue.d.ts +1 -1
- package/dist/components/property/FontSelect.vue.d.ts +1 -1
- package/dist/components/property/ImageContentUpload.vue.d.ts +1 -1
- package/dist/components/property/PaginationGroup.vue.d.ts +1 -1
- package/dist/components/property/PositionSizeGroup.vue.d.ts +1 -1
- package/dist/components/property/PropertyGroup.vue.d.ts +1 -1
- package/dist/components/property/PropertySearch.vue.d.ts +1 -1
- package/dist/components/property/StepperInput.vue.d.ts +1 -1
- package/dist/components/property/TableCellGroup.vue.d.ts +1 -1
- package/dist/components/property/TableRowGroup.vue.d.ts +1 -1
- package/dist/components/property/TableSettingsGroup.vue.d.ts +1 -1
- package/dist/components/property/TilingConfig.vue.d.ts +1 -1
- package/dist/composables/useAdsorb.d.ts +1 -1
- package/dist/composables/useAdsorbManager.d.ts +1 -1
- package/dist/composables/useClipboard.d.ts +5 -1
- package/dist/composables/useDesignerState.d.ts +25 -1
- package/dist/composables/useDocumentFontFace.d.ts +1 -1
- package/dist/composables/useDrag.d.ts +1 -1
- package/dist/composables/useFontCatalog.d.ts +1 -1
- package/dist/composables/useFormatPainter.d.ts +1 -1
- package/dist/composables/useFormatToolbar.d.ts +1 -1
- package/dist/composables/useGuides.d.ts +1 -1
- package/dist/composables/useHistory.d.ts +1 -1
- package/dist/composables/useHostAdapter.d.ts +1 -1
- package/dist/composables/useSelection.d.ts +1 -1
- package/dist/composables/useShrinkFit.d.ts +1 -1
- package/dist/composables/useStudioChrome.d.ts +1 -1
- package/dist/composables/useTableSelection.d.ts +1 -1
- package/dist/composables/useToolbarOverflow.d.ts +1 -1
- package/dist/help-content/changelog.d.ts +1 -1
- package/dist/help-content/faq.d.ts +1 -1
- package/dist/help-content/features.d.ts +1 -1
- package/dist/help-content/getting-started.d.ts +1 -1
- package/dist/help-content/index.d.ts +1 -1
- package/dist/help-content/shortcuts.d.ts +1 -1
- package/dist/index.cjs +29 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4683 -4467
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @worm-vue3-print/canvas v1.3.
|
|
2
|
+
* @worm-vue3-print/canvas v1.3.8
|
|
3
3
|
* Copyright (c) 2026 worm <liu_long_qqcom@qq.com>
|
|
4
4
|
* SPDX-FileCopyrightText: 2026 worm <liu_long_qqcom@qq.com>
|
|
5
5
|
* SPDX-License-Identifier: MIT
|
|
6
|
-
*/"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),be=require("@worm-vue3-print/core"),b=require("@worm-vue3-print/core/designer"),re=require("lucide-vue-next"),Me=require("@worm-vue3-print/core/browser"),Lt=require("jsbarcode"),Yt=require("dompurify"),Je=Symbol("selected-ids"),Ut=Symbol("preview-ids");function Xt(t){const l=e.ref(new Set),o=e.ref(new Set),n=e.computed(()=>t.value.filter(g=>l.value.has(g.id))),i=e.computed(()=>l.value.size>0);function u(g,p=!1){if(p){const w=new Set(l.value);w.has(g)?w.delete(g):w.add(g),l.value=w}else l.value=new Set([g])}function a(){l.value=new Set}function r(g){l.value=new Set(g)}function d(g){o.value=new Set(g)}function c(){o.value=new Set}function m(){l.value=new Set(o.value),o.value=new Set}function f(){const g=n.value;if(g.length===0)return null;let p=1/0,w=1/0,C=-1/0,N=-1/0;return g.forEach(v=>{p=Math.min(p,v.options.left),w=Math.min(w,v.options.top),C=Math.max(C,v.options.left+v.options.width),N=Math.max(N,v.options.top+v.options.height)}),{left:p,top:w,width:C-p,height:N-w}}return{selectedIds:l,selectedElements:n,hasSelection:i,select:u,clearSelection:a,selectAll:r,getSelectionBounds:f,previewIds:o,setPreview:d,clearPreview:c,commitPreview:m}}function Zt(){const t=e.ref(null);function l(i){t.value=i.map(u=>({options:{...u.options},printElementType:{...u.printElementType}}))}function o(i=10){if(!t.value)return null;const u=new Map;for(const r of t.value){const d=r.options.groupId;d&&u.set(d,(u.get(d)??0)+1)}const a=new Map;for(const[r,d]of u)a.set(r,d>=2?b.generateGroupId():void 0);return t.value.map(r=>({id:b.generateId(),options:{...r.options,left:r.options.left+i,top:r.options.top+i,groupId:r.options.groupId?a.get(r.options.groupId):void 0},printElementType:{...r.printElementType}}))}function n(){return t.value!==null&&t.value.length>0}return{clipboard:t,copy:l,paste:o,hasData:n}}function Jt(t){const o=e.ref([]),n=e.ref([]),i=e.ref(!1),u=e.ref(!1);function a(){i.value=o.value.length>0,u.value=n.value.length>0}function r(p){const w={elements:JSON.parse(JSON.stringify(p?.elements??[])),templateData:JSON.parse(JSON.stringify(p?.templateData??{}))};return p?.pages&&(w.pages=JSON.parse(JSON.stringify(p.pages)),p.activePageIndex!==void 0&&(w.activePageIndex=p.activePageIndex)),w}function d(p){return r(p)}function c(p){o.value.push(d(p)),n.value=[],o.value.length>50&&o.value.shift(),a()}function m(p){if(o.value.length===0)return null;const w=o.value.pop();return n.value.push(p?d(p):r(w)),a(),o.value.length>0?r(o.value[o.value.length-1]):null}function f(p){if(n.value.length===0)return null;const w=n.value.pop();return o.value.push(p?d(p):r(w)),a(),r(w)}function g(){o.value=[],n.value=[],a()}return{push:c,undo:m,redo:f,canUndo:i,canRedo:u,clear:g}}const pt="开启拼版后只能有一个设计页面";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:[]},elements:[],watermark:{}}}function Ze(t){const l=(o,n)=>(o??[]).map(i=>{const u={...i.options};return(i.printElementType?.type??i.type)==="table"&&b.syncTableElementSize(u),{id:i.id||b.generateId(),zone:n,options:u,printElementType:{...i.printElementType}}});return{...t,margins:{...t.margins},header:{height:t.header?.height??10,elements:[]},footer:{height:t.footer?.height??10,elements:[]},guides:[...t.guides??[]],elements:[...l(t.elements??[],"content"),...l(t.header?.elements??[],"header"),...l(t.footer?.elements??[],"footer")]}}function wt(t){const l=(n,i)=>{const u=Ze(b.normalizeTemplateUnits(n));return u.name||(u.name=`页面 ${i+1}`),u};if(!t)return[l(Re(),0)];const o=Array.isArray(t.pages)?t.pages:[t];return o.length?o.map(l):[l(Re(),0)]}function Ct(t){const l=t.elements,o=n=>l.filter(i=>(i.zone||"content")===n).map(i=>({id:i.id,type:i.printElementType.type,options:{...i.options},printElementType:{...i.printElementType}}));return{unit:"mm",...t,header:{...t.header,elements:o("header")},footer:{...t.footer,elements:o("footer")},elements:o("content"),guides:[...t.guides??[]]}}function Qt(t={}){const l=e.ref(100),o=e.ref(!0),n=e.ref(!0),i=e.ref(!1),u=e.ref(!0),a=e.ref(wt(t.initialTemplate)),r=e.ref(0),d=e.ref(a.value[0]??Ze(Re())),c=e.computed(()=>a.value.some(F=>F.tiling?.enabled===!0));function m(){return c.value?(alert(pt),!0):!1}function f(){a.value[r.value]=d.value}function g(F){F<0||F>=a.value.length||(f(),r.value=F,d.value=a.value[F],ge())}const p=e.computed({get:()=>d.value.elements,set:F=>{d.value.elements=F}}),w=e.ref(t.initialFields||[]),{selectedIds:C,selectedElements:N,select:v,clearSelection:$,selectAll:W,previewIds:te,setPreview:J,clearPreview:L,commitPreview:E}=Xt(p),{group:O,ungroup:Y,getGroupedIds:z}=b.useGroup(),{copy:h,paste:A,hasData:k}=Zt(),{align:H}=b.useAlign(),{push:G,undo:q,redo:_,canUndo:B,canRedo:s}=Jt(),x=e.computed(()=>{if(C.value.size===0)return null;const F=C.value.values().next().value;return p.value.find(ae=>ae.id===F)||null}),ee=e.ref(null);function he(F){ee.value=F}function ge(){$(),he(null)}function se(){return{elements:p.value.map(F=>({id:F.id,zone:F.zone,options:JSON.parse(JSON.stringify(F.options)),printElementType:{...F.printElementType}})),templateData:{paperSize:d.value.paperSize,orientation:d.value.orientation,outputRotation:d.value.outputRotation,margins:{...d.value.margins},header:{height:d.value.header.height,elements:[]},footer:{height:d.value.footer.height,elements:[]},elements:[],customWidth:d.value.customWidth,customHeight:d.value.customHeight,watermark:d.value.watermark?{...d.value.watermark}:void 0,guides:[...d.value.guides??[]]},pages:JSON.parse(JSON.stringify(a.value)),activePageIndex:r.value}}function K(){G(se())}function S(F){return F.pages?.[F.activePageIndex??0]?.elements??F.elements}function T(){const F=q(se());F?.pages?(a.value=F.pages,r.value=F.activePageIndex??0,d.value=a.value[r.value]??a.value[0],ge()):F?.templateData&&(d.value={...F.templateData,elements:F.elements})}function j(){const F=_(se());F?.pages?(a.value=F.pages,r.value=F.activePageIndex??0,d.value=a.value[r.value]??a.value[0],ge()):F?.templateData&&(d.value={...F.templateData,elements:F.elements})}function Z(){h(N.value)}function ne(){h(N.value),pe()}function ve(){const F=A();F&&F.length>0&&(p.value.push(...F),K())}function M(){h(N.value);const F=A();F&&F.length>0&&(F.forEach(ae=>{ae.options.left+=5,ae.options.top+=5}),p.value.push(...F),v(F[0].id,!1),K())}function D(){l.value=100}const U=e.computed(()=>k());let oe=!1,le=null;const me=300;function R(F,ae){const ce=N.value.filter(ke=>!ke.options.locked);ce.length!==0&&(ce.forEach(ke=>{ke.options.left+=F,ke.options.top+=ae}),oe||(oe=!0,K()),le&&clearTimeout(le),le=setTimeout(()=>{oe=!1,le=null},me))}function I(){W(p.value.map(F=>F.id))}function y(F){H(N.value,F),K()}function V(F,ae=!1){if(ae){v(F,!0);return}C.value=new Set(z(p.value,F))}function P(){p.value=O(p.value,C.value),K()}function ie(){p.value=Y(p.value,C.value),K()}function pe(){C.value.size!==0&&(p.value=p.value.filter(F=>!C.value.has(F.id)),$(),K())}const{setup:ye,cleanup:we}=b.useKeyboard({onMove:R,onDelete:pe,onCopy:Z,onPaste:ve,onSelectAll:I,onUndo:T,onRedo:j,onDuplicate:M,onResetZoom:D,onAlignLeft:()=>y("left"),onAlignRight:()=>y("right"),onAlignCenterH:()=>y("vertical"),onAlignTop:()=>y("top"),onAlignBottom:()=>y("bottom"),onGroup:P,onUngroup:ie});let xe=null;function Le(){xe=se()}function _e(){if(!xe)return;const F=new Map(xe.elements.map(Ee=>[Ee.id,Ee]));let ae=!1;for(const Ee of p.value){const $e=F.get(Ee.id);if(!$e)continue;($e.options.left!==Ee.options.left||$e.options.top!==Ee.options.top||$e.options.width!==Ee.options.width||$e.options.height!==Ee.options.height)&&b.finalizeElementZone(Ee,d.value).rejected&&(ae=!0)}ae&&alert("该元素类型不能放入页眉/页脚");const ce=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ke=S(xe).map(ce).join("|"),Se=S(se()).map(ce).join("|");xe=null,ke!==Se&&K()}function We(F,ae){const ce=b.zoneFromPaperPoint(d.value,ae.x,ae.y);if(ce!=="content"&&!b.ZONE_ALLOWED_TYPES.includes(F.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ke=b.getZoneRects(d.value)[ce];return F.zone=ce,F.options.left=ae.x-ke.left,F.options.top=ae.y-ke.top,ce!=="content"&&b.clampToZone(F,ke),!0}function et(F,ae){const ce=b.createRuntimeElement(F);ae&&!We(ce,ae)||(p.value.push(ce),v(ce.id,!1),K())}function tt(F,ae){const ce=b.createFieldElement(F);ae&&!We(ce,ae)||(p.value.push(ce),v(ce.id,!1),K())}function ot(F){if(C.value.size===0)return;const ae=C.value.values().next().value,ce=p.value.find(Ae=>Ae.id===ae);if(!ce)return;const ke=ce.options.zIndex??0,Se=p.value.map(Ae=>Ae.options.zIndex??0),Ee=Math.max(...Se,0),$e=Math.min(...Se,0);switch(F){case"top":ce.options.zIndex=Ee+1;break;case"bottom":ce.options.zIndex=$e-1;break;case"up":ce.options.zIndex=ke+1;break;case"down":ce.options.zIndex=ke-1;break}K()}function nt(F,ae){const{width:ce,height:ke}=b.getPaperDimensions(d.value),Se=96/25.4;l.value=b.computeFitScale(F,ae,ce*Se,ke*Se)}function lt(F){if(d.value={...F},a.value[r.value]=d.value,a.value.length>1){const ae={paperSize:F.paperSize,orientation:F.orientation,outputRotation:F.outputRotation,customWidth:F.customWidth,customHeight:F.customHeight};for(const ce of a.value)Object.assign(ce,ae)}K()}function Ge(){return f(),a.value.length<=1?Ct(a.value[0]):{version:1,pages:a.value.map(Ct)}}function ze(F,ae){a.value=wt(F),r.value=0,d.value=a.value[0],ae&&(d.value={...d.value,elements:ae.map(ce=>({...ce,id:ce.id||b.generateId(),zone:ce.zone||"content",options:{...ce.options},printElementType:{...ce.printElementType}}))},a.value[r.value]=d.value),G(se())}function qe(){const F=new Set(a.value.map(ce=>ce.name));let ae=a.value.length+1;for(;F.has(`页面 ${ae}`);)ae++;return`页面 ${ae}`}function at(){if(m())return;f();const F=a.value[r.value]??Re(),ae=Ze({...Re(),paperSize:F.paperSize,orientation:F.orientation,customWidth:F.customWidth,customHeight:F.customHeight,name:qe()});a.value.push(ae),r.value=a.value.length-1,d.value=ae,ge(),K()}function it(){if(m())return;f();const F=a.value[r.value],ae=JSON.parse(JSON.stringify(F));ae.name=`${F.name??`页面 ${r.value+1}`} 副本`,ae.elements=ae.elements.map(ce=>({...ce,id:b.generateId()})),a.value.splice(r.value+1,0,ae),g(r.value+1),K()}function Ke(F){a.value.length<=1||(f(),a.value.splice(F,1),F<r.value?r.value--:F===r.value&&r.value>=a.value.length&&(r.value=a.value.length-1),d.value=a.value[r.value],ge(),K())}function rt(F,ae){a.value[F]&&(a.value[F].name=ae)}function st(F,ae){if(F===ae)return;f();const[ce]=a.value.splice(F,1);a.value.splice(ae,0,ce),r.value=ae,d.value=ce,ge(),K()}return G(se()),e.onMounted(()=>ye()),e.onUnmounted(()=>{we(),le&&(clearTimeout(le),le=null)}),{scale:l,showRuler:o,showGrid:n,snapToGrid:i,showTableGhostBorder:u,templateData:d,elements:p,fields:w,tilingEnabled:c,pages:a,activePageIndex:r,switchPage:g,addPage:at,duplicatePage:it,deletePage:Ke,renamePage:rt,movePage:st,selectedIds:C,selectedElements:N,selectedElement:x,select:v,selectElement:V,clearSelection:$,selectAll:I,previewIds:te,setPreview:J,clearPreview:L,commitPreview:E,hasClipboard:U,copy:Z,paste:ve,cutSelected:ne,tableSelection:ee,setTableSelection:he,canUndo:B,canRedo:s,undo:T,redo:j,recordHistory:K,alignSelected:y,groupSelected:P,ungroupSelected:ie,deleteSelected:pe,duplicateSelected:M,resetZoom:D,dragStart:Le,dragStop:_e,addElement:et,addFieldElement:tt,moveLayer:ot,fitToWindow:nt,updateTemplateData:lt,getTemplateJson:Ge,loadTemplate:ze}}const Ce=Symbol("mixed"),vt=new Set(["text","longText"]);function _t(t){const{elements:l,selectedIds:o,tableSelection:n,recordHistory:i}=t,u=e.computed(()=>l.value.filter(k=>o.value.has(k.id)&&!k.options.locked)),a=e.computed(()=>{const k=n.value;return k?l.value.find(H=>H.id===k.elementId)??null:null}),r=e.computed(()=>n.value&&a.value?"cells":u.value.length>0||o.value.size>0?"elements":"none"),d=e.computed(()=>{const k=n.value,H=a.value?.options.tableRows;if(!k||!H)return[];const G=[];for(let q=k.r1;q<=k.r2;q++)for(let _=k.c1;_<=k.c2;_++){const B=H[q]?.cells[_];B&&!B.merged&&G.push(B)}return G}),c=e.computed(()=>u.value.filter(k=>vt.has(k.printElementType.type))),m=e.computed(()=>r.value==="cells"?d.value.length>0:r.value!=="elements"?!1:u.value.length>0&&c.value.length===u.value.length),f=e.computed(()=>r.value==="cells"?d.value:c.value.map(k=>k.options));function g(k){if(!k.length)return;const H=k[0];return k.every(G=>G===H)?H:Ce}const p=(k,H)=>(k??"").split(/\s+/).includes(H),w=e.computed(()=>{const k=f.value;if(!k.length)return{fontFamily:void 0,fontSize:void 0,color:void 0,backgroundColor:void 0,textAlign:void 0,verticalAlign:void 0,bold:!1,underline:!1,strike:!1};const H=k.map(q=>q.fontWeight==="bold"||q.fontWeight==="bolder"),G=k.map(q=>q.textDecoration);return{fontFamily:g(k.map(q=>q.fontFamily)),fontSize:g(k.map(q=>q.fontSize)),color:g(k.map(q=>q.color)),backgroundColor:g(k.map(q=>q.backgroundColor)),textAlign:g(k.map(q=>r.value==="cells"?q.align:q.textAlign)),verticalAlign:g(k.map(q=>r.value==="cells"?q.valign:q.verticalAlign)),bold:H.every(Boolean)?!0:H.some(Boolean)?Ce:!1,underline:G.map(q=>p(q,"underline")).every(Boolean)?!0:G.some(q=>p(q,"underline"))?Ce:!1,strike:G.map(q=>p(q,"line-through")).every(Boolean)?!0:G.some(q=>p(q,"line-through"))?Ce:!1}});function C(k){const H=d.value;H.length&&(H.forEach(k),i())}function N(k){if(r.value==="cells"){C(s=>{"fontFamily"in k&&(s.fontFamily=k.fontFamily),"fontSize"in k&&(s.fontSize=k.fontSize),"color"in k&&(s.color=k.color),"backgroundColor"in k&&(s.backgroundColor=k.backgroundColor),"textAlign"in k&&(s.align=k.textAlign),"verticalAlign"in k&&(s.valign=k.verticalAlign)});return}const H=c.value,G=u.value,_=["fontFamily","fontSize","color","textAlign","verticalAlign"].some(s=>s in k),B="backgroundColor"in k;!(H.length&&_)&&!(G.length&&B)||(H.forEach(s=>{const x=s.options;"fontFamily"in k&&(x.fontFamily=k.fontFamily),"fontSize"in k&&(x.fontSize=k.fontSize),"color"in k&&(x.color=k.color),"textAlign"in k&&(x.textAlign=k.textAlign),"verticalAlign"in k&&(x.verticalAlign=k.verticalAlign)}),B&&G.forEach(s=>{s.options.backgroundColor=k.backgroundColor}),i())}function v(){if(r.value==="cells"){const G=w.value.bold!==!0;C(q=>{q.fontWeight=G?"bold":void 0});return}const k=w.value.bold!==!0,H=c.value;H.length&&(H.forEach(G=>{G.options.fontWeight=k?"bold":"normal"}),i())}function $(k){if(r.value==="cells")return;const H=c.value;if(!H.length)return;const G=w.value[k==="underline"?"underline":"strike"]!==!0;H.forEach(q=>{const _=(q.options.textDecoration??"").split(/\s+/).filter(Boolean),B=_.indexOf(k);G&&B<0&&_.push(k),!G&&B>=0&&_.splice(B,1),q.options.textDecoration=_.length?_.join(" "):void 0}),i()}const W=()=>$("underline"),te=()=>$("line-through");function J(k,H){const G=u.value;G.length&&(G.forEach(q=>{q.options.borders=void 0,k==="none"?q.options.borderWidth=0:(q.options.borderWidth=H.width,q.options.borderStyle=H.style,q.options.borderColor=H.color)}),i())}function L(k,H){const G=n.value,q=a.value?.options.tableRows;!G||!q||(b.applyBorderPreset(q,{r1:G.r1,c1:G.c1,r2:G.r2,c2:G.c2},k,H),i())}function E(k,H,G){C(q=>{const _={...q.borders??{}};for(const B of k)G?_[B]={...H}:delete _[B];q.borders=_})}const O=["top","right","bottom","left"],Y=e.computed(()=>{if(r.value!=="cells")return null;const k=d.value;if(!k.length)return null;const H={};for(const G of O){const q=k.map(_=>!!_.borders?.[G]);H[G]=q.every(Boolean)?!0:q.some(Boolean)?Ce:!1}return H});function z(k,H){const G=Y.value?.[k]!==!0;E([k],H,G)}const h=e.computed(()=>{if(r.value!=="elements")return null;const k=u.value;if(!k.length)return null;const H={};for(const G of O){const q=k.map(_=>!!_.options.borders?.[G]);H[G]=q.every(Boolean)?!0:q.some(Boolean)?Ce:!1}return H});function A(k,H){const G=u.value;if(!G.length)return;const q=h.value?.[k]!==!0;G.forEach(_=>{const B={..._.options.borders??{}};q?B[k]={width:H.width,style:H.style,color:H.color}:delete B[k],_.options.borders=B}),i()}return{context:r,fontEditable:m,values:w,applyStyle:N,toggleBold:v,toggleUnderline:W,toggleStrike:te,applyElementBorder:J,applyCellBorderPreset:L,applyCellBorderEdges:E,cellEdges:Y,toggleCellEdge:z,elementEdges:h,toggleElementEdge:A}}const eo=["fontFamily","fontSize","fontWeight","color","textAlign","verticalAlign","textDecoration"];function to(t){const{elements:l,selectedIds:o,recordHistory:n}=t,i=e.ref(!1),u=e.ref(!1),a=e.ref(null);let r=null;const d=e.computed(()=>l.value.filter(C=>o.value.has(C.id)&&!C.options.locked)),c=e.computed(()=>d.value.length===1);function m(C){if(!C)return;const N={};for(const v of b.ELEMENT_BORDER_SIDES){const $=C[v];$&&(N[v]={...$})}return N}function f(C=!1){const N=d.value[0];if(!N)return!1;const v=N.options,$=N.printElementType.type;return r={text:vt.has($)?Object.fromEntries(eo.map(W=>[W,v[W]])):null,backgroundColor:v.backgroundColor,border:b.acceptsElementBorder($)?{borderWidth:v.borderWidth,borderStyle:v.borderStyle,borderColor:v.borderColor,borders:m(v.borders)}:null},a.value=N.id,i.value=!0,u.value=C,!0}function g(){i.value=!1,u.value=!1,a.value=null,r=null}function p(C){const N=r;if(!N||C.options.locked||C.id===a.value)return!1;const v=C.options,$=C.printElementType.type;return N.text&&vt.has($)&&Object.assign(v,N.text),v.backgroundColor=N.backgroundColor,N.border&&b.acceptsElementBorder($)&&(v.borderWidth=N.border.borderWidth,v.borderStyle=N.border.borderStyle,v.borderColor=N.border.borderColor,v.borders=m(N.border.borders)),!0}e.watch(o,()=>{if(!i.value||!r)return;const C=d.value;if(!C.length){g();return}let N=!1;C.forEach(v=>{N=p(v)||N}),N&&(n(),u.value||g())});function w(C){if(C.key!=="Escape"||!i.value)return;const N=C.target?.tagName;N==="INPUT"||N==="TEXTAREA"||N==="SELECT"||g()}return document.addEventListener("keydown",w),e.onScopeDispose(()=>document.removeEventListener("keydown",w)),{active:i,locked:u,sourceId:a,capturable:c,capture:f,cancel:g}}let St=0;function oo(){return St+=1,`guide-${St}`}function no(t,l){const o=e.computed(()=>t.value.guides??[]);function n(d){t.value={...t.value,guides:d([...t.value.guides??[]])},l()}function i(d,c){n(m=>(m.push({type:d,position:c,id:oo()}),m))}function u(d,c){n(m=>m.map(f=>f.id===d?{...f,position:c}:f))}function a(d){n(c=>c.filter(m=>m.id!==d))}function r(){const d=[],c=[];for(const m of o.value)m.type==="vertical"?d.push(m.position):c.push(m.position);return{vertical:d,horizontal:c}}return{guides:o,addGuide:i,moveGuide:u,removeGuide:a,getGuidePositions:r}}const He=Symbol("table-edit"),ft=Symbol("print-upload-image"),gt=Symbol("print-upload-design-background"),ht=Symbol("print-font-catalog"),lo=e.computed(()=>[]);function ao(t){return{catalog:e.computed(()=>{const o=[],n=new Set;for(const i of e.toValue(t)??[]){const u=i?.family?.trim();if(!u)continue;const a=u.toLowerCase();if(n.has(a))continue;n.add(a);const r=i.label?.trim();o.push(r?{family:u,label:r}:{family:u})}return o})}}function io(){return e.inject(ht,lo)}function xt(t,l){const o=l?.trim().toLowerCase();if(o)return t.find(n=>n.family.trim().toLowerCase()===o)}function Bt(t){return t.label?`${t.label}(${t.family})`:t.family}function Fe(t){return t.toLowerCase().replace(/\s+/g,"")}function $t(t,l){if(t===l)return 0;if(t.startsWith(l))return 1;if(t.includes(l))return 2;let o=0;for(const n of t)if(n===l[o]&&o++,o===l.length)return 3;return-1}function ro(t,l){const o=Fe(l.trim());return o?t.map((n,i)=>({font:n,index:i,rank:so(n,o)})).filter(n=>n.rank>=0).sort((n,i)=>n.rank-i.rank||n.index-i.index).map(n=>n.font):[...t]}function so(t,l){const o=$t(Fe(t.family),l);if(!t.label)return o;const n=$t(Fe(t.label),l);return o<0?n:n<0?o:Math.min(o,n)}const co="print-designer-font-face";function uo(t){const l=`${co}-${e.useId()}`;let o;e.watchEffect(()=>{const n=e.toValue(t);if(!n){o?.remove(),o=void 0;return}o||(o=document.createElement("style"),o.id=l,document.head.appendChild(o)),o.textContent=n}),e.onUnmounted(()=>{o?.remove(),o=void 0})}const mo=e.defineComponent({__name:"HelpButton",emits:["click"],setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:o[0]||(o[0]=n=>l.$emit("click"))},[...o[1]||(o[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),ue=(t,l)=>{const o=t.__vccOpts||t;for(const[n,i]of l)o[n]=i;return o},po=ue(mo,[["__scopeId","data-v-80ccab03"]]),vo=["disabled","data-test","data-tip"],fo=e.defineComponent({__name:"ToolbarDropdown",props:{disabled:{type:Boolean,default:!1},testId:{default:"dd-trigger"},tip:{},panelClass:{},keepMounted:{type:Boolean,default:!1}},setup(t){const l=t,o=e.ref(!1),n=e.ref(null);function i(u){o.value&&(n.value?.contains(u.target)||(o.value=!1))}return e.watch(()=>l.disabled,u=>{u&&(o.value=!1)}),e.onMounted(()=>document.addEventListener("pointerdown",i)),e.onUnmounted(()=>document.removeEventListener("pointerdown",i)),(u,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapRef",ref:n,class:"tb-dd"},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["tb-dd-trigger",{on:o.value}]),disabled:t.disabled,"data-test":t.testId,"data-tip":t.tip,onClick:a[0]||(a[0]=r=>o.value=!o.value)},[e.renderSlot(u.$slots,"trigger",{},void 0,!0),e.createVNode(e.unref(re.ChevronDown),{size:12,class:e.normalizeClass(["tb-dd-arrow",{up:o.value}])},null,8,["class"])],10,vo),t.keepMounted||o.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tb-dd-panel",[t.panelClass,{"is-hidden":t.keepMounted&&!o.value}]])},[e.renderSlot(u.$slots,"default",{},void 0,!0)],2)):e.createCommentVNode("",!0)],512))}}),Oe=ue(fo,[["__scopeId","data-v-e5f0ee73"]]);function go(t){return`tb-more-slot-${t}`}const bt=Symbol("worm-print-toolbar-overflow"),ct=2,ho=74;function bo(){const t=e.shallowRef(null),l=new Map,o=e.reactive(new Map),n=new Map;let i=0;const u=e.ref(new Set),a=e.ref(!1),r=e.computed(()=>[...o.values()].sort((W,te)=>W.order-te.order)),d=e.computed(()=>u.value.size>0);function c(){for(const[W,te]of l){const J=te.offsetWidth;J>0&&n.set(W,J)}}function m(W){const te=getComputedStyle(W),J=Number.parseFloat(te.gap)||ct,L=Number.parseFloat(te.paddingLeft)||0,E=Number.parseFloat(te.paddingRight)||0;let O=0;for(const Y of Array.from(W.children)){if(Y.hasAttribute("data-overflow-more")||Y.hasAttribute("data-overflow-spacer"))continue;const z=Math.max(Y.offsetWidth,Y.scrollWidth);z<=0||(O+=z+J)}return{available:W.clientWidth-L-E,natural:O}}function f(){const W=t.value;if(!W)return;const{available:te,natural:J}=m(W),L=u.value.size>0;L||(i=J,c());const E=r.value.map(h=>({id:h.id,order:h.order,width:n.get(h.id)??0})),O=E.reduce((h,A)=>h-A.width-ct,i),Y=b.resolveToolbarOverflow({available:te,pinned:O,moreTriggerWidth:ho,gap:ct,units:E});Y.movedIds.length===u.value.size&&Y.movedIds.every(h=>u.value.has(h))||(u.value=new Set(Y.movedIds)),a.value=Y.overflowRemains,L&&u.value.size===0&&e.nextTick(f)}let g=null;function p(W){W!==t.value&&(g?.disconnect(),t.value=W,W&&typeof ResizeObserver<"u"&&(g=new ResizeObserver(()=>f()),g.observe(W)),e.nextTick(f))}function w(W,te){o.set(W.id,W),l.set(W.id,te),e.nextTick(f)}function C(W){l.delete(W),o.delete(W),n.delete(W),e.nextTick(f)}const N=document.createElement("div");function v(W){return u.value.has(W)}function $(W){return u.value,t.value?.querySelector(`[data-overflow-slot="${W}"]`)??N}return e.onUnmounted(()=>g?.disconnect()),{attachRoot:p,registerUnit:w,unregisterUnit:C,refresh:f,movedIds:u,overflowRemains:a,hasMoved:d,chain:r,moved:v,slotEl:$}}function It(){const t=bo();return e.provide(bt,t),t}function Et(){return e.inject(bt,null)}function Ft(){const t=e.ref(new Set),l=document.createElement("div");return{attachRoot:()=>{},registerUnit:()=>{},unregisterUnit:()=>{},refresh:()=>{},movedIds:t,overflowRemains:e.ref(!1),hasMoved:e.computed(()=>!1),chain:e.computed(()=>[]),moved:()=>!1,slotEl:()=>l}}function yt(t){return{mounted(l,o){l.dataset.unit=o.value.id,t.registerUnit(o.value,l)},unmounted(l,o){t.unregisterUnit(o.value.id)}}}const Eo={key:0,class:"tb-group tb-more-group","data-overflow-more":""},yo={class:"tb-menu tb-more-menu"},ko=["data-unit"],Vo={class:"tb-menu-label"},No=["id","data-overflow-slot","data-unit"],wo=e.defineComponent({__name:"ToolbarMore",setup(t){const l=Et(),o=e.computed(()=>!!l&&l.hasMoved.value),n=e.computed(()=>l?.chain.value??[]),i=e.computed(()=>l?.movedIds.value??new Set);return(u,a)=>e.unref(l)?e.withDirectives((e.openBlock(),e.createElementBlock("div",Eo,[e.createVNode(Oe,{"test-id":"more-dd",tip:"更多","keep-mounted":"","panel-class":"tb-more-panel"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(re.Ellipsis),{size:15}),a[0]||(a[0]=e.createElementVNode("span",{class:"tb-btn-text"},"更多",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",yo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:r.id,class:"tb-more-item","data-unit":r.id},[e.createElementVNode("div",Vo,e.toDisplayString(r.label),1),e.createElementVNode("div",{id:e.unref(go)(r.id),class:"tb-more-slot","data-overflow-slot":r.id,"data-unit":r.id},null,8,No)],8,ko)),[[e.vShow,i.value.has(r.id)]])),128))])]),_:1})],512)),[[e.vShow,o.value]]):e.createCommentVNode("",!0)}}),Co=ue(wo,[["__scopeId","data-v-5d13dbea"]]),So={class:"tb-group tb-brand"},xo={class:"tb-title"},Bo={class:"tb-title-name"},$o={class:"tb-group"},Do=["disabled"],To=["disabled"],Mo={class:"tb-ou tb-group"},zo={class:"tb-menu","data-test":"arrange-panel"},Ao={class:"tb-menu-grid"},Po=["disabled"],Ro=["disabled"],Lo=["disabled"],Uo=["disabled"],Io=["disabled"],Fo=["disabled"],Oo=["disabled"],Ho=["disabled"],Wo={class:"tb-menu-grid"},Go=["disabled"],qo=["disabled"],Ko=["disabled"],jo=["disabled"],Yo={class:"tb-menu-grid"},Xo=["disabled"],Zo=["disabled"],Jo={class:"tb-menu tb-menu-rows","data-test":"view-panel"},Qo={class:"tb-ou tb-group"},_o={class:"tb-zoom"},en={class:"tb-ou tb-group"},tn=["disabled","data-tip"],on=["disabled","data-tip"],nn=["disabled","data-tip"],ln={key:0,class:"tb-group"},an={class:"tb-group"},rn=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},showHelp:{type:Boolean,default:!0},clipboardDisabled:{type:Boolean,default:!0},hasClipboard:{type:Boolean,default:!1}},{scale:{default:100},scaleModifiers:{}}),emits:e.mergeModels(["preview","save","undo","redo","align","move-layer","toggle-ruler","toggle-grid","toggle-snap","toggle-table-ghost-border","group","ungroup","fit-window","zoom","help","copy","paste","delete"],["update:scale"]),setup(t){const l=It(),o=yt(l),n=e.ref(null);e.onMounted(()=>l.attachRoot(n.value));const i=e.useModel(t,"scale"),u=t,a=e.computed(()=>u.clipboardDisabled?"粘贴 (Ctrl+V),需选中元素":u.hasClipboard?"粘贴 (Ctrl+V)":"粘贴 (Ctrl+V),剪贴板为空");return(r,d)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:e.normalizeClass(["designer-toolbar",{"is-tight":e.unref(l).overflowRemains.value}])},[e.createElementVNode("div",So,[d[30]||(d[30]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-b50decc4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-b50decc4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-b50decc4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-b50decc4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-b50decc4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-b50decc4></line></svg></span>',1)),e.createElementVNode("div",xo,[e.createElementVNode("span",Bo,e.toDisplayString(t.isEdit?"编辑模板":"新建模板"),1),d[29]||(d[29]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",$o,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canUndo,onClick:d[0]||(d[0]=c=>r.$emit("undo")),"data-tip":"撤销"},[e.createVNode(e.unref(re.Undo2),{size:15})],8,Do),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canRedo,onClick:d[1]||(d[1]=c=>r.$emit("redo")),"data-tip":"重做"},[e.createVNode(e.unref(re.Redo2),{size:15})],8,To)]),e.renderSlot(r.$slots,"default",{},void 0,!0),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("arrange-view"),disabled:!e.unref(l).moved("arrange-view")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Mo,[e.createVNode(Oe,{"test-id":"arrange-dd",tip:"排列"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(re.Layers),{size:15}),d[31]||(d[31]=e.createElementVNode("span",{class:"tb-btn-text"},"排列",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",zo,[d[32]||(d[32]=e.createElementVNode("div",{class:"tb-menu-label"},"对齐 / 分布",-1)),e.createElementVNode("div",Ao,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[2]||(d[2]=c=>r.$emit("align","left")),"data-tip":"左对齐"},[e.createVNode(e.unref(re.AlignStartVertical),{size:15})],8,Po),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[3]||(d[3]=c=>r.$emit("align","right")),"data-tip":"右对齐"},[e.createVNode(e.unref(re.AlignEndVertical),{size:15})],8,Ro),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[4]||(d[4]=c=>r.$emit("align","top")),"data-tip":"顶对齐"},[e.createVNode(e.unref(re.AlignStartHorizontal),{size:15})],8,Lo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[5]||(d[5]=c=>r.$emit("align","bottom")),"data-tip":"底对齐"},[e.createVNode(e.unref(re.AlignEndHorizontal),{size:15})],8,Uo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[6]||(d[6]=c=>r.$emit("align","vertical")),"data-tip":"水平居中"},[e.createVNode(e.unref(re.AlignCenterVertical),{size:15})],8,Io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[7]||(d[7]=c=>r.$emit("align","horizontal")),"data-tip":"垂直居中"},[e.createVNode(e.unref(re.AlignCenterHorizontal),{size:15})],8,Fo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[8]||(d[8]=c=>r.$emit("align","distributeHor")),"data-tip":"水平分布"},[e.createVNode(e.unref(re.AlignHorizontalSpaceBetween),{size:15})],8,Oo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[9]||(d[9]=c=>r.$emit("align","distributeVer")),"data-tip":"垂直分布"},[e.createVNode(e.unref(re.AlignVerticalSpaceBetween),{size:15})],8,Ho)]),d[33]||(d[33]=e.createElementVNode("div",{class:"tb-menu-label"},"层级",-1)),e.createElementVNode("div",Wo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:d[10]||(d[10]=c=>r.$emit("move-layer","top")),"data-tip":"置顶"},[e.createVNode(e.unref(re.ArrowUpToLine),{size:15})],8,Go),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:d[11]||(d[11]=c=>r.$emit("move-layer","up")),"data-tip":"上移一层"},[e.createVNode(e.unref(re.ArrowUp),{size:15})],8,qo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:d[12]||(d[12]=c=>r.$emit("move-layer","down")),"data-tip":"下移一层"},[e.createVNode(e.unref(re.ArrowDown),{size:15})],8,Ko),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:d[13]||(d[13]=c=>r.$emit("move-layer","bottom")),"data-tip":"置底"},[e.createVNode(e.unref(re.ArrowDownToLine),{size:15})],8,jo)]),d[34]||(d[34]=e.createElementVNode("div",{class:"tb-menu-label"},"组合",-1)),e.createElementVNode("div",Yo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:d[14]||(d[14]=c=>r.$emit("group")),"data-tip":"组合 (Ctrl+G)"},[e.createVNode(e.unref(re.Group),{size:15})],8,Xo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.selectedElementHasGroup,onClick:d[15]||(d[15]=c=>r.$emit("ungroup")),"data-tip":"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(re.Ungroup),{size:15})],8,Zo)])])]),_:1}),e.createVNode(Oe,{"test-id":"view-dd",tip:"视图"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(re.Eye),{size:15}),d[35]||(d[35]=e.createElementVNode("span",{class:"tb-btn-text"},"视图",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Jo,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:d[16]||(d[16]=c=>r.$emit("toggle-ruler"))},[...d[36]||(d[36]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:d[17]||(d[17]=c=>r.$emit("toggle-grid"))},[...d[37]||(d[37]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:d[18]||(d[18]=c=>r.$emit("toggle-table-ghost-border"))},[...d[38]||(d[38]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:d[19]||(d[19]=c=>r.$emit("toggle-snap"))},[...d[39]||(d[39]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2)])]),_:1})])),[[e.unref(o),{id:"arrange-view",order:4,label:"排列 / 视图"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("zoom"),disabled:!e.unref(l).moved("zoom")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Qo,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:d[20]||(d[20]=c=>r.$emit("fit-window")),"data-tip":"适应窗口"},[e.createVNode(e.unref(re.Maximize),{size:15})]),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:d[21]||(d[21]=c=>r.$emit("zoom",-10)),"data-tip":"缩小"},[e.createVNode(e.unref(re.ZoomOut),{size:15})]),e.createElementVNode("span",_o,e.toDisplayString(i.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:d[22]||(d[22]=c=>r.$emit("zoom",10)),"data-tip":"放大"},[e.createVNode(e.unref(re.ZoomIn),{size:15})])])),[[e.unref(o),{id:"zoom",order:3,label:"缩放"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("clipboard"),disabled:!e.unref(l).moved("clipboard")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",en,[e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"copy",disabled:t.clipboardDisabled,onClick:d[23]||(d[23]=c=>r.$emit("copy")),"data-tip":t.clipboardDisabled?"复制 (Ctrl+C),需选中元素":"复制 (Ctrl+C)"},[e.createVNode(e.unref(re.Copy),{size:15})],8,tn),e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"paste",disabled:t.clipboardDisabled||!t.hasClipboard,onClick:d[24]||(d[24]=c=>r.$emit("paste")),"data-tip":a.value},[e.createVNode(e.unref(re.ClipboardPaste),{size:15})],8,on),e.createElementVNode("button",{class:"tb-btn tb-icon danger","data-test":"delete",disabled:t.clipboardDisabled,onClick:d[25]||(d[25]=c=>r.$emit("delete")),"data-tip":t.clipboardDisabled?"删除 (Delete),需选中元素":"删除 (Delete)"},[e.createVNode(e.unref(re.Trash2),{size:15})],8,nn)])),[[e.unref(o),{id:"clipboard",order:1,label:"剪贴板"}]])],8,["to","disabled"])),e.createVNode(Co),d[40]||(d[40]=e.createElementVNode("div",{class:"tb-spacer","data-overflow-spacer":""},null,-1)),t.showHelp?(e.openBlock(),e.createElementBlock("div",ln,[e.createVNode(po,{onClick:d[26]||(d[26]=c=>r.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",an,[e.createElementVNode("button",{class:"btn-secondary","data-tip":"预览模板打印效果",onClick:d[27]||(d[27]=c=>r.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary","data-tip":"保存模板",onClick:d[28]||(d[28]=c=>r.$emit("save"))},"保存")])],2))}}),sn=ue(rn,[["__scopeId","data-v-b50decc4"]]),dn={class:"font-select"},cn=["placeholder","disabled","aria-expanded","aria-activedescendant","onKeydown"],un=["id","aria-selected","onMousedown"],mn=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(t,{emit:l}){const o=t,n=l,i=io(),u=`font-select-list-${e.useId()}`,a=e.ref(null),r=e.ref(w(o.modelValue)),d=e.ref(""),c=e.ref(!1),m=e.ref(-1),f=e.computed(()=>{const Y=o.modelValue?.trim();return Y?xt(i.value,Y)?"":Y:""}),g=e.computed(()=>{const Y=(o.modelValue??"").trim(),z=(k,H,G,q)=>({kind:k,key:H,label:G,value:q,selected:(q??"")===Y}),h=d.value.trim();if(!h){const k=[z("clear","__clear__",o.placeholder)];f.value&&k.push(z("unknown","__unknown__",`${f.value}(未知)`,f.value));for(const H of i.value)k.push(z("font",H.family,Bt(H),H.family));return k}const A=ro(i.value,h).map(k=>z("font",k.family,Bt(k),k.family));if(!A.length){const k=p(h);A.push(z("free","__free__",`使用「${k}」`,k))}return A});function p(Y){const z=Fe(Y);return i.value.find(A=>A.label&&Fe(A.label)===z)?.family??Y}function w(Y){const z=Y?.trim();return z?xt(i.value,z)?.label??z:""}const C=e.computed(()=>c.value&&m.value>=0?`${u}-${m.value}`:void 0);function N(){const Y=(o.modelValue??"").trim();return g.value.findIndex(z=>(z.value??"")===Y)}function v(){c.value||(c.value=!0,d.value="",m.value=N())}function $(){c.value=!0}function W(){c.value=!0,d.value=r.value,m.value=g.value.length?0:-1}function te(Y){if(!c.value){v();return}const z=g.value.length-1;z<0||(m.value=Math.min(Math.max(m.value+Y,0),z),J())}function J(){e.nextTick(()=>{a.value?.children[m.value]?.scrollIntoView?.({block:"nearest"})})}function L(){if(!c.value)return;const Y=g.value[m.value];if(Y){E(Y);return}const z=d.value.trim();if(z){const h=p(z);E({value:h})}}function E(Y){r.value=w(Y.value),d.value="",c.value=!1,m.value=-1,n("update:model-value",Y.value)}function O(){c.value=!1,d.value="",m.value=-1,r.value=w(o.modelValue)}return e.watch(()=>o.modelValue,Y=>{r.value=w(Y)}),(Y,z)=>(e.openBlock(),e.createElementBlock("div",dn,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":z[0]||(z[0]=h=>r.value=h),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:t.placeholder,disabled:t.disabled,"aria-expanded":c.value,"aria-controls":u,"aria-activedescendant":C.value,onFocus:v,onClick:$,onInput:W,onKeydown:[z[1]||(z[1]=e.withKeys(e.withModifiers(h=>te(1),["prevent"]),["down"])),z[2]||(z[2]=e.withKeys(e.withModifiers(h=>te(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(L,["prevent"]),["enter"]),e.withKeys(e.withModifiers(O,["prevent"]),["esc"])],onBlur:O},null,40,cn),[[e.vModelText,r.value]]),c.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:u,ref_key:"listRef",ref:a,class:"font-select-list",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(h,A)=>(e.openBlock(),e.createElementBlock("li",{id:`${u}-${A}`,key:h.key,class:e.normalizeClass(["font-select-option",{"is-active":A===m.value,"is-muted":h.kind==="unknown"||h.kind==="free"}]),role:"option","aria-selected":h.selected,onMousedown:e.withModifiers(k=>E(h),["prevent"])},e.toDisplayString(h.label),43,un))),128))],512)):e.createCommentVNode("",!0)]))}}),kt=ue(mn,[["__scopeId","data-v-f1aae453"]]),pn={class:"pd-stepper"},vn=["disabled"],fn=["value","placeholder","min","max","step","disabled"],gn=["disabled"],hn=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>{const C=String(o.step),N=C.indexOf(".");return N===-1?0:C.length-N-1});function u(C){return Number.isFinite(C)?Number(C.toFixed(i.value)):0}const a=e.computed(()=>{const C=o.modelValue;if(!(C==null||!Number.isFinite(C)))return u(C)}),r=e.ref(a.value===void 0?"":String(a.value));e.watch(a,C=>{r.value=C===void 0?"":String(C)});const d=e.computed(()=>a.value!==void 0?a.value:o.min!==void 0?o.min:0),c=e.computed(()=>o.min!==void 0&&d.value<=o.min),m=e.computed(()=>o.max!==void 0&&d.value>=o.max);function f(C){let N=u(C);return o.min!==void 0&&N<o.min&&(N=o.min),o.max!==void 0&&N>o.max&&(N=o.max),N}function g(C){if(C<0&&c.value||C>0&&m.value)return;const N=f(d.value+C*o.step);r.value=String(N),n("update:modelValue",N)}function p(C){r.value=C.target.value}function w(){const C=r.value.trim();if(C===""){a.value!==void 0&&(r.value=String(a.value));return}const N=Number(C);if(!Number.isFinite(N)){r.value=a.value===void 0?"":String(a.value);return}const v=f(N);r.value=String(v),v!==a.value&&n("update:modelValue",v)}return(C,N)=>(e.openBlock(),e.createElementBlock("div",pn,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:c.value||t.disabled,title:"减小","aria-label":"减小",onClick:N[0]||(N[0]=v=>g(-1))},"−",8,vn),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:r.value,placeholder:t.placeholder,min:t.min,max:t.max,step:t.step,disabled:t.disabled,onInput:p,onChange:w,onBlur:w,onKeydown:N[1]||(N[1]=e.withKeys(e.withModifiers(v=>v.target.blur(),["prevent"]),["enter"]))},null,40,fn),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:m.value||t.disabled,title:"增大","aria-label":"增大",onClick:N[2]||(N[2]=v=>g(1))},"+",8,gn)]))}}),de=ue(hn,[["__scopeId","data-v-627f09cb"]]),bn=["aria-expanded","title"],En={class:"picker-preview"},yn={class:"picker-heading"},kn=["disabled"],Vn={class:"preset-color-grid"},Nn=["title","aria-label","onClick"],wn=e.defineComponent({inheritAttrs:!1,__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),u=e.ref(),a=e.ref(),r=e.ref(),d=e.ref({}),c=e.ref(0),m=e.ref(0),f=e.ref(0),g=e.ref("#000000"),p=e.ref(!1),w=e.computed(()=>o.modelValue||"#000000"),C=e.computed(()=>o.modelValue?{background:o.modelValue}:{background:"transparent"}),N=e.computed(()=>x(he(c.value,m.value,f.value))),v=e.computed({get:()=>Math.round(c.value),set:K=>L(ge(K),m.value,f.value)});e.watch(()=>o.modelValue,K=>{if(!K){g.value="";return}J(K)},{immediate:!0});function $(K){g.value=K.toUpperCase(),J(K),n("update:modelValue",K)}function W(){o.clearable&&n("update:modelValue","")}function te(K){const T=K.target.value.trim();if(!T){o.clearable&&n("update:modelValue","");return}B(T)&&(J(T),n("update:modelValue",s(T)))}function J(K){const S=B(K);if(!S)return;const T=ee(S.r,S.g,S.b);c.value=T.h,m.value=T.s,f.value=T.v,g.value=s(K).toUpperCase()}function L(K,S,T){c.value=ge(K),m.value=se(S),f.value=se(T),g.value=N.value.toUpperCase(),n("update:modelValue",N.value)}function E(K){K.currentTarget.setPointerCapture(K.pointerId),p.value=!0,z(K)}function O(K){p.value&&z(K)}function Y(K){p.value=!1;const S=K.currentTarget;S.hasPointerCapture(K.pointerId)&&S.releasePointerCapture(K.pointerId)}function z(K){const S=r.value;if(!S)return;const T=S.getBoundingClientRect(),j=se((K.clientX-T.left)/T.width),Z=se(1-(K.clientY-T.top)/T.height);L(c.value,j,Z)}function h(K){const S=K.shiftKey?.1:.02;let T=!0;K.key==="ArrowLeft"?L(c.value,m.value-S,f.value):K.key==="ArrowRight"?L(c.value,m.value+S,f.value):K.key==="ArrowUp"?L(c.value,m.value,f.value+S):K.key==="ArrowDown"?L(c.value,m.value,f.value-S):T=!1,T&&K.preventDefault()}function A(){i.value?H():k()}async function k(){const K=u.value;if(!K)return;o.modelValue&&J(w.value),i.value=!0,await e.nextTick();const S=K.getBoundingClientRect(),T=190,j=a.value?.offsetHeight??216,Z=8,ne=Math.min(S.left,window.innerWidth-T-Z),ve=S.bottom+6,M=ve+j>window.innerHeight-Z?Math.max(Z,S.top-j-6):ve;d.value={left:`${Math.max(Z,ne)}px`,top:`${M}px`}}function H(){i.value=!1}function G(K){const S=K.target;u.value?.contains(S)||a.value?.contains(S)||H()}function q(){i.value&&H()}function _(K){K.key==="Escape"&&i.value&&H()}function B(K){const S=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(K.trim());if(!S)return null;const T=S[1],j=T.length===3?T.split("").map(Z=>Z+Z).join(""):T;return{r:Number.parseInt(j.slice(0,2),16),g:Number.parseInt(j.slice(2,4),16),b:Number.parseInt(j.slice(4,6),16)}}function s(K){const S=B(K);return S?x(S):"#000000"}function x({r:K,g:S,b:T}){return`#${[K,S,T].map(j=>Math.round(se(j/255)*255).toString(16).padStart(2,"0")).join("")}`}function ee(K,S,T){const j=K/255,Z=S/255,ne=T/255,ve=Math.max(j,Z,ne),M=Math.min(j,Z,ne),D=ve-M;let U=0;return D!==0&&(ve===j?U=(Z-ne)/D%6:ve===Z?U=(ne-j)/D+2:U=(j-Z)/D+4,U*=60,U<0&&(U+=360)),{h:U,s:ve===0?0:D/ve,v:ve}}function he(K,S,T){const j=T*S,Z=(K%360+360)%360/60,ne=j*(1-Math.abs(Z%2-1)),[ve,M,D]=Z<1?[j,ne,0]:Z<2?[ne,j,0]:Z<3?[0,j,ne]:Z<4?[0,ne,j]:Z<5?[ne,0,j]:[j,0,ne],U=T-j;return{r:(ve+U)*255,g:(M+U)*255,b:(D+U)*255}}function ge(K){return((Number.isFinite(K)?K:0)%360+360)%360}function se(K){return Math.min(1,Math.max(0,Number.isFinite(K)?K:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",G,!0),window.addEventListener("scroll",q,!0),window.addEventListener("resize",q),document.addEventListener("keydown",_)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",G,!0),window.removeEventListener("scroll",q,!0),window.removeEventListener("resize",q),document.removeEventListener("keydown",_)}),(K,S)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",e.mergeProps({ref_key:"triggerRef",ref:u},K.$attrs,{type:"button",class:"preset-color-trigger","aria-expanded":i.value,"aria-haspopup":"dialog",title:t.modelValue||"自动",onClick:A}),[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(C.value)},null,4)],16,bn),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:a,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(d.value),onPointerdown:S[2]||(S[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",En,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!t.modelValue}]),style:e.normalizeStyle(t.modelValue?{background:N.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=T=>g.value=T),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:te},null,544),[[e.vModelText,g.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:r,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(c.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:E,onPointermove:O,onPointerup:Y,onPointercancel:Y,onKeydown:h},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${m.value*100}%`,top:`${(1-f.value)*100}%`,background:N.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[1]||(S[1]=T=>v.value=T),class:"picker-hue",type:"range",min:"0",max:"360",step:"1","aria-label":"色相"},null,512),[[e.vModelText,v.value,void 0,{number:!0}]]),e.createElementVNode("div",yn,[S[4]||(S[4]=e.createElementVNode("span",null,"常用颜色",-1)),t.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!t.modelValue,title:"清除选中的颜色",onClick:W},[...S[3]||(S[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,kn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Vn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b.PRESET_COLORS),T=>(e.openBlock(),e.createElementBlock("button",{key:T,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!t.modelValue&&T.toLowerCase()===t.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:T}),title:T,"aria-label":T,onClick:j=>$(T)},null,14,Nn))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),Ne=ue(wn,[["__scopeId","data-v-4ff2cd97"]]),Cn={class:"format-toolbar"},Sn={class:"tb-ou ft-group"},xn=["disabled","data-tip"],Bn={class:"tb-ou ft-group"},$n={class:"ft-font"},Dn={class:"ft-size","data-test":"font-size"},Tn={class:"tb-ou ft-group"},Mn=["disabled","data-tip"],zn=["disabled","data-tip"],An=["disabled","data-tip"],Pn={class:"tb-ou ft-group"},Rn=["title"],Ln={class:"ft-glyph"},Un={class:"tb-ou ft-group"},In={class:"ft-align-panel","data-test":"align-panel"},Fn={class:"ft-align-row"},On={class:"ft-align-row"},Hn={class:"tb-ou ft-group"},Wn={class:"ft-border-panel","data-test":"border-panel"},Gn={class:"ft-border-grid"},qn=["disabled","data-tip"],Kn={class:"ft-style-row"},jn=["data-test","data-tip","onClick"],Yn={class:"ft-border-style-row"},Xn={class:"ft-line-width"},Zn={class:"ft-border-style-row"},Jn=e.defineComponent({__name:"FormatToolbar",props:{format:{},painter:{}},setup(t){const l=Et()??Ft(),o=yt(l),n=t,i=e.computed(()=>n.format.values.value),u=e.computed(()=>!n.format.fontEditable.value),a=e.computed(()=>u.value||n.format.context.value==="cells"),r=e.computed(()=>n.format.context.value==="none"),d=e.computed(()=>n.painter?.active.value===!0),c=e.computed(()=>!n.painter||!d.value&&(n.format.context.value==="none"||n.format.context.value==="cells"||!n.painter.capturable.value)),m=e.computed(()=>d.value?"退出格式刷(Esc)":n.painter?n.format.context.value==="cells"?"格式刷(表格单元格暂不支持)":n.format.context.value==="none"?"格式刷(需选中元素)":n.painter.capturable.value?"格式刷:单击刷一次,双击连续刷":"格式刷(请仅选中一个源元素)":"格式刷");function f(){const _=n.painter;if(_){if(_.active.value){_.cancel();return}_.capture(!1)}}function g(){n.painter?.capture(!0)}const p=e.computed(()=>i.value.fontFamily===Ce?void 0:i.value.fontFamily),w=e.computed(()=>i.value.fontFamily===Ce?"混合":"默认"),C=e.computed(()=>i.value.fontSize===Ce?void 0:i.value.fontSize),N=e.computed(()=>i.value.fontSize===Ce?"混合":"默认"),v=e.computed(()=>i.value.bold===!0),$=e.computed(()=>i.value.color===Ce?void 0:i.value.color),W=e.computed(()=>i.value.backgroundColor===Ce?void 0:i.value.backgroundColor),te=e.computed(()=>i.value.textAlign==="center"?re.TextAlignCenter:i.value.textAlign==="right"?re.TextAlignEnd:i.value.textAlign==="justify"?re.TextAlignJustify:re.TextAlignStart),J=e.computed(()=>u.value?"对齐(需选中文本元素或单元格)":"对齐"),L=e.computed(()=>r.value?"边框(需选中元素)":"边框");function E(_){return u.value?`${_}(需选中文本元素)`:n.format.context.value==="cells"?`${_}(单元格不支持)`:_}const O=e.ref("solid"),Y=e.ref(.75),z=e.ref("#333333"),h=e.computed(()=>n.format.context.value==="cells"),A=[{key:"solid",label:"实线",preview:"2px solid currentColor"},{key:"dashed",label:"虚线",preview:"2px dashed currentColor"},{key:"dotted",label:"点线",preview:"2px dotted currentColor"},{key:"double",label:"双线",preview:"3px double currentColor"}];function k(){return{width:Y.value,style:O.value,color:z.value}}function H(_){h.value?n.format.applyCellBorderPreset(_,k()):n.format.applyElementBorder(_==="none"?"none":"all",k())}function G(_){return(h.value?n.format.cellEdges.value:n.format.elementEdges.value)?.[_]===!0}function q(_){h.value?n.format.toggleCellEdge(_,k()):n.format.toggleElementEdge(_,k())}return(_,B)=>(e.openBlock(),e.createElementBlock("div",Cn,[(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("painter"),disabled:!e.unref(l).moved("painter")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Sn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:d.value}]),"data-test":"format-painter",disabled:c.value,"data-tip":m.value,onClick:f,onDblclick:g},[e.createVNode(e.unref(re.Paintbrush),{size:15})],42,xn)])),[[e.unref(o),{id:"painter",order:2,label:"格式刷"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("font"),disabled:!e.unref(l).moved("font")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Bn,[e.createElementVNode("div",$n,[e.createVNode(kt,{"model-value":p.value,placeholder:w.value,disabled:u.value,"onUpdate:modelValue":B[0]||(B[0]=s=>t.format.applyStyle({fontFamily:s}))},null,8,["model-value","placeholder","disabled"])]),e.createElementVNode("div",Dn,[e.createVNode(de,{"model-value":C.value,min:5,max:72,placeholder:N.value,disabled:u.value,"onUpdate:modelValue":B[1]||(B[1]=s=>t.format.applyStyle({fontSize:s}))},null,8,["model-value","placeholder","disabled"])])])),[[e.unref(o),{id:"font",order:9,label:"字体与字号"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("style"),disabled:!e.unref(l).moved("style")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Tn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:v.value}]),"data-test":"bold",disabled:u.value,"data-tip":u.value?"加粗(需选中文本元素或单元格)":"加粗",onClick:B[2]||(B[2]=s=>t.format.toggleBold())},[e.createVNode(e.unref(re.Bold),{size:15})],10,Mn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.underline===!0}]),"data-test":"underline",disabled:a.value,"data-tip":E("下划线"),onClick:B[3]||(B[3]=s=>t.format.toggleUnderline())},[e.createVNode(e.unref(re.Underline),{size:15})],10,zn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.strike===!0}]),"data-test":"strike",disabled:a.value,"data-tip":E("删除线"),onClick:B[4]||(B[4]=s=>t.format.toggleStrike())},[e.createVNode(e.unref(re.Strikethrough),{size:15})],10,An)])),[[e.unref(o),{id:"style",order:8,label:"文字样式"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("color"),disabled:!e.unref(l).moved("color")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Pn,[e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:u.value}]),title:`字体颜色${u.value?"(需选中或混选文本元素)":""}`},[e.createVNode(Ne,{"model-value":$.value,"onUpdate:modelValue":B[5]||(B[5]=s=>t.format.applyStyle({color:s}))},null,8,["model-value"]),B[24]||(B[24]=e.createElementVNode("span",{class:"ft-glyph"},"A",-1))],10,Rn),e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:r.value}]),title:"背景色"},[e.createVNode(Ne,{"model-value":W.value,"onUpdate:modelValue":B[6]||(B[6]=s=>t.format.applyStyle({backgroundColor:s}))},null,8,["model-value"]),e.createElementVNode("span",Ln,[e.createVNode(e.unref(re.PaintBucket),{size:14})])],2)])),[[e.unref(o),{id:"color",order:6,label:"颜色"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("align"),disabled:!e.unref(l).moved("align")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Un,[e.createVNode(Oe,{"test-id":"align-dd",tip:J.value,disabled:u.value},{trigger:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(te.value),{size:15})),B[25]||(B[25]=e.createElementVNode("span",{class:"ft-btn-text"},"对齐",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",In,[e.createElementVNode("div",Fn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="left"}]),"data-test":"align-left","data-tip":"左对齐",onClick:B[7]||(B[7]=s=>t.format.applyStyle({textAlign:"left"}))},[e.createVNode(e.unref(re.TextAlignStart),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="center"}]),"data-test":"align-center","data-tip":"水平居中",onClick:B[8]||(B[8]=s=>t.format.applyStyle({textAlign:"center"}))},[e.createVNode(e.unref(re.TextAlignCenter),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="right"}]),"data-test":"align-right","data-tip":"右对齐",onClick:B[9]||(B[9]=s=>t.format.applyStyle({textAlign:"right"}))},[e.createVNode(e.unref(re.TextAlignEnd),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="justify"}]),"data-test":"align-justify","data-tip":"两端对齐(撑满行宽,含末行)",onClick:B[10]||(B[10]=s=>t.format.applyStyle({textAlign:"justify"}))},[e.createVNode(e.unref(re.TextAlignJustify),{size:15})],2)]),e.createElementVNode("div",On,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="top"}]),"data-test":"valign-top","data-tip":"顶端对齐",onClick:B[11]||(B[11]=s=>t.format.applyStyle({verticalAlign:"top"}))},[e.createVNode(e.unref(re.ArrowUpToLine),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="middle"}]),"data-test":"valign-middle","data-tip":"垂直居中",onClick:B[12]||(B[12]=s=>t.format.applyStyle({verticalAlign:"middle"}))},[e.createVNode(e.unref(re.ChevronsUpDown),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="bottom"}]),"data-test":"valign-bottom","data-tip":"底端对齐",onClick:B[13]||(B[13]=s=>t.format.applyStyle({verticalAlign:"bottom"}))},[e.createVNode(e.unref(re.ArrowDownToLine),{size:15})],2)])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"align",order:7,label:"对齐"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("border"),disabled:!e.unref(l).moved("border")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Hn,[e.createVNode(Oe,{"test-id":"border",tip:L.value,disabled:r.value},{trigger:e.withCtx(()=>[e.createVNode(e.unref(re.Grid3x3),{size:15}),B[26]||(B[26]=e.createElementVNode("span",{class:"ft-btn-text"},"边框",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Wn,[e.createElementVNode("div",Gn,[e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-none","data-tip":"无边框",onClick:B[14]||(B[14]=s=>H("none"))},[...B[27]||(B[27]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"4",y1:"14",x2:"14",y2:"4"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-all","data-tip":"所有边框",onClick:B[15]||(B[15]=s=>H("all"))},[...B[28]||(B[28]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-outer","data-tip":"外侧边框",onClick:B[16]||(B[16]=s=>H("outer"))},[...B[29]||(B[29]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-inner",disabled:!h.value,"data-tip":h.value?"内部边框":"内部边框(仅表格单元格可用)",onClick:B[17]||(B[17]=s=>H("inner"))},[...B[30]||(B[30]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])],8,qn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:G("top")}]),"data-test":"edge-top","data-tip":"上边框",onClick:B[18]||(B[18]=s=>q("top"))},[...B[31]||(B[31]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"3",x2:"16",y2:"3"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:G("bottom")}]),"data-test":"edge-bottom","data-tip":"下边框",onClick:B[19]||(B[19]=s=>q("bottom"))},[...B[32]||(B[32]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"15",x2:"16",y2:"15"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:G("left")}]),"data-test":"edge-left","data-tip":"左边框",onClick:B[20]||(B[20]=s=>q("left"))},[...B[33]||(B[33]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"2",x2:"3",y2:"16"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:G("right")}]),"data-test":"edge-right","data-tip":"右边框",onClick:B[21]||(B[21]=s=>q("right"))},[...B[34]||(B[34]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"15",y1:"2",x2:"15",y2:"16"})],-1)])],2)]),e.createElementVNode("div",Kn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(A,s=>e.createElementVNode("button",{key:s.key,type:"button",class:e.normalizeClass(["ft-style-btn",{on:O.value===s.key}]),"data-test":`style-${s.key}`,"data-tip":s.label,onClick:x=>O.value=s.key},[e.createElementVNode("span",{class:"ft-style-line",style:e.normalizeStyle({borderTop:s.preview})},null,4)],10,jn)),64))]),e.createElementVNode("div",Yn,[B[35]||(B[35]=e.createElementVNode("span",{class:"ft-edge-label"},"粗细",-1)),e.createElementVNode("div",Xn,[e.createVNode(de,{modelValue:Y.value,"onUpdate:modelValue":B[22]||(B[22]=s=>Y.value=s),min:.25,max:5,step:.25},null,8,["modelValue"])])]),e.createElementVNode("div",Zn,[B[36]||(B[36]=e.createElementVNode("span",{class:"ft-edge-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:z.value,"onUpdate:modelValue":B[23]||(B[23]=s=>z.value=s),clearable:!1},null,8,["modelValue"])])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"border",order:5,label:"边框"}]])],8,["to","disabled"]))]))}}),Qn=ue(Jn,[["__scopeId","data-v-721695e4"]]),_n={class:"layer-panel"},el=["onClick"],tl={class:"layer-icon"},ol={class:"layer-name"},nl={key:0,class:"layer-zone"},ll={class:"layer-zindex"},al={key:0,class:"layer-actions"},il={key:1,class:"layer-actions"},rl=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer","group","ungroup"],setup(t){const l=t,o=e.computed(()=>l.elements.filter(m=>l.selectedIds.has(m.id))),n=e.computed(()=>o.value.length>=2),i=e.computed(()=>o.value.some(m=>!!m.options.groupId)),u=e.computed(()=>[...l.elements].sort((m,f)=>(f.options.zIndex??0)-(m.options.zIndex??0))),a={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function r(m){return a[m.printElementType.type]||"?"}function d(m){return m.options.title||m.printElementType.title||m.printElementType.type}function c(m){return m.zone==="header"?"页眉":m.zone==="footer"?"页脚":""}return(m,f)=>(e.openBlock(),e.createElementBlock("div",_n,[f[6]||(f[6]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,g=>(e.openBlock(),e.createElementBlock("div",{key:g.id,class:e.normalizeClass(["layer-item",{active:t.selectedIds.has(g.id)}]),onClick:p=>m.$emit("select",g.id,p.ctrlKey||p.metaKey)},[e.createElementVNode("span",tl,e.toDisplayString(r(g)),1),e.createElementVNode("span",ol,e.toDisplayString(d(g)),1),c(g)?(e.openBlock(),e.createElementBlock("span",nl,e.toDisplayString(c(g)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",ll,"z:"+e.toDisplayString(g.options.zIndex??0),1)],10,el))),128)),u.value.length>0?(e.openBlock(),e.createElementBlock("div",al,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[0]||(f[0]=g=>m.$emit("move-layer","top")),title:"置顶"},[e.createVNode(e.unref(re.ArrowUpToLine),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[1]||(f[1]=g=>m.$emit("move-layer","up")),title:"上移"},[e.createVNode(e.unref(re.ArrowUp),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[2]||(f[2]=g=>m.$emit("move-layer","down")),title:"下移"},[e.createVNode(e.unref(re.ArrowDown),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[3]||(f[3]=g=>m.$emit("move-layer","bottom")),title:"置底"},[e.createVNode(e.unref(re.ArrowDownToLine),{size:14})])])):e.createCommentVNode("",!0),n.value||i.value?(e.openBlock(),e.createElementBlock("div",il,[n.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"pd-button small",onClick:f[4]||(f[4]=g=>m.$emit("group")),title:"组合 (Ctrl+G)"},[e.createVNode(e.unref(re.Group),{size:14})])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"pd-button small",onClick:f[5]||(f[5]=g=>m.$emit("ungroup")),title:"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(re.Ungroup),{size:14})])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),sl=ue(rl,[["__scopeId","data-v-567d273e"]]),dl={class:"field-tree-panel"},cl={class:"tree-container"},ul=["onClick"],ml={class:"expand-icon"},pl={class:"node-icon"},vl={class:"group-label"},fl=["onDragstart"],gl={class:"node-label"},hl={class:"node-key"},bl={key:0,class:"pd-empty"},El=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(""),u=e.ref(new Set),a=e.computed(()=>!!i.value.trim()),r=e.computed(()=>b.filterGroups(b.groupFields(o.fields),i.value));function d(m){const f=new Set(u.value);f.has(m)?f.delete(m):f.add(m),u.value=f}function c(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",dl,[f[2]||(f[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=g=>i.value=g),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,i.value]]),e.createElementVNode("div",cl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:g.key||"_top"},[g.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":g.isList}]),onClick:p=>d(g.key)},[e.createElementVNode("span",ml,e.toDisplayString(u.value.has(g.key)&&!a.value?"▶":"▼"),1),e.createElementVNode("span",pl,e.toDisplayString(g.isList?"📋":"📁"),1),e.createElementVNode("span",vl,e.toDisplayString(g.label),1)],10,ul)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.fields,p=>(e.openBlock(),e.createElementBlock("div",{key:p.fieldKey,class:"field-row",draggable:"true",style:e.normalizeStyle({paddingLeft:(g.key?22:8)+"px"}),onDragstart:w=>c(w,p)},[f[1]||(f[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",gl,e.toDisplayString(p.fieldLabel),1),e.createElementVNode("span",hl,"("+e.toDisplayString(p.fieldKey)+")",1)],44,fl))),128))],512),[[e.vShow,!g.key||a.value||!u.value.has(g.key)]])],64))),128))]),r.value.length===0?(e.openBlock(),e.createElementBlock("p",bl,"暂无字段")):e.createCommentVNode("",!0)]))}}),yl=ue(El,[["__scopeId","data-v-9b326f07"]]),kl={key:0,class:"left-collapsed"},Vl={class:"left-head"},Nl={class:"pd-tabs left-tabs"},wl={class:"pd-tab-bar",role:"tablist"},Cl={class:"pd-tab-pane",role:"tabpanel"},Sl=["onDragstart"],xl={class:"material-icon"},Bl={class:"material-label"},$l={class:"pd-tab-pane",role:"tabpanel"},Dl={class:"pd-tab-pane",role:"tabpanel"},Tl=e.defineComponent({__name:"LeftPanel",props:{fields:{},elements:{},selectedIds:{},collapsed:{type:Boolean}},emits:["select","move-layer","group","ungroup","toggle-visible","toggle-locked","field-drag","toggle-collapse"],setup(t,{emit:l}){const o=l,n=e.ref("elements"),i=[{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 u(d,c){d.dataTransfer?.setData("elementType",c)}function a(d){o("field-drag",d)}function r(d){n.value=d,o("toggle-collapse")}return(d,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",kl,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:c[0]||(c[0]=m=>r(n.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="elements"}]),title:"元素",onClick:c[1]||(c[1]=m=>r("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="fields"}]),title:"字段",onClick:c[2]||(c[2]=m=>r("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="layers"}]),title:"图层",onClick:c[3]||(c[3]=m=>r("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Vl,[c[14]||(c[14]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:c[4]||(c[4]=m=>d.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",Nl,[e.createElementVNode("div",wl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="elements"}]),onClick:c[5]||(c[5]=m=>n.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="fields"}]),onClick:c[6]||(c[6]=m=>n.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="layers"}]),onClick:c[7]||(c[7]=m=>n.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",Cl,[c[15]||(c[15]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,m=>e.createElementVNode("div",{key:m.type,class:"material-card",draggable:"true",onDragstart:f=>u(f,m.type)},[e.createElementVNode("span",xl,e.toDisplayString(m.icon),1),e.createElementVNode("span",Bl,e.toDisplayString(m.label),1)],40,Sl)),64))],512),[[e.vShow,n.value==="elements"]]),e.withDirectives(e.createElementVNode("div",$l,[e.createVNode(yl,{fields:t.fields,onFieldDrag:a},null,8,["fields"])],512),[[e.vShow,n.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Dl,[e.createVNode(sl,{elements:t.elements,"selected-ids":t.selectedIds,onSelect:c[8]||(c[8]=(m,f)=>d.$emit("select",m,f)),onMoveLayer:c[9]||(c[9]=m=>d.$emit("move-layer",m)),onGroup:c[10]||(c[10]=m=>d.$emit("group")),onUngroup:c[11]||(c[11]=m=>d.$emit("ungroup")),onToggleVisible:c[12]||(c[12]=m=>d.$emit("toggle-visible",m)),onToggleLocked:c[13]||(c[13]=m=>d.$emit("toggle-locked",m))},null,8,["elements","selected-ids"])],512),[[e.vShow,n.value==="layers"]])])],64))],2))}}),Ml=ue(Tl,[["__scopeId","data-v-4501eea7"]]);function zl(t,l){const o=e.ref(!1),n=e.ref(null);let i=0,u=0,a=0,r=0,d=!1;function c(C){if(l.disabled||C.button!==0)return;const N=C.target;if(!(N instanceof Element)||N.classList.contains("resize-handle"))return;o.value=!0,d=C.altKey,i=C.clientX,u=C.clientY;const v=t.value;v&&(a=parseFloat(v.style.left)||0,r=parseFloat(v.style.top)||0,n.value={left:a,top:r,width:parseFloat(v.style.width)||0,height:parseFloat(v.style.height)||0},l.onStart?.({altKey:d}),document.addEventListener("mousemove",f),document.addEventListener("mouseup",g),C.preventDefault())}function m(C){const N=l.getScale?.()??1;let v=a+(C.clientX-i)/N,$=r+(C.clientY-u)/N;if(l.axis==="x"&&($=r),l.axis==="y"&&(v=a),l.onAdsorb){const W=t.value;if(W){const te=parseFloat(W.style.width)||0,J=parseFloat(W.style.height)||0,L=l.onAdsorb({left:v,top:$,width:te,height:J});v=L.left,$=L.top}}return{left:v,top:$}}function f(C){const N=m(C);n.value&&(n.value.left=N.left,n.value.top=N.top),l.onDrag(N)}function g(C){o.value=!1;const N=m(C);l.onDragEnd?.(N,{altKey:d}),l.onStop?.(),n.value=null,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",g)}function p(){const C=t.value;C&&C.removeEventListener("mousedown",c),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",g)}function w(){p();const C=t.value;C&&C.addEventListener("mousedown",c)}return{isDragging:o,dragPreview:n,setup:w,cleanup:p}}function Al(t){const l=[];return t.getAttribute("data-fit")==="shrink"&&l.push(t),t.querySelectorAll('[data-fit="shrink"]').forEach(o=>l.push(o)),l}function Pl(t){t.querySelectorAll("[data-fit-size]").forEach(l=>{if(l.getAttribute("data-fit")==="shrink")return;l.removeAttribute("data-fit-size");const o=l.getAttribute("data-fit-base");o?l.style.fontSize=`${o}pt`:l.style.removeProperty("font-size")})}function Vt(t,l){const o=()=>{const n=t.value;n&&(Al(n).forEach(Me.fitTextNode),Pl(n))};e.watchEffect(()=>{l(),e.nextTick(o)},{flush:"post"}),e.onMounted(()=>{e.nextTick(o)})}const Rl=["data-fit","data-fit-base","data-fit-min"],Ll=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),u=e.computed(()=>b.resolveElementTextFit("text",l.element.options)),a=e.computed(()=>l.element.options.fontSize||12),r=e.computed(()=>b.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),d=e.computed(()=>{const m=l.element.options,f=u.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",...m.textAlign==="justify"?{textAlignLast:"justify"}:{},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",...m.textAlign==="justify"?{flexDirection:"column",justifyContent:o[m.verticalAlign]??"flex-start"}:{alignItems:o[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}}:{}}}),c=e.computed(()=>l.designMode?l.element.options.testData?l.element.options.testData:l.element.options.formatter||"文本":b.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[u.value,a.value,r.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.letterSpacing,l.element.options.lineHeight,c.value]),(m,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-text",style:e.normalizeStyle(d.value),"data-fit":u.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(r.value)},e.toDisplayString(c.value),13,Rl))}}),Ul={class:"print-image"},Il=["src"],Fl={key:1,class:"image-placeholder"},Ol=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const a=l.element.options.src||"";return a?a.includes("{")?l.designMode?b.evaluateTemplate(a,b.DEFAULT_DEMO_DATA):b.evaluateTemplate(a,l.data?.[0]||{}):a:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const u=e.computed(()=>({objectFit:l.element.options.fit||"contain",...l.element.options.objectPosition?{objectPosition:l.element.options.objectPosition}:{}}));return(a,r)=>(e.openBlock(),e.createElementBlock("div",Ul,[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(u.value),onError:i},null,44,Il)):(e.openBlock(),e.createElementBlock("div",Fl,"图片"))]))}}),Hl=ue(Ol,[["__scopeId","data-v-d61bb49e"]]),Wl=["data-fit","data-fit-base","data-fit-min"],Gl=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),u=e.computed(()=>b.resolveElementTextFit("longText",l.element.options)),a=e.computed(()=>l.element.options.fontSize||12),r=e.computed(()=>b.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),d=e.computed(()=>{const m=l.element.options,f=u.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:m.fontWeight||"normal",fontFamily:m.fontFamily||"inherit",color:m.color||"#333",backgroundColor:m.backgroundColor||"transparent",textAlign:m.textAlign||"left",...m.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:m.lineHeight?m.lineHeight+"pt":"1.5",letterSpacing:m.letterSpacing?m.letterSpacing+"pt":"normal",textIndent:m.longTextIndent?m.longTextIndent+"em":"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",...m.textAlign==="justify"?{flexDirection:"column",justifyContent:o[m.verticalAlign]??"flex-start"}:{alignItems:o[m.verticalAlign]??"flex-start",justifyContent:n[m.textAlign||"left"]??"flex-start"}}:{}}}),c=e.computed(()=>l.designMode?l.element.options.formatter?l.element.options.formatter:"长文本内容":b.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[u.value,a.value,r.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.lineHeight,c.value]),(m,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-longtext",style:e.normalizeStyle(d.value),"data-fit":u.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(r.value)},e.toDisplayString(c.value),13,Wl))}}),ql=["title"],Kl=["title","onClick"],jl=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(t,{emit:l}){const o=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],n=l;function i(u,a){n("action",u,a)}return(u,a)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:t.x+"px",top:t.y+"px"}),onMousedown:a[8]||(a[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:a[0]||(a[0]=r=>i("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:a[1]||(a[1]=r=>i("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteRow}]),onClick:a[2]||(a[2]=r=>t.canDeleteRow&&i("delete-row"))}," 删除行 ",2),a[9]||(a[9]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:"menu-item",onClick:a[3]||(a[3]=r=>i("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:a[4]||(a[4]=r=>i("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteCol}]),onClick:a[5]||(a[5]=r=>t.canDeleteCol&&i("delete-col"))}," 删除列 ",2),a[10]||(a[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!t.mergeDisabledReason}]),title:t.mergeDisabledReason||"",onClick:a[6]||(a[6]=r=>!t.mergeDisabledReason&&i("merge"))}," 合并单元格 ",10,ql),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canSplit}]),onClick:a[7]||(a[7]=r=>t.canSplit&&i("split"))}," 拆分单元格 ",2),a[11]||(a[11]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),a[12]||(a[12]=e.createElementVNode("div",{class:"menu-group-title"},"行类型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,r=>e.createElementVNode("div",{key:r.value,class:e.normalizeClass(["menu-item",{disabled:!!t.rowTypeDisabledReason(r.value),active:t.currentRowType===r.value}]),title:t.rowTypeDisabledReason(r.value)||"",onClick:d=>!t.rowTypeDisabledReason(r.value)&&i("set-row-type",r.value)},e.toDisplayString(r.label),11,Kl)),64))],36)):e.createCommentVNode("",!0)]))}}),Yl=ue(jl,[["__scopeId","data-v-fbbccae0"]]),Xl={class:"cell-barcode"},Zl=["preserveAspectRatio"],Jl=["src"],Ql={key:1,class:"cell-barcode-fallback"},_l=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},qrQuietZone:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(t){const l=t,o=e.ref(null),n=e.ref(!1),i=e.ref(""),u=e.ref(null),a={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},r=e.computed(()=>a[l.fit||"contain"]??"xMidYMid meet"),d=e.computed(()=>u.value?{width:u.value.width,height:u.value.height}:{maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}),c=e.computed(()=>({width:"100%",height:"100%",objectFit:l.fit||"contain",maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));function m(){if(n.value=!1,u.value=null,!o.value)return;const w=b.barcodeUnitsPerModule(l.barWidth);try{Lt(o.value,l.value,{format:l.barcodeType||"CODE128",width:w,height:b.BARCODE_BAR_HEIGHT_MODULES*w,displayValue:l.showText!==!1,fontSize:(l.barFontSize??b.BARCODE_TEXT_FONT_SIZE_MODULES)*w,margin:0,marginLeft:b.BARCODE_QUIET_ZONE_MODULES*w,marginRight:b.BARCODE_QUIET_ZONE_MODULES*w,marginTop:0,marginBottom:b.BARCODE_MARGIN_BOTTOM_MODULES*w})}catch{return}n.value=!0;const C=f(o.value),N=C?b.resolveBarcodeSize({unitWidth:C.width/w,unitHeight:C.height/w,boxWidthMm:b.barcodeAvailableBoxMm(l.targetWidthMm,l.maxWidth),boxHeightMm:b.barcodeAvailableBoxMm(l.targetHeightMm,l.maxHeight),dpi:l.printerDpi,barWidth:l.barWidth}):null;u.value=N?{width:`${N.widthMm}mm`,height:`${N.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function f(w){const C=(w.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return C.length!==4||C.some(N=>!Number.isFinite(N))?null:{width:C[2],height:C[3]}}function g(){if(!l.value){i.value="";return}try{const w=Me.browserCodeRenderer.render(l.value,"qrcode",{qrCodeLevel:String(l.qrCodeLevel||"M"),qrQuietZone:typeof l.qrQuietZone=="number"?l.qrQuietZone:void 0});i.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(w)}`}catch{i.value=""}}function p(){l.cellType==="barcode"?m():g()}return e.onMounted(p),e.watch(()=>[l.cellType,l.value,l.barcodeType,l.qrCodeLevel,l.qrQuietZone,l.showText,l.printerDpi,l.targetWidthMm,l.targetHeightMm,l.barWidth,l.barFontSize,l.maxWidth,l.maxHeight],p),(w,C)=>(e.openBlock(),e.createElementBlock("div",Xl,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:o,preserveAspectRatio:r.value,style:e.normalizeStyle(d.value)},null,12,Zl)),[[e.vShow,t.cellType==="barcode"&&n.value]]),t.cellType==="qrcode"&&i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:i.value,alt:"qrcode",style:e.normalizeStyle(c.value)},null,12,Jl)):e.createCommentVNode("",!0),!n.value&&t.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",Ql,e.toDisplayString(t.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),ea=ue(_l,[["__scopeId","data-v-f7222c41"]]),ta={class:"cell-image"},oa=["src"],na={key:1,class:"image-placeholder"},la=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},objectPosition:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{}},setup(t){const l=t,o=e.computed(()=>{const a=l.value||"";return a?a.includes("{")?l.designMode?b.evaluateTemplate(a,b.DEFAULT_DEMO_DATA):b.evaluateTemplate(a,l.data?.[0]||{}):a:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const u=e.computed(()=>({objectFit:l.fit||"contain",...l.objectPosition?{objectPosition:l.objectPosition}:{},maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));return(a,r)=>(e.openBlock(),e.createElementBlock("div",ta,[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(u.value),onError:i},null,44,oa)):(e.openBlock(),e.createElementBlock("div",na,"图片"))]))}}),aa=ue(la,[["__scopeId","data-v-0dc74627"]]),ia=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],ra=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],sa={key:0,class:"data-placeholder"},da={key:3,class:"data-placeholder"},ca={key:0,class:"col-resize-layer"},ua=["aria-label","onMousedown"],ma={key:1,class:"row-badges"},Ye=3.7795275591,pa=.1,va=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-cell"],setup(t,{emit:l}){const o={header:"题",data:"数",subtotal:"小",summary:"汇"},n=t,i=l,u=e.inject(He,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),a=e.computed(()=>n.element.options.tableRows??[]),r=e.computed(()=>n.element.options.tableColWidths??[]),d=e.computed(()=>n.element.options.tableDefaultFontSize??10),c=e.computed(()=>n.element.options.tableDefaultColor??"#333333"),m=e.computed(()=>{const R=u.tableSelection.value;return R&&R.elementId===n.element.id?R:null});function f(R){let I=0;for(let y=0;y<R;y++)I+=a.value[y].height;return I}const g=e.ref(null),p=e.ref(null),w=e.ref([]);function C(){if(!n.designMode)return;const R=g.value;if(!R)return;const I=R.offsetHeight;if(I<=0)return;const y=n.element.options,V=I/Ye;Math.abs(V-(y.height??0))>pa&&(y.height=Math.round(V*100)/100);const P=R.offsetTop;w.value=Array.from(R.rows).map(ie=>({top:(ie.offsetTop-P)/Ye,height:ie.offsetHeight/Ye}))}function N(R){return w.value[R]?.top??f(R)}function v(R){return w.value[R]?.height??a.value[R]?.height??0}e.watch(()=>[n.element.options,n.designMode],()=>C(),{deep:!0,flush:"post"}),e.onMounted(()=>{C(),document.fonts?.ready.then(()=>C())});const $=e.computed(()=>{const R=n.element.options.dataSource;if(R&&Array.isArray(b.DEFAULT_DEMO_DATA[R]))return b.DEFAULT_DEMO_DATA[R];for(const I of Object.values(b.DEFAULT_DEMO_DATA))if(Array.isArray(I))return I}),W=e.computed(()=>{if(n.data)return n.data});function te(R){return R.cellType==="barcode"||R.cellType==="qrcode"}function J(R,I){return te(I)?b.resolveBarcodeDesignValue(I.formatter,$.value):I.formatter||""}function L(R,I){const y=n.element.options,V={designMode:n.designMode,showGhostBorder:n.showTableGhostBorder};return{fontFamily:I.fontFamily||"inherit",textAlign:I.align??"left",...I.align==="justify"?{textAlignLast:"justify"}:{},verticalAlign:I.valign??"middle",fontSize:(I.fontSize??d.value)+"pt",fontWeight:I.fontWeight??"normal",color:I.color??c.value,backgroundColor:I.backgroundColor??"transparent",borderTop:b.resolveCellBorderCss(I.borders?.top,V),borderRight:b.resolveCellBorderCss(I.borders?.right,V),borderBottom:b.resolveCellBorderCss(I.borders?.bottom,V),borderLeft:b.resolveCellBorderCss(I.borders?.left,V),padding:(I.padding??y.tableDefaultPadding??1)+"mm",whiteSpace:I.wordWrap??!0?"normal":"nowrap",overflow:I.wordWrap??!0?"visible":"hidden"}}function E(R){return b.resolveCellTextFit(R)}function O(R){return E(R)!=="autoHeight"}function Y(R){return R.fontSize??d.value}function z(R,I){return b.cellFitCapMm(a.value,R,I,n.element.options.tableDefaultPadding??1)}function h(R,I){return b.cellFitWidthMm(r.value,R,I,n.element.options.tableDefaultPadding??1)}function A(R,I){return{maxHeight:z(I,R)+"mm",overflow:"hidden",...R.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}Vt(p,()=>[n.designMode,n.data?.length,r.value.join(","),d.value,n.element.options.tableDefaultPadding,a.value.map(R=>`${R.height}:${R.cells.map(I=>`${I.formatter??""}|${I.fontSize??""}|${I.wordWrap??""}|${I.textFit??""}|${I.colspan??1}`).join("~")}`).join(",")]);function k(R,I){const y=m.value;return{"cell-selected":!!y&&R>=y.r1&&R<=y.r2&&I>=y.c1&&I<=y.c2,"row-data-bg":a.value[R].type==="data"}}const H=e.ref(null);function G(R,I){const y=b.normalizeSelection(a.value,R,I);u.setTableSelection({elementId:n.element.id,...y})}function q(R,I,y){!n.designMode||!n.isSelected||(y.stopPropagation(),y.shiftKey&&m.value?G({r:m.value.r1,c:m.value.c1},{r:R,c:I}):(H.value={r:R,c:I},G({r:R,c:I},{r:R,c:I})),window.addEventListener("mouseup",()=>{H.value=null},{once:!0}))}function _(R,I){H.value&&G(H.value,{r:R,c:I})}function B(R,I){n.designMode&&i("dblclick-cell",n.element.id,R,I)}const s=e.reactive({visible:!1,x:0,y:0}),x=e.inject(Je,null);function ee(R,I,y){if(!n.designMode)return;!n.isSelected&&x&&(x.value=new Set([n.element.id]));const V=m.value;V&&R>=V.r1&&R<=V.r2&&I>=V.c1&&I<=V.c2||G({r:R,c:I},{r:R,c:I}),s.x=y.clientX,s.y=y.clientY,s.visible=!0,window.removeEventListener("mouseup",he),window.addEventListener("mouseup",he)}function he(R){R.target?.closest?.(".table-ctx-menu")||(s.visible=!1,window.removeEventListener("mouseup",he))}const ge=e.computed(()=>{const R=m.value;return R?b.canMergeReason(a.value,R):"未选择单元格"}),se=e.computed(()=>{const R=m.value;if(!R)return!1;for(let I=R.r1;I<=R.r2;I++)for(let y=R.c1;y<=R.c2;y++){const V=a.value[I].cells[y];if(!V.merged&&((V.rowspan??1)>1||(V.colspan??1)>1))return!0}return!1});function K(R){const I=m.value;if(!I)return"未选择单元格";if(I.r1!==I.r2)return"行类型仅支持单行设置";const y=JSON.parse(JSON.stringify(a.value));return b.setRowType(y,I.r1,R)}function S(){b.syncTableElementSize(n.element.options)}function T(R,I){const y=u.maxTableWidth.value,V=R.reduce((P,ie)=>P+ie,0)+R[I];return V>y?`插入后表格总宽 ${Math.round(V*10)/10}mm 超过打印范围宽度 ${y}mm,请先缩小列宽`:null}function j(R,I){const y=m.value;if(!y)return;s.visible=!1;const V=n.element.options,P=V.tableRows,ie=V.tableColWidths;let pe=null;switch(R){case"insert-row-above":b.insertRow(P,y.r1,"above");break;case"insert-row-below":b.insertRow(P,y.r2,"below");break;case"delete-row":pe=b.deleteRow(P,y.r1);break;case"insert-col-left":pe=T(ie,y.c1),pe||b.insertCol(P,ie,y.c1,"left");break;case"insert-col-right":pe=T(ie,y.c2),pe||b.insertCol(P,ie,y.c2,"right");break;case"delete-col":pe=b.deleteCol(P,ie,y.c1);break;case"merge":b.mergeCells(P,y);break;case"split":b.splitCells(P,y);break;case"set-row-type":pe=b.setRowType(P,y.r1,I);break}if(pe){alert(pe);return}u.setTableSelection(null),S(),u.recordHistory()}const Z=e.computed(()=>n.designMode&&!!n.isSelected&&!n.element.options.locked&&r.value.length>=1),ne=e.computed(()=>Array.from({length:r.value.length},(R,I)=>I+1));function ve(R){return r.value.slice(0,R).reduce((I,y)=>I+y,0)}const M=e.ref(null);let D=0,U=0;function oe(R,I){Z.value&&I.button===0&&(M.value=R,D=I.clientX,U=r.value[R-1],document.addEventListener("mousemove",le),document.addEventListener("mouseup",me))}function le(R){if(M.value===null)return;const I=n.scale||1,y=(R.clientX-D)/(I*Ye),V=M.value-1,P=n.element.options.tableColWidths;P[V]=b.clampResizedColumnWidth(P,V,U+y,u.maxTableWidth.value),S()}function me(){document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",me),M.value!==null&&(M.value=null,S(),u.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",le),document.removeEventListener("mouseup",me)}),(R,I)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:p,class:e.normalizeClass(["print-table",{"design-mode":t.designMode}]),onContextmenu:I[0]||(I[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:g,style:e.normalizeStyle({fontSize:d.value+"pt",color:c.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(y,V)=>(e.openBlock(),e.createElementBlock("col",{key:V,style:e.normalizeStyle({width:y+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(y,V)=>(e.openBlock(),e.createElementBlock("tr",{key:y.id,style:e.normalizeStyle({height:y.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.cells,(P,ie)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:P.id},[P.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:P.rowspan||1,colspan:P.colspan||1,class:e.normalizeClass(k(V,ie)),style:e.normalizeStyle(L(y,P)),onMousedown:e.withModifiers(pe=>q(V,ie,pe),["left"]),onMouseenter:pe=>_(V,ie),onDblclick:e.withModifiers(pe=>B(V,ie),["stop"]),onContextmenu:e.withModifiers(pe=>ee(V,ie,pe),["prevent","stop"])},[te(P)?(e.openBlock(),e.createBlock(ea,{key:0,"cell-type":P.cellType,value:J(y,P),"barcode-type":P.barcodeType,"qr-code-level":P.qrCodeLevel,"qr-quiet-zone":P.qrQuietZone,"show-text":P.showBarcodeText!==!1,fit:P.fit,"max-width":P.maxWidth,"max-height":P.maxHeight,"printer-dpi":P.printerDpi,"target-width-mm":h(ie,P),"target-height-mm":z(V,P),"bar-width":P.barWidth,"bar-font-size":P.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","qr-quiet-zone","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):P.cellType==="image"?(e.openBlock(),e.createBlock(aa,{key:1,value:P.formatter||"",fit:P.fit,"object-position":P.objectPosition,"max-width":P.maxWidth,"max-height":P.maxHeight,"design-mode":t.designMode,data:W.value},null,8,["value","fit","object-position","max-width","max-height","design-mode","data"])):O(P)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(A(P,V)),"data-fit":E(P)==="shrink"?"shrink":void 0,"data-fit-base":String(Y(P)),"data-fit-min":String(e.unref(b.resolveShrinkMinFontSize)(P.shrinkMinFontSize)),"data-fit-mm":z(V,P)},[y.type==="data"?(e.openBlock(),e.createElementBlock("span",sa,e.toDisplayString(J(y,P)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(J(y,P)),1)],64))],12,ra)):y.type==="data"?(e.openBlock(),e.createElementBlock("span",da,e.toDisplayString(J(y,P)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(J(y,P)),1)],64))],46,ia))],64))),128))],4))),128))])],4),Z.value?(e.openBlock(),e.createElementBlock("div",ca,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ne.value,y=>(e.openBlock(),e.createElementBlock("div",{key:y,class:e.normalizeClass(["col-resize-handle",{dragging:M.value===y}]),role:"separator","aria-label":"列宽手柄"+y,style:e.normalizeStyle({left:ve(y)+"mm"}),onMousedown:e.withModifiers(V=>oe(y,V),["stop","prevent"])},null,46,ua))),128))])):e.createCommentVNode("",!0),t.designMode&&t.isSelected?(e.openBlock(),e.createElementBlock("div",ma,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(y,V)=>(e.openBlock(),e.createElementBlock("span",{key:y.id,class:"row-badge",style:e.normalizeStyle({top:N(V)+"mm",height:v(V)+"mm"})},e.toDisplayString(o[y.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(Yl,{visible:s.visible,x:s.x,y:s.y,"can-delete-row":a.value.length>1,"can-delete-col":r.value.length>1,"merge-disabled-reason":ge.value,"can-split":se.value,"current-row-type":m.value?a.value[m.value.r1]?.type??null:null,"row-type-disabled-reason":K,onAction:j},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),fa=ue(va,[["__scopeId","data-v-f99767ff"]]),Dt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="hline"),n=e.computed(()=>{const i=l.element.options,u=(i.borderWidth||.75)+"pt",a=i.borderStyle||"solid",r=i.borderColor||"#333";return o.value?{width:"100%",height:"0",borderTop:`${u} ${a} ${r}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${u} ${a} ${r}`,boxSizing:"border-box"}});return(i,u)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(n.value)},null,4))}}),Tt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="oval"),n=e.computed(()=>{const i=l.element.options;return{width:"100%",height:"100%",borderWidth:(i.borderWidth||1)+"pt",borderStyle:i.borderStyle||"solid",borderColor:i.borderColor||"#333",backgroundColor:i.backgroundColor||"transparent",borderRadius:o.value?"50%":"0",boxSizing:"border-box"}});return(i,u)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(n.value)},null,4))}}),ga={class:"print-barcode",ref:"containerRef"},ha=["preserveAspectRatio"],ba=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(null),n=e.ref(null),i={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},u=e.computed(()=>i[l.element.options.fit||"contain"]??"xMidYMid meet"),a=e.computed(()=>n.value?{width:n.value.width,height:n.value.height}:{maxWidth:"100%",maxHeight:"100%"});function r(){if(!o.value)return;const c=l.element.options,m=(l.designMode?c.testData||c.formatter:b.resolveTextBinding(c,l.data))||"条码",f=b.barcodeUnitsPerModule(c.barWidth);try{Lt(o.value,m,{format:c.barcodeType||"CODE128",width:f,height:b.BARCODE_BAR_HEIGHT_MODULES*f,displayValue:!c.hideTitle,fontSize:(c.fontSize??b.BARCODE_TEXT_FONT_SIZE_MODULES)*f,margin:0,marginLeft:b.BARCODE_QUIET_ZONE_MODULES*f,marginRight:b.BARCODE_QUIET_ZONE_MODULES*f,marginTop:0,marginBottom:b.BARCODE_MARGIN_BOTTOM_MODULES*f})}catch{n.value=null;return}const g=d(o.value),p=g?b.resolveBarcodeSize({unitWidth:g.width/f,unitHeight:g.height/f,boxWidthMm:b.barcodeAvailableBoxMm(c.width,c.maxWidth),boxHeightMm:b.barcodeAvailableBoxMm(c.height,c.maxHeight),dpi:c.printerDpi,barWidth:c.barWidth}):null;n.value=p?{width:`${p.widthMm}mm`,height:`${p.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function d(c){const m=(c.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(r),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.barcodeType,l.element.options.width,l.element.options.height,l.element.options.barWidth,l.element.options.printerDpi,l.element.options.hideTitle,l.element.options.fontSize,l.element.options.maxWidth,l.element.options.maxHeight],r),(c,m)=>(e.openBlock(),e.createElementBlock("div",ga,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:o,preserveAspectRatio:u.value,style:e.normalizeStyle(a.value)},null,12,ha))],512))}}),Ea=ue(ba,[["__scopeId","data-v-6eb95a40"]]),ya={class:"print-qrcode"},ka=["src"],Va=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(""),n=e.computed(()=>{const u=l.element.options;return{width:"100%",height:"100%",objectFit:u.fit||"contain",maxWidth:u.maxWidth?`${u.maxWidth}mm`:"100%",maxHeight:u.maxHeight?`${u.maxHeight}mm`:"100%"}});function i(){const u=l.element.options,a=(l.designMode?u.testData||u.formatter:b.resolveTextBinding(u,l.data))||"二维码";try{const r=Me.browserCodeRenderer.render(a,"qrcode",{qrCodeLevel:String(u.qrCodeLevel??"M"),qrQuietZone:typeof u.qrQuietZone=="number"?u.qrQuietZone:void 0});o.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(r)}`}catch{o.value=""}}return e.onMounted(i),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.qrCodeLevel,l.element.options.qrQuietZone],i),(u,a)=>(e.openBlock(),e.createElementBlock("div",ya,[o.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,alt:"qrcode",style:e.normalizeStyle(n.value)},null,12,ka)):e.createCommentVNode("",!0)]))}}),Na=ue(Va,[["__scopeId","data-v-792ee33c"]]),wa=["innerHTML"],Ca=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{if(l.element.options.formatter){const n=l.data&&l.data.length>0?l.data[0]:{},i=b.evaluateTemplate(l.element.options.formatter,n??{});return i?Yt.sanitize(i):""}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,i)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:o.value},null,8,wa))}}),Sa=ue(Ca,[["__scopeId","data-v-880bbde5"]]),xa=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const i=l.element.options;return{fontSize:(i.fontSize||12)+"pt",fontWeight:i.fontWeight||"normal",fontFamily:i.fontFamily||"inherit",color:i.color||"#333",textAlign:i.textAlign||"left",...i.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:i.lineHeight?i.lineHeight+"pt":"normal",letterSpacing:i.letterSpacing?i.letterSpacing+"pt":"normal"}}),n=e.computed(()=>l.designMode?l.element.options.title||"{pageIndex}/{totalPages}":l.element.options.title||"");return(i,u)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(o.value)},e.toDisplayString(n.value),5))}}),Ba=ue(xa,[["__scopeId","data-v-9762b52f"]]),$a={key:0,class:"drag-preview"},Da={key:1,class:"resize-handles"},Ta=["onMousedown"],Ma={key:2,class:"selected-indicator"},za={class:"position-label"},Aa=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(t,{emit:l}){const o=t,n=l,i=e.ref(null),u=e.inject(Je,null),a=e.computed(()=>u?.value?u.value.has(o.element.id):o.isSelected??!1),r=e.inject(Ut,null),d=e.computed(()=>r?.value.has(o.element.id)??!1),c={text:e.markRaw(Ll),image:e.markRaw(Hl),longText:e.markRaw(Gl),table:e.markRaw(fa),hline:e.markRaw(Dt),vline:e.markRaw(Dt),rect:e.markRaw(Tt),oval:e.markRaw(Tt),barcode:e.markRaw(Ea),qrcode:e.markRaw(Na),html:e.markRaw(Sa),pageNumber:e.markRaw(Ba)},m=e.computed(()=>c[o.element.printElementType.type]),f=e.computed(()=>o.element.printElementType.type==="table"?{showTableGhostBorder:o.showTableGhostBorder,scale:o.scale}:{}),g=e.computed(()=>{const h=o.element.options,A=b.resolveElementBorder(o.element.printElementType.type,h),k={};if(A?.all&&(k.border=`${A.all.borderWidth} ${A.all.borderStyle} ${A.all.borderColor}`),A)for(const H of b.ELEMENT_BORDER_SIDES){const G=A.edges[H];G&&(k[`border${H.charAt(0).toUpperCase()}${H.slice(1)}`]=`${G.borderWidth} ${G.borderStyle} ${G.borderColor}`)}return{position:"absolute",left:h.left+"mm",top:h.top+"mm",width:h.width+"mm",height:h.height+"mm",zIndex:h.zIndex||"auto",...k}}),p=e.computed(()=>{const h=o.element.options;return`x:${Math.round(h.left)} y:${Math.round(h.top)} ${Math.round(h.width)}×${Math.round(h.height)}mm`});let w=0,C=0;const N=e.reactive({disabled:!o.designMode||!!o.element.options.locked,getScale:()=>(o.scale||1)*b.mmToPx(1),onDrag:h=>{const A=h.left-w,k=h.top-C;i.value&&(i.value.style.transform=`translate(${A}mm, ${k}mm)`)},onDragEnd:(h,A)=>{if(A.altKey){const G=JSON.parse(JSON.stringify(o.element));G.id=b.generateId(),G.options.left=h.left,G.options.top=h.top,G.options.groupId=void 0,n("clone-element",G,{left:h.left,top:h.top}),i.value&&(i.value.style.transform="");return}const k=h.left-w,H=h.top-C;if(o.element.options.left=h.left,o.element.options.top=h.top,i.value&&(i.value.style.transform=""),o.element.options.groupId&&o.allElements)for(const G of o.allElements)G.id!==o.element.id&&G.options.groupId===o.element.options.groupId&&(G.options.left+=k,G.options.top+=H)},onStart:()=>{w=o.element.options.left,C=o.element.options.top,n("drag-start")},onStop:()=>{o.clearAdsorbGuides?.(),n("drag-stop")},onAdsorb:h=>{let A=h.left,k=h.top;return o.snapToGrid&&(A=Math.round(h.left/5)*5,k=Math.round(h.top/5)*5),o.adsorbHandler?o.adsorbHandler({id:o.element.id,left:A,top:k,width:o.element.options.width,height:o.element.options.height}):{left:A,top:k,lines:[]}}}),{setup:v,cleanup:$,isDragging:W}=zl(i,N);e.watchEffect(()=>{N.disabled=!o.designMode||!!o.element.options.locked});const te=e.computed(()=>a.value&&!!o.designMode&&!o.element.options.locked&&o.element.printElementType.type!=="table"),{startResize:J,cleanup:L}=b.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(o.scale||1)*b.mmToPx(1),getRect:()=>({left:o.element.options.left,top:o.element.options.top,width:o.element.options.width,height:o.element.options.height}),onResize:h=>{o.element.options.left=h.left,o.element.options.top=h.top,o.element.options.width=h.width,o.element.options.height=h.height},onStart:()=>{n("drag-start")},onStop:()=>{n("drag-stop")}});function E(h){o.designMode&&h.button===0&&n("select",o.element.id,h.ctrlKey||h.metaKey)}function O(){o.designMode&&n("dblclick-element",o.element.id)}function Y(h,A,k){o.designMode&&n("dblclick-cell",h,A,k)}e.onMounted(()=>{o.designMode&&v()});function z(){$(),L(),o.clearAdsorbGuides?.()}return e.onUnmounted(()=>{z()}),(h,A)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:i,class:e.normalizeClass(["print-element",{selected:a.value,previewed:d.value,"design-mode":t.designMode,locked:t.element.options.locked,hidden:t.element.options.visible===!1,"drag-ghost":e.unref(W),[`type-${t.element.printElementType.type}`]:!0,[`zone-${t.zone||"content"}`]:!0}]),style:e.normalizeStyle(g.value),onMousedown:e.withModifiers(E,["stop"]),onDblclick:e.withModifiers(O,["stop"]),onContextmenu:A[0]||(A[0]=e.withModifiers(k=>h.$emit("contextmenu",t.element.id,k),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(m.value),e.mergeProps({element:t.element,data:t.printData,"design-mode":t.designMode,"is-selected":a.value},f.value,{onDblclickCell:Y}),null,16,["element","data","design-mode","is-selected"])),e.unref(W)?(e.openBlock(),e.createElementBlock("div",$a)):e.createCommentVNode("",!0),te.value?(e.openBlock(),e.createElementBlock("div",Da,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b.RESIZE_POINTS),k=>(e.openBlock(),e.createElementBlock("div",{key:k,class:e.normalizeClass(["resize-handle",`handle-${k}`]),onMousedown:e.withModifiers(H=>e.unref(J)(k,H),["stop"])},null,42,Ta))),128))])):e.createCommentVNode("",!0),a.value&&t.designMode?(e.openBlock(),e.createElementBlock("div",Ma,[e.createElementVNode("div",za,e.toDisplayString(p.value),1)])):e.createCommentVNode("",!0)],38))}}),ut=ue(Aa,[["__scopeId","data-v-5a7482f4"]]);function Pa(t={}){const l=e.ref([]),o=e.ref({width:0,height:0});function n(a,r,d){return b.computeAdsorb(a,r,d,t)}function i(a,r,d){l.value=a,o.value={width:r,height:d}}function u(){l.value=[]}return{check:n,renderLines:i,clearLines:u,guideLines:l,paperSize:o}}function Ra(t){const{check:l,renderLines:o,clearLines:n,guideLines:i,paperSize:u}=Pa(t.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function a(d){const c=t.getElements().filter(g=>g.id!==d.id).map(g=>({id:g.id,left:g.options.left,top:g.options.top,width:g.options.width,height:g.options.height})),m=l(d,c,t.getGuides?.()),f=t.getPaperSize();return o(m.lines,f.width,f.height),m}function r(){n()}return{requestAdsorb:a,clearGuides:r,guideLines:i,paperSize:u}}const La=["src"],Ua=["width","height","viewBox"],Ia=["x","y","font-size","fill","transform"],Fa={key:0,class:"zone-label"},Oa={key:0,class:"zone-height-tip"},Ha={key:0,class:"zone-label"},Wa={key:0,class:"zone-height-tip"},Ga=["onMousedown","onDblclick"],qa=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(t,{expose:l,emit:o}){const n=t,i=o,u=e.ref(null),a=e.computed(()=>b.getPaperDimensions(n.templateData).width),r=e.computed(()=>b.getPaperDimensions(n.templateData).height),d=e.computed(()=>n.templateData.designBackground),c=e.ref(!1);e.watch(()=>d.value?.src,()=>{c.value=!1});const m=e.computed(()=>{const S=d.value?.rotation;return S===90||S===180||S===270?S:0}),f=e.computed(()=>{const S=m.value,T=S===90||S===270,j=T?r.value:a.value,Z=T?a.value:r.value,ne={width:j+"mm",height:Z+"mm",left:(a.value-j)/2+"mm",top:(r.value-Z)/2+"mm"};return S!==0&&(ne.transform=`rotate(${S}deg)`),ne});function g(){c.value=!0,console.warn("[print-designer] 设计背景图加载失败:",d.value?.src)}const p=e.computed(()=>`${8/(n.scale||1)}px`),w=e.computed(()=>{const S=n.scale||1,T=b.mmToPx(a.value)*S,j=b.mmToPx(r.value)*S;return{width:T+"px",height:j+"px",position:"relative"}}),C=e.computed(()=>{const S=n.templateData.margins,T=n.templateData.header.height,j=n.templateData.footer.height,Z=a.value-S.left-S.right;return{header:{left:S.left,top:S.top,width:Z,height:T},content:{left:S.left,top:S.top+T,width:Z,height:r.value-S.top-S.bottom-T-j},footer:{left:S.left,top:r.value-S.bottom-j,width:Z,height:j}}});function N(S){return{position:"absolute",left:S.left+"mm",top:S.top+"mm",width:S.width+"mm",height:S.height+"mm"}}const v=e.computed(()=>{const S={header:[],footer:[],content:[]};for(const T of n.runtimeElements)T.zone==="header"?S.header.push(T):T.zone==="footer"?S.footer.push(T):S.content.push(T);return S}),$=e.computed(()=>v.value.header),W=e.computed(()=>v.value.footer),te=e.computed(()=>v.value.content);let J="content";const{requestAdsorb:L,clearGuides:E,guideLines:O,paperSize:Y}=Ra({getElements:()=>v.value[J],getPaperSize:()=>{const S=C.value[J];return{width:S.width,height:S.height}},getGuides:()=>{const S=[],T=[];for(const j of n.guides??[])j.type==="vertical"?S.push(j.position):T.push(j.position);return{vertical:S,horizontal:T}}});function z(S){J=n.runtimeElements.find(Z=>Z.id===S.id)?.zone||"content";const j=L(S);return(j.left!==S.left||j.top!==S.top)&&B(j.left+S.width/2,j.top+S.height/2),j}function h(S,T){if(S.button!==0)return;const j=T.position,Z=S.clientX,ne=S.clientY,ve=n.scale??1,M=25.4/96,D=oe=>{const le=(T.type==="vertical"?oe.clientX-Z:oe.clientY-ne)/ve*M,me=T.type==="vertical"?a.value:r.value,R=Math.min(Math.max(j+le,0),me);i("guide-move",T.id,R)},U=()=>{window.removeEventListener("mousemove",D),window.removeEventListener("mouseup",U)};window.addEventListener("mousemove",D),window.addEventListener("mouseup",U)}const A=e.computed(()=>({width:a.value+"mm",minHeight:r.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"})),k=e.computed(()=>{const S=n.templateData.margins;return{padding:`${S.top}mm ${S.right}mm ${S.bottom}mm ${S.left}mm`,position:"relative",boxSizing:"border-box",minHeight:r.value+"mm"}}),H=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 G=0,q=null;const _=e.ref(null);function B(S,T){G+=1,_.value={left:S,top:T,key:G},q&&clearTimeout(q),q=setTimeout(()=>{_.value=null},300)}const s=e.computed(()=>be.resolveWatermarkLayout(n.templateData.watermark,n.printData,{width:a.value,height:r.value})),x=e.ref(null);function ee(S,T){T.button===0&&(se(),x.value={zone:S,startY:T.clientY,startH:n.templateData[S].height},window.addEventListener("mousemove",he),window.addEventListener("mouseup",ge))}function he(S){if(!x.value)return;const{zone:T,startY:j,startH:Z}=x.value,ve=(S.clientY-j)/(n.scale||1)*25.4/96,M=T==="header"?ve:-ve,D=Math.min(100,r.value-n.templateData.margins.top-n.templateData.margins.bottom-(T==="header"?n.templateData.footer.height:n.templateData.header.height)-10),U=Math.min(D,Math.max(0,Math.round((Z+M)*10)/10));i("zone-height-change",T,U)}function ge(){if(!x.value)return;const S=x.value.zone;x.value=null,window.removeEventListener("mousemove",he),window.removeEventListener("mouseup",ge),i("zone-height-commit",S)}function se(){window.removeEventListener("mousemove",he),window.removeEventListener("mouseup",ge),x.value=null}e.onUnmounted(()=>{se(),q&&clearTimeout(q)});function K(S,T){i("select",S,T)}return l({contentRef:u}),(S,T)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(w.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(A.value)},[t.designMode&&d.value?.src&&!c.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(f.value)},[e.createElementVNode("img",{src:d.value.src,draggable:"false",alt:"",onError:g},null,40,La)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:u,style:e.normalizeStyle(k.value)},[t.showGrid&&t.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle(H.value)},null,4)):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createElementBlock("div",{key:_.value.key,class:"snap-indicator",style:e.normalizeStyle({left:_.value.left+"mm",top:_.value.top+"mm"})},null,4)):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(s.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value.tiles,(j,Z)=>(e.openBlock(),e.createElementBlock("svg",{key:Z,class:"watermark-tile",width:j.widthMm+"mm",height:j.heightMm+"mm",viewBox:`0 0 ${s.value.tileWidthPx} ${s.value.tileHeightPx}`,style:e.normalizeStyle({left:j.leftMm+"mm",top:j.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:s.value.tileWidthPx/2,y:s.value.tileHeightPx/2,"font-size":s.value.fontSizePx,fill:s.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${s.value.rotate},${s.value.tileWidthPx/2},${s.value.tileHeightPx/2})`},e.toDisplayString(s.value.text),9,Ia)],12,Ua))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":t.designMode}]),style:e.normalizeStyle(N(C.value.header))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Fa,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":$.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"header","adsorb-handler":z,"clear-adsorb-guides":e.unref(E),onSelect:K,onDragStart:T[0]||(T[0]=Z=>S.$emit("drag-start")),onDragStop:T[1]||(T[1]=Z=>S.$emit("drag-stop")),onDblclickElement:T[2]||(T[2]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:T[3]||(T[3]=(Z,ne,ve)=>S.$emit("dblclick-cell",Z,ne,ve)),onContextmenu:T[4]||(T[4]=(Z,ne)=>S.$emit("contextmenu",Z,ne)),onCloneElement:(Z,ne)=>S.$emit("clone-element",Z,ne)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:T[5]||(T[5]=e.withModifiers(j=>ee("header",j),["prevent","stop"]))},[x.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",Oa,e.toDisplayString(t.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":t.designMode}]),style:e.normalizeStyle(N(C.value.content))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(te.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":te.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"content","adsorb-handler":z,"clear-adsorb-guides":e.unref(E),onSelect:K,onDragStart:T[6]||(T[6]=Z=>S.$emit("drag-start")),onDragStop:T[7]||(T[7]=Z=>S.$emit("drag-stop")),onDblclickElement:T[8]||(T[8]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:T[9]||(T[9]=(Z,ne,ve)=>S.$emit("dblclick-cell",Z,ne,ve)),onContextmenu:T[10]||(T[10]=(Z,ne)=>S.$emit("contextmenu",Z,ne)),onCloneElement:(Z,ne)=>S.$emit("clone-element",Z,ne)},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":t.designMode}]),style:e.normalizeStyle(N(C.value.footer))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Ha,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":W.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"footer","adsorb-handler":z,"clear-adsorb-guides":e.unref(E),onSelect:K,onDragStart:T[11]||(T[11]=Z=>S.$emit("drag-start")),onDragStop:T[12]||(T[12]=Z=>S.$emit("drag-stop")),onDblclickElement:T[13]||(T[13]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:T[14]||(T[14]=(Z,ne,ve)=>S.$emit("dblclick-cell",Z,ne,ve)),onContextmenu:T[15]||(T[15]=(Z,ne)=>S.$emit("contextmenu",Z,ne)),onCloneElement:(Z,ne)=>S.$emit("clone-element",Z,ne)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:T[16]||(T[16]=e.withModifiers(j=>ee("footer",j),["prevent","stop"]))},[x.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",Wa,e.toDisplayString(t.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),(j,Z)=>(e.openBlock(),e.createElementBlock("div",{key:Z,class:e.normalizeClass(["adsorb-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:e.unref(Y).height+"mm",borderLeftColor:j.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:j.position+"mm",left:"0",width:e.unref(Y).width+"mm",borderTopColor:j.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.guides,j=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+j.id,class:e.normalizeClass(["manual-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:r.value+"mm","--guide-hit":p.value}:{top:j.position+"mm",left:"0",width:a.value+"mm","--guide-hit":p.value}),onMousedown:e.withModifiers(Z=>h(Z,j),["prevent","stop"]),onDblclick:e.withModifiers(Z=>j.id&&i("guide-remove",j.id),["prevent","stop"])},null,46,Ga))),128))],4)],4)],4))}}),Ka=ue(qa,[["__scopeId","data-v-4682b43a"]]),ja=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>o.orientation==="horizontal"),u=e.computed(()=>i.value?"vertical":"horizontal"),a=e.ref(null),r=e.ref(null),d=e.computed(()=>r.value??o.cursorPx??null),c=e.computed(()=>i.value?{width:o.viewportPx+"px",height:b.RULER_THICKNESS+"px"}:{width:b.RULER_THICKNESS+"px",height:o.viewportPx+"px"});let m=0;function f(){m||(m=requestAnimationFrame(()=>{m=0,g()}))}function g(){const E=a.value;if(!E)return;const O=E.getContext("2d");if(!O)return;const Y=window.devicePixelRatio||1,z=Math.max(0,Math.round(o.viewportPx)),h=b.RULER_THICKNESS;E.width=(i.value?z:h)*Y,E.height=(i.value?h:z)*Y,O.setTransform(Y,0,0,Y,0,0);const A=getComputedStyle(E),k=A.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",H=A.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",G=A.getPropertyValue("--pd-accent").trim()||"#165DFF";O.fillStyle=k,O.fillRect(0,0,i.value?z:h,i.value?h:z);const q=o.scale>0?o.scale:1,_=b.mmToPx(1)*q;if(_<=0)return;const B=-o.originPx/_,s=(z-o.originPx)/_,x=b.chooseMajorStepMM(q),ee=b.buildRulerTicks(B,s,x);p(O,ee,_,H,!0),p(O,ee,_,H,!1),w(O,0,G),w(O,o.paperLengthMM,G);const he=d.value;if(he!==null&&he>=0&&he<=z){if(O.strokeStyle=G,O.lineWidth=1.5,O.beginPath(),i.value){const ge=Math.round(he)+.5;O.moveTo(ge,0),O.lineTo(ge,h)}else{const ge=Math.round(he)+.5;O.moveTo(0,ge),O.lineTo(h,ge)}O.stroke()}}function p(E,O,Y,z,h){E.strokeStyle=z,E.fillStyle=z,E.globalAlpha=h?.32:1,E.lineWidth=1,E.font="9px ui-monospace, Menlo, monospace",E.textBaseline="top";for(const A of O){if((A.mm<0||A.mm>o.paperLengthMM)!==h)continue;const H=Math.round(o.originPx+A.mm*Y)+.5,G=A.major?8:4;E.beginPath(),i.value?(E.moveTo(H,0),E.lineTo(H,G)):(E.moveTo(0,H),E.lineTo(G,H)),E.stroke(),A.major&&A.label&&(i.value?E.fillText(A.label,H+2,11):(E.save(),E.translate(11,H+2),E.rotate(-Math.PI/2),E.fillText(A.label,0,0),E.restore()))}E.globalAlpha=1}function w(E,O,Y){const z=b.mmToPx(1)*(o.scale>0?o.scale:1),h=Math.round(o.originPx+O*z)+.5;h<=0||h>=o.viewportPx||(E.strokeStyle=Y,E.globalAlpha=.55,E.lineWidth=1,E.beginPath(),i.value?(E.moveTo(h,0),E.lineTo(h,b.RULER_THICKNESS)):(E.moveTo(0,h),E.lineTo(b.RULER_THICKNESS,h)),E.stroke(),E.globalAlpha=1)}e.watch(()=>[o.viewportPx,o.originPx,o.paperLengthMM,o.scale,o.cursorPx,o.orientation],f),e.onMounted(f),e.onBeforeUnmount(()=>{m&&cancelAnimationFrame(m)});let C=!1;function N(E){const O=a.value;if(!O)return null;const Y=O.getBoundingClientRect(),z=i.value?E.clientX-Y.left:E.clientY-Y.top;if(z<0||z>o.viewportPx)return null;const h=b.mmToPx(1)*(o.scale>0?o.scale:1);return(z-o.originPx)/h}function v(E){E.button===0&&(C=!0,E.preventDefault(),window.addEventListener("mousemove",J),window.addEventListener("mouseup",L),te(E))}function $(E){const O=a.value;if(!O)return;const Y=O.getBoundingClientRect();r.value=i.value?E.clientX-Y.left:E.clientY-Y.top,f()}function W(){r.value=null,f()}function te(E){const O=N(E);n("guide-dragging",O)}function J(E){C&&te(E)}function L(E){if(!C)return;C=!1,window.removeEventListener("mousemove",J),window.removeEventListener("mouseup",L);const O=N(E);O!==null&&O>=0&&O<=o.paperLengthMM&&n("add-guide",u.value,O),n("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",J),window.removeEventListener("mouseup",L)}),(E,O)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:a,class:e.normalizeClass(["pd-ruler",`is-${t.orientation}`]),style:e.normalizeStyle(c.value),onMousedown:v,onMousemove:$,onMouseleave:W},null,38))}}),Mt=ue(ja,[["__scopeId","data-v-1e7d0633"]]),Ya={class:"canvas-scroll"},Xe=96/25.4,Xa=e.defineComponent({__name:"CanvasArea",props:{templateData:{},elements:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},hasClipboard:{type:Boolean},guides:{},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","coordinate","add-guide","guide-move","guide-remove","zoom","clone-element"],setup(t,{expose:l,emit:o}){const n=t,i=o;function u(M,D){i("select",M,D)}const a=e.ref(null),r=e.computed(()=>b.getPaperDimensions(n.templateData).width),d=e.computed(()=>b.getPaperDimensions(n.templateData).height),c=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}),g=e.computed(()=>({transform:`translate(${f.x}px, ${f.y}px)`}));function p(){const M=a.value,D=M?.querySelector(".hiprint-printPaper");if(!M||!D)return;const U=M.getBoundingClientRect(),oe=D.getBoundingClientRect(),le=n.scale||1,me=oe.width/b.mmToPx(r.value);c.paperScale=Math.abs(me-le)<.002?le:me,c.originX=oe.left-U.left-b.RULER_THICKNESS,c.originY=oe.top-U.top-b.RULER_THICKNESS,c.viewW=M.clientWidth-b.RULER_THICKNESS,c.viewH=M.clientHeight-b.RULER_THICKNESS}function w(){f.x=a.value?.scrollLeft??0,f.y=a.value?.scrollTop??0,p()}let C=null,N=0;function v(){cancelAnimationFrame(N);const M=performance.now()+220,D=()=>{p(),performance.now()<M&&(N=requestAnimationFrame(D))};N=requestAnimationFrame(D)}const $=e.ref(null);function W(M,D){$.value=D===null?null:{type:M,mm:D}}const te=e.computed(()=>{const M=$.value,D=a.value?.querySelector(".hiprint-printPaper");if(!M||!D)return{};const U=D.getBoundingClientRect(),oe=U.width/b.mmToPx(r.value),le=b.mmToPx(M.mm)*(oe>0?oe:n.scale||1);return M.type==="vertical"?{left:U.left+le+"px",top:U.top+"px",height:U.height+"px"}:{left:U.left+"px",top:U.top+le+"px",width:U.width+"px"}});function J(M){const D=a.value?.querySelector(".hiprint-printPaper");if(!D)return;const U=D.getBoundingClientRect(),oe=n.scale||1,le=b.pxToMm((M.clientX-U.left)/oe),me=b.pxToMm((M.clientY-U.top)/oe);if(!(le<0||me<0))return{x:le,y:me}}function L(M){const D=J(M),U=M.dataTransfer?.getData("fieldData");if(U)try{const le=JSON.parse(U);i("drop-field",le,D);return}catch{}const oe=M.dataTransfer?.getData("elementType");oe&&i("drop-element",oe,D)}const E=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let O={x:0,y:0};function Y(M){return!M||!(M instanceof HTMLElement)?!1:!!(M===a.value||M.classList.contains("canvas-scroll")||M.classList.contains("hiprint-printPaper")||M.classList.contains("hiprint-printPaper-content")||M.classList.contains("zone-layer")||M.classList.contains("grid-bg")||M.classList.contains("watermark-layer"))}function z(M){const D=a.value,U=D?.querySelector(".hiprint-printPaper");if(!D||!U)return;const oe=D.getBoundingClientRect();m.x=M.clientX-oe.left-b.RULER_THICKNESS,m.y=M.clientY-oe.top-b.RULER_THICKNESS;const le=U.getBoundingClientRect(),me=n.scale||1,R=b.pxToMm((M.clientX-le.left)/me),I=b.pxToMm((M.clientY-le.top)/me);if(R<0||I<0){i("coordinate",null);return}i("coordinate",{x:R,y:I})}function h(){i("coordinate",null),m.x=null,m.y=null}function A(M,D,U,oe){const le=a.value;if(!le)return;const me=Math.max(oe,Math.round(M)),R=Math.round((n.scale||1)*100);if(me===R)return;const I=n.scale||1,y=me/100/I,V=getComputedStyle(le),P=parseFloat(V.paddingLeft)||0,ie=parseFloat(V.paddingTop)||0,pe=le.scrollLeft+D-P,ye=le.scrollTop+U-ie;i("zoom",me-R),e.nextTick(()=>{const we=getComputedStyle(le),xe=parseFloat(we.paddingLeft)||0,Le=parseFloat(we.paddingTop)||0;le.scrollLeft=pe*y-D+xe,le.scrollTop=ye*y-U+Le})}function k(M){if(!(M.ctrlKey||M.metaKey))return;M.preventDefault();const D=a.value;if(!D)return;const U=Math.round((n.scale||1)*100),oe=b.nextWheelScale(U,M.deltaY>0?-1:1);if(oe===U)return;const le=D.getBoundingClientRect();A(oe,M.clientX-le.left,M.clientY-le.top,b.MIN_SCALE_PERCENT)}function H(M){const D=a.value;if(!D)return;const U=Math.round((n.scale||1)*100),oe=b.nextWheelScale(U,M);A(oe,D.clientWidth/2,D.clientHeight/2,b.MIN_SCALE_PERCENT)}function G(M){const D=a.value;if(!D)return;const U=D.querySelector(".hiprint-printPaper"),oe=U?.style.transition??"";U&&(U.style.transition="none"),A(M,D.clientWidth/2,D.clientHeight/2,b.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{U&&(U.style.transition=oe)})}function q(M){M.button!==2&&Y(M.target)&&(i("clear-selection"),O={x:M.clientX,y:M.clientY},E.visible=!0,E.x=M.clientX,E.y=M.clientY,E.w=0,E.h=0,window.addEventListener("mousemove",B),window.addEventListener("mouseup",s))}function _(){if(E.w<3||E.h<3)return[];const M=a.value?.querySelector(".hiprint-printPaper");if(!M)return[];const D=M.getBoundingClientRect(),U=n.scale||1,oe=E.x<O.x,le=[];for(const me of n.elements){if(me.options.visible===!1||me.options.locked)continue;const R=D.left+me.options.left*Xe*U,I=D.top+me.options.top*Xe*U,y=R+me.options.width*Xe*U,V=I+me.options.height*Xe*U,P=R<E.x+E.w&&y>E.x&&I<E.y+E.h&&V>E.y,ie=R>=E.x&&y<=E.x+E.w&&I>=E.y&&V<=E.y+E.h;(oe?ie:P)&&le.push(me.id)}return le}function B(M){const D=M.clientX-O.x,U=M.clientY-O.y;E.x=D>=0?O.x:M.clientX,E.y=U>=0?O.y:M.clientY,E.w=Math.abs(D),E.h=Math.abs(U),i("preview",_())}function s(){window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",s);const M=_();i("preview",M),M.length>0?i("commit-preview"):i("clear-selection"),i("preview",[]),E.visible=!1}const x=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),ee=e.ref(null),he=e.inject(Je,null);function ge(M,D){if(!D&&!Y(M.target))return;D&&!he?.value.has(D)&&i("select",D,!1),x.targetId=D??null,x.visible=!0,x.x=M.clientX,x.y=M.clientY,x.flipX=0,x.flipY=0,e.nextTick(()=>{const oe=ee.value;if(!oe)return;const le=oe.getBoundingClientRect(),me=4;M.clientX+le.width+me>window.innerWidth&&(x.flipX=-le.width),M.clientY+le.height+me>window.innerHeight&&(x.flipY=-le.height)}),window.removeEventListener("mousedown",K);const U=++se;e.nextTick(()=>{U===se&&window.addEventListener("mousedown",K)})}let se=0;function K(M){const D=ee.value;D&&D.contains(M.target)||S()}function S(){x.visible=!1,window.removeEventListener("mousedown",K)}function T(){S(),n.hasClipboard&&i("paste")}function j(){S(),i("select-all")}function Z(){S(),i("clear-selection")}function ne(M,D){S(),M==="copy"?i("copy"):M==="cut"?i("cut"):M==="paste"?T():M==="delete"?i("delete"):M==="move-layer"&&i("move-layer",D)}e.onMounted(()=>{e.nextTick(p),a.value&&typeof ResizeObserver<"u"&&(C=new ResizeObserver(p),C.observe(a.value))}),e.watch(()=>n.scale,v),e.watch([r,d],()=>e.nextTick(p));function ve(){const M=a.value;if(!M)return;let D=0,U=0,oe=0;const le=performance.now()+800,me=()=>{const{scrollWidth:R,scrollHeight:I}=M;if(R===U&&I===oe?D++:D=0,U=R,oe=I,D>=2||performance.now()>le){const y=M.scrollWidth,V=M.scrollHeight,P=M.clientWidth,ie=M.clientHeight;M.scrollLeft=Math.max(0,(y-P)/2),M.scrollTop=Math.max(0,(V-ie)/2);return}requestAnimationFrame(me)};requestAnimationFrame(me)}return l({centerScroll:ve,fitToWindow:G,zoomByStep:H}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",s),window.removeEventListener("mousedown",K),C?.disconnect(),cancelAnimationFrame(N)}),(M,D)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"canvas-area",onDragover:D[23]||(D[23]=e.withModifiers(()=>{},["prevent"])),onDrop:L,onMousedown:q,onMousemove:z,onMouseleave:h,onWheel:k,onScroll:w,onContextmenu:e.withModifiers(ge,["prevent"])},[e.createElementVNode("div",Ya,[e.createVNode(Ka,{"template-data":t.templateData,"runtime-elements":t.elements,"design-mode":!0,"print-data":[],scale:t.scale,"show-grid":t.showGrid,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,guides:t.guides,onSelect:u,onGuideMove:D[0]||(D[0]=(U,oe)=>M.$emit("guide-move",U,oe)),onGuideRemove:D[1]||(D[1]=U=>M.$emit("guide-remove",U)),onDragStart:D[2]||(D[2]=U=>M.$emit("drag-start")),onDragStop:D[3]||(D[3]=U=>M.$emit("drag-stop")),onDblclickElement:D[4]||(D[4]=U=>M.$emit("dblclick-element",U)),onDblclickCell:D[5]||(D[5]=(U,oe,le)=>M.$emit("dblclick-cell",U,oe,le)),onContextmenu:D[6]||(D[6]=(U,oe)=>ge(oe,U)),onZoneHeightChange:D[7]||(D[7]=(U,oe)=>M.$emit("zone-height-change",U,oe)),onZoneHeightCommit:D[8]||(D[8]=U=>M.$emit("zone-height-commit",U)),onCloneElement:D[9]||(D[9]=(U,oe)=>M.$emit("clone-element",U,oe))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"])]),t.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(g.value)},[D[24]||(D[24]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Mt,{orientation:"horizontal","viewport-px":c.viewW,"origin-px":c.originX,"paper-length-m-m":r.value,scale:c.paperScale,"cursor-px":m.x,onAddGuide:D[10]||(D[10]=(U,oe)=>i("add-guide",U,oe)),onGuideDragging:D[11]||(D[11]=U=>W("vertical",U))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Mt,{orientation:"vertical","viewport-px":c.viewH,"origin-px":c.originY,"paper-length-m-m":d.value,scale:c.paperScale,"cursor-px":m.y,onAddGuide:D[12]||(D[12]=(U,oe)=>i("add-guide",U,oe)),onGuideDragging:D[13]||(D[13]=U=>W("horizontal",U))},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(te.value)},null,6)):e.createCommentVNode("",!0),E.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:E.x+"px",top:E.y+"px",width:E.w+"px",height:E.h+"px"})},null,4)):e.createCommentVNode("",!0),x.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:ee,class:"context-menu",onMousedown:D[22]||(D[22]=e.withModifiers(()=>{},["stop"])),style:e.normalizeStyle({left:x.x+x.flipX+"px",top:x.y+x.flipY+"px"})},[x.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:D[14]||(D[14]=U=>ne("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:D[15]||(D[15]=U=>ne("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:D[16]||(D[16]=U=>ne("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:D[17]||(D[17]=U=>ne("delete"))},"删除"),D[25]||(D[25]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:D[18]||(D[18]=U=>ne("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:D[19]||(D[19]=U=>ne("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:D[20]||(D[20]=U=>ne("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:D[21]||(D[21]=U=>ne("move-layer","bottom"))},"置底")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:T},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:j},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:Z},"取消选择")],64))],36)):e.createCommentVNode("",!0)],544))}}),Za=ue(Xa,[["__scopeId","data-v-427d3548"]]),Ja={class:"property-search"},Qa=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(t,{emit:l}){const o=e.ref(""),n=l;function i(){n("search",o.value)}return(u,a)=>(e.openBlock(),e.createElementBlock("div",Ja,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":a[0]||(a[0]=r=>o.value=r),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:i},null,544),[[e.vModelText,o.value]])]))}}),_a=ue(Qa,[["__scopeId","data-v-10ab6c84"]]),ei={class:"group-icon"},ti={class:"group-title"},oi={class:"expand-icon"},ni={class:"group-content"},li=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(t){const l=t,o=e.ref(l.defaultExpanded??!0),i={Document:"≡",Brush:"◧",Setting:"⚙"}[l.icon]||"•";function u(){o.value=!o.value,a()}function a(){const d=`property-group-${l.groupKey}`;try{localStorage.setItem(d,String(o.value))}catch{}}function r(){const d=`property-group-${l.groupKey}`;try{const c=localStorage.getItem(d);c!==null&&(o.value=c==="true")}catch{}}return e.onMounted(()=>{r()}),(d,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":o.value}])},[e.createElementVNode("div",{class:"group-header",onClick:u},[e.createElementVNode("span",ei,e.toDisplayString(e.unref(i)),1),e.createElementVNode("span",ti,e.toDisplayString(t.title),1),e.createElementVNode("span",oi,e.toDisplayString(o.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",ni,[e.renderSlot(d.$slots,"default",{},void 0,!0)],512),[[e.vShow,o.value]])],2))}}),Be=ue(li,[["__scopeId","data-v-2ba57031"]]),ai={class:"position-grid"},ii={class:"pd-field"},ri={class:"pd-field"},si={class:"pd-field"},di={class:"pd-field"},ci=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ai,[e.withDirectives(e.createElementVNode("div",ii,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(de,{modelValue:t.element.options.left,"onUpdate:modelValue":i[0]||(i[0]=u=>t.element.options.left=u),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-left")]]),e.withDirectives(e.createElementVNode("div",ri,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(de,{modelValue:t.element.options.top,"onUpdate:modelValue":i[1]||(i[1]=u=>t.element.options.top=u),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-top")]]),e.withDirectives(e.createElementVNode("div",si,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(de,{modelValue:t.element.options.width,"onUpdate:modelValue":i[2]||(i[2]=u=>t.element.options.width=u),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-width")]]),e.withDirectives(e.createElementVNode("div",di,[i[8]||(i[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(de,{modelValue:t.element.options.height,"onUpdate:modelValue":i[3]||(i[3]=u=>t.element.options.height=u),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-height")]])])],32)]),_:1}))}}),ui=ue(ci,[["__scopeId","data-v-bc364679"]]),mi={class:"pd-field"},pi={class:"pd-field"},vi={class:"pd-field"},fi={class:"pd-field"},gi={class:"pd-radio-group",role:"radiogroup"},hi={class:"pd-radio"},bi={class:"pd-radio"},Ei={class:"pd-radio"},yi={class:"pd-radio"},ki={class:"pd-field"},Vi={class:"pd-radio-group",role:"radiogroup"},Ni={class:"pd-radio"},wi={class:"pd-radio"},Ci={class:"pd-radio"},Si={class:"color-row"},xi={class:"pd-field"},Bi={class:"pd-field"},$i={class:"pd-field"},Di={class:"pd-field"},Ti={class:"pd-field"},Mi=["value"],zi={key:0,class:"pd-field"},Ai={key:1,class:"pd-field"},Pi={class:"pd-label"},Ri=["data-tip"],Li={class:"pd-field"},Ui=["checked"],Ii={class:"pd-field"},Fi={class:"pd-label"},Oi=["data-tip"],Hi={class:"pd-field"},Wi={class:"pd-label"},Gi=["data-tip"],qi={key:2,class:"pd-empty"},Ki=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(g){return l.searching?l.matchedKeys?.has(g)??!0:!0}const n=e.computed(()=>l.element.printElementType.type==="table"),i=e.computed(()=>l.element.printElementType.type==="longText"),u=e.computed(()=>l.element.printElementType.type==="image"),a=b.propertyTip("ap-long-text-indent"),r=b.propertyTip("ap-img-fit"),d=b.propertyTip("ap-img-object-position"),c=e.computed({get:()=>l.element.options.objectPosition??"",set:g=>{l.element.options.objectPosition=g.trim()||void 0}}),m=e.computed(()=>b.resolveElementTextFit(l.element.printElementType.type||"text",l.element.options));function f(g){l.element.options.textFit=g.target.value}return(g,p)=>(e.openBlock(),e.createBlock(Be,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:p[19]||(p[19]=e.withModifiers(()=>{},["prevent"]))},[t.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",mi,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(kt,{modelValue:t.element.options.fontFamily,"onUpdate:modelValue":p[0]||(p[0]=w=>t.element.options.fontFamily=w)},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",pi,[p[21]||(p[21]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(de,{modelValue:t.element.options.fontSize,"onUpdate:modelValue":p[1]||(p[1]=w=>t.element.options.fontSize=w),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",vi,[p[23]||(p[23]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":p[2]||(p[2]=w=>t.element.options.fontWeight=w),style:{width:"100%"}},[...p[22]||(p[22]=[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,t.element.options.fontWeight]])],512),[[e.vShow,o("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",fi,[p[28]||(p[28]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",gi,[e.createElementVNode("label",hi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[3]||(p[3]=w=>t.element.options.textAlign=w),value:"left"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),p[24]||(p[24]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",bi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[4]||(p[4]=w=>t.element.options.textAlign=w),value:"center"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),p[25]||(p[25]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ei,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[5]||(p[5]=w=>t.element.options.textAlign=w),value:"right"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),p[26]||(p[26]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",yi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[6]||(p[6]=w=>t.element.options.textAlign=w),value:"justify"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),p[27]||(p[27]=e.createElementVNode("span",null,"两端",-1))])])],512),[[e.vShow,o("ap-align")]]),e.withDirectives(e.createElementVNode("div",ki,[p[32]||(p[32]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",Vi,[e.createElementVNode("label",Ni,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[7]||(p[7]=w=>t.element.options.verticalAlign=w),value:"top"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),p[29]||(p[29]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",wi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[8]||(p[8]=w=>t.element.options.verticalAlign=w),value:"middle"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),p[30]||(p[30]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ci,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":p[9]||(p[9]=w=>t.element.options.verticalAlign=w),value:"bottom"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),p[31]||(p[31]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,o("ap-vertical-align")]]),e.createElementVNode("div",Si,[e.withDirectives(e.createElementVNode("div",xi,[p[33]||(p[33]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.color,"onUpdate:modelValue":p[10]||(p[10]=w=>t.element.options.color=w)},null,8,["modelValue"])],512),[[e.vShow,o("ap-color")]]),e.withDirectives(e.createElementVNode("div",Bi,[p[34]||(p[34]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":p[11]||(p[11]=w=>t.element.options.backgroundColor=w)},null,8,["modelValue"])],512),[[e.vShow,o("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",$i,[p[35]||(p[35]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(de,{modelValue:t.element.options.lineHeight,"onUpdate:modelValue":p[12]||(p[12]=w=>t.element.options.lineHeight=w),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,o("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",Di,[p[36]||(p[36]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(de,{modelValue:t.element.options.letterSpacing,"onUpdate:modelValue":p[13]||(p[13]=w=>t.element.options.letterSpacing=w),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,o("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",Ti,[p[38]||(p[38]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:m.value,style:{width:"100%"},onChange:f},[...p[37]||(p[37]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Mi)],512),[[e.vShow,o("ap-text-fit")]]),m.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",zi,[p[39]||(p[39]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(de,{"model-value":t.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":p[14]||(p[14]=w=>t.element.options.shrinkMinFontSize=w??void 0)},null,8,["model-value"])],512)),[[e.vShow,o("ap-shrink-min")]]):e.createCommentVNode("",!0),i.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ai,[e.createElementVNode("span",Pi,[p[40]||(p[40]=e.createTextVNode("首行缩进 (字符)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(a),"aria-label":"字段说明"},null,8,Ri)]),e.createVNode(de,{modelValue:t.element.options.longTextIndent,"onUpdate:modelValue":p[15]||(p[15]=w=>t.element.options.longTextIndent=w),min:0,max:10,placeholder:"默认 0"},null,8,["modelValue"])],512)),[[e.vShow,o("ap-long-text-indent")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",Li,[p[41]||(p[41]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:t.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:p[16]||(p[16]=w=>t.element.options.wordWrap=w.target.checked?void 0:!1)},null,40,Ui)],512),[[e.vShow,o("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Ii,[e.createElementVNode("span",Fi,[p[42]||(p[42]=e.createTextVNode("缩放模式",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(r),"aria-label":"字段说明"},null,8,Oi)]),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":p[17]||(p[17]=w=>t.element.options.fit=w),style:{width:"100%"}},[...p[43]||(p[43]=[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)])],512),[[e.vModelSelect,t.element.options.fit]])],512),[[e.vShow,o("ap-img-fit")]]),e.withDirectives(e.createElementVNode("div",Hi,[e.createElementVNode("span",Wi,[p[44]||(p[44]=e.createTextVNode("裁剪锚点",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(d),"aria-label":"字段说明"},null,8,Gi)]),e.withDirectives(e.createElementVNode("input",{class:"pd-input",type:"text","onUpdate:modelValue":p[18]||(p[18]=w=>c.value=w),placeholder:"缺省居中,如 center 20%"},null,512),[[e.vModelText,c.value]])],512),[[e.vShow,o("ap-img-object-position")]])],64)):e.createCommentVNode("",!0),!t.isTextType&&!u.value&&!n.value?(e.openBlock(),e.createElementBlock("p",qi,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),ji=ue(Ki,[["__scopeId","data-v-239e0cf4"]]),Yi={class:"pd-field"},Xi=["value"],Zi={class:"pd-field"},Ji=["value"],Qi={class:"pd-hint"},_i={class:"pd-field"},er={class:"pd-field"},tr=["checked"],or={class:"pd-field"},nr={class:"pd-field"},lr=["value"],ar={class:"pd-field"},ir={class:"pd-label"},rr=["data-tip"],sr={key:2,class:"pd-hint"},dr={key:3,class:"pd-field"},cr=["value"],ur={class:"pd-field"},mr={class:"pd-field"},pr=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=b.propertyTip("cd-quiet-zone"),n=t,i=l,u=e.computed(()=>n.element.printElementType.type==="barcode"),a=e.computed(()=>n.element.printElementType.type==="qrcode"),r=e.computed(()=>(n.element.options.barcodeType||"CODE128").toUpperCase()),d=e.computed(()=>n.element.options.printerDpi?String(n.element.options.printerDpi):""),c=e.computed(()=>!!n.element.options.printerDpi),m=e.computed(()=>u.value&&c.value);function f(N){const v=Number(N.target.value);n.element.options.printerDpi=v>0?v:void 0,C()}function g(N){const v=N.target.value;n.element.options.barcodeType=v==="CODE128"?void 0:v,C()}function p(N){n.element.options.fit=N.target.value||void 0,C()}function w(N){return n.searching?n.matchedKeys?.has(N)??!0:!0}function C(){i("change")}return(N,v)=>(e.openBlock(),e.createBlock(Be,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:v[7]||(v[7]=e.withModifiers(()=>{},["prevent"]))},[u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Yi,[v[9]||(v[9]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:r.value,onChange:g},[...v[8]||(v[8]=[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,Xi)],512),[[e.vShow,w("cd-type")]]),e.withDirectives(e.createElementVNode("div",Zi,[v[11]||(v[11]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:d.value,onChange:f},[...v[10]||(v[10]=[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,Ji)],512),[[e.vShow,w("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",Qi,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,w("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",_i,[v[12]||(v[12]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(de,{"model-value":t.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":v[0]||(v[0]=$=>{t.element.options.barWidth=$,C()})},null,8,["model-value"])],512),[[e.vShow,w("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(m.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,w("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",er,[v[13]||(v[13]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:t.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:v[1]||(v[1]=$=>{t.element.options.hideTitle=$.target.checked?void 0:!0,C()})},null,40,tr)],512),[[e.vShow,w("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",or,[v[14]||(v[14]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(de,{"model-value":t.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":v[2]||(v[2]=$=>{t.element.options.fontSize=$??void 0,C()})},null,8,["model-value"])],512),[[e.vShow,w("cd-font-size")]])],64)):a.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",nr,[v[16]||(v[16]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(t.element.options.qrCodeLevel??"M"),onChange:v[3]||(v[3]=$=>{t.element.options.qrCodeLevel=$.target.value,C()})},[...v[15]||(v[15]=[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,lr)],512),[[e.vShow,w("cd-ec-level")]]),e.withDirectives(e.createElementVNode("div",ar,[e.createElementVNode("span",ir,[v[17]||(v[17]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,rr)]),e.createVNode(de,{"model-value":t.element.options.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":v[4]||(v[4]=$=>{t.element.options.qrQuietZone=$??void 0,C()})},null,8,["model-value"])],512),[[e.vShow,w("cd-quiet-zone")]])],64)):e.createCommentVNode("",!0),v[22]||(v[22]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),u.value?(e.openBlock(),e.createElementBlock("p",sr,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),u.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",dr,[v[19]||(v[19]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:t.element.options.fit||"contain",onChange:p},[...v[18]||(v[18]=[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,cr)],512)),[[e.vShow,w("cd-fit")]]),e.withDirectives(e.createElementVNode("div",ur,[v[20]||(v[20]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[5]||(v[5]=$=>{t.element.options.maxWidth=$??void 0,C()})},null,8,["model-value"])],512),[[e.vShow,w("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",mr,[v[21]||(v[21]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[6]||(v[6]=$=>{t.element.options.maxHeight=$??void 0,C()})},null,8,["model-value"])],512),[[e.vShow,w("cd-max-height")]])],32)]),_:1}))}}),vr={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},fr={class:"pd-dialog-header"},gr={class:"expression-editor"},hr={class:"ee-nav"},br={class:"ee-nav-tabs"},Er={class:"ee-content"},yr={class:"ee-content-search"},kr=["placeholder"],Vr={class:"ee-content-list"},Nr={class:"ee-field-group-icon"},wr=["onDblclick"],Cr={class:"ee-field-info"},Sr={class:"ee-item-label"},xr={class:"ee-item-key"},Br={key:0,class:"pd-empty"},$r=["onDblclick"],Dr={class:"ee-field-info"},Tr={class:"ee-item-label"},Mr={class:"ee-item-key"},zr={class:"ee-func-group"},Ar=["onDblclick"],Pr={class:"ee-field-info"},Rr={class:"ee-item-label"},Lr={class:"ee-item-key"},Ur={class:"ee-func-group"},Ir=["onDblclick"],Fr={class:"ee-field-info"},Or={class:"ee-item-label"},Hr={class:"ee-item-key"},Wr={class:"ee-func-group"},Gr=["onDblclick"],qr={class:"ee-field-info"},Kr={class:"ee-item-label"},jr={class:"ee-item-key"},Yr={class:"ee-editor"},Xr={class:"ee-editor-section"},Zr={class:"ee-editor-section"},Jr={class:"pd-dialog-footer"},Qr=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(t,{emit:l}){const o=t,n=l,i=e.computed({get:()=>o.modelValue,set:z=>n("update:modelValue",z)}),u=e.ref("field"),a=e.computed(()=>{switch(u.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),r=e.ref(""),d=e.computed(()=>b.filterGroups(b.groupFields(o.fields??[]),r.value));e.watch(i,z=>{z&&(v.value=o.expression||"")});function c(z){const{insideParens:h}=g();O(h?z.fieldKey:`{${z.fieldKey}}`)}function m(z){const{insideParens:h}=g();O(h?z.template.replace(/^\{|\}$/g,""):z.template)}function f(z){const{insideBlock:h}=g(),A=h?z.template:`{${z.template}}`,k=A.indexOf("(")+1;O(A,k)}function g(){const h=$.value?.selectionStart??v.value.length,A=v.value.substring(0,h);let k=!1;const H=A.lastIndexOf("{");H!==-1&&!A.slice(H+1).includes("}")&&(k=!0);let G=!1;const q=A.lastIndexOf("(");return q!==-1&&!A.slice(q+1).includes(")")&&(G=!0),{insideBlock:k,insideParens:G}}const p=e.computed(()=>{if(!r.value.trim())return L;const z=r.value.trim().toLowerCase();return L.filter(h=>h.label.toLowerCase().includes(z)||h.name.toLowerCase().includes(z))}),w=e.computed(()=>{if(!r.value.trim())return W;const z=r.value.trim().toLowerCase();return W.filter(h=>h.label.toLowerCase().includes(z)||h.name.toLowerCase().includes(z))}),C=e.computed(()=>{if(!r.value.trim())return te;const z=r.value.trim().toLowerCase();return te.filter(h=>h.label.toLowerCase().includes(z)||h.name.toLowerCase().includes(z))}),N=e.computed(()=>{if(!r.value.trim())return J;const z=r.value.trim().toLowerCase();return J.filter(h=>h.label.toLowerCase().includes(z)||h.name.toLowerCase().includes(z))}),v=e.ref(o.expression||""),$=e.ref(null);e.watch(()=>o.expression,z=>{v.value=z||""});const W=[{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()"}],te=[{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()"}],J=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],L=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],E=e.computed(()=>{if(!v.value.trim())return"(输入表达式后预览)";try{const z={...b.DEFAULT_DEMO_DATA,...be.resolveSystemVariables()},h=b.evaluateTemplate(v.value,z);return h==null?"(无法计算)":String(h)}catch{return"(表达式错误)"}});function O(z,h=z.length){const A=$.value;if(!A){v.value+=z;return}const k=A.selectionStart,H=A.selectionEnd,G=v.value.substring(0,k),q=v.value.substring(H);v.value=G+z+q;const _=k+h;e.nextTick(()=>{A.focus(),A.selectionStart=A.selectionEnd=_})}function Y(){n("update:expression",v.value),i.value=!1}return(z,h)=>i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:h[7]||(h[7]=e.withKeys(A=>i.value=!1,["esc"]))},[e.createElementVNode("section",vr,[e.createElementVNode("header",fr,[h[8]||(h[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:h[0]||(h[0]=A=>i.value=!1)},"×")]),e.createElementVNode("div",gr,[e.createElementVNode("div",hr,[h[9]||(h[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",br,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:u.value==="field"}]),onClick:h[1]||(h[1]=A=>u.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:u.value==="variable"}]),onClick:h[2]||(h[2]=A=>u.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:u.value==="function"}]),onClick:h[3]||(h[3]=A=>u.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",Er,[e.createElementVNode("div",yr,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":h[4]||(h[4]=A=>r.value=A),placeholder:a.value},null,8,kr),[[e.vModelText,r.value]])]),e.createElementVNode("div",Vr,[u.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,A=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:A.key||"_top"},[A.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":A.isList}])},[e.createElementVNode("span",Nr,e.toDisplayString(A.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(A.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.fields,k=>(e.openBlock(),e.createElementBlock("div",{key:k.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:A.key?"22px":"10px"}),onDblclick:H=>c(k)},[e.createElementVNode("div",Cr,[e.createElementVNode("span",Sr,e.toDisplayString(k.fieldLabel),1),e.createElementVNode("span",xr,e.toDisplayString(k.fieldKey),1)])],44,wr))),128))],64))),128)),d.value.length===0?(e.openBlock(),e.createElementBlock("p",Br,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),u.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(p.value,A=>(e.openBlock(),e.createElementBlock("div",{key:A.name,class:"ee-list-item",onDblclick:k=>m(A)},[e.createElementVNode("div",Dr,[e.createElementVNode("span",Tr,e.toDisplayString(A.label),1),e.createElementVNode("span",Mr,e.toDisplayString(A.template),1)])],40,$r))),128)):e.createCommentVNode("",!0),u.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",zr,[h[10]||(h[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,A=>(e.openBlock(),e.createElementBlock("div",{key:A.name,class:"ee-list-item",onDblclick:k=>f(A)},[e.createElementVNode("div",Pr,[e.createElementVNode("span",Rr,e.toDisplayString(A.label),1),e.createElementVNode("span",Lr,e.toDisplayString(A.name)+"()",1)])],40,Ar))),128))]),e.createElementVNode("div",Ur,[h[11]||(h[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,A=>(e.openBlock(),e.createElementBlock("div",{key:A.name,class:"ee-list-item",onDblclick:k=>f(A)},[e.createElementVNode("div",Fr,[e.createElementVNode("span",Or,e.toDisplayString(A.label),1),e.createElementVNode("span",Hr,e.toDisplayString(A.name)+"()",1)])],40,Ir))),128))]),e.createElementVNode("div",Wr,[h[12]||(h[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,A=>(e.openBlock(),e.createElementBlock("div",{key:A.name,class:"ee-list-item",onDblclick:k=>f(A)},[e.createElementVNode("div",qr,[e.createElementVNode("span",Kr,e.toDisplayString(A.label),1),e.createElementVNode("span",jr,e.toDisplayString(A.name)+"()",1)])],40,Gr))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Yr,[e.createElementVNode("div",Xr,[h[13]||(h[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:$,"onUpdate:modelValue":h[5]||(h[5]=A=>v.value=A),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,v.value]])]),e.createElementVNode("div",Zr,[h[14]||(h[14]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":E.value==="(表达式错误)"}])},e.toDisplayString(E.value),3)]),h[15]||(h[15]=e.createStaticVNode('<div class="ee-help-section" data-v-f3837718><div class="ee-help-title" data-v-f3837718>帮助信息</div><div class="ee-help-grid" data-v-f3837718><div class="ee-help-card ee-help-field" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>输入方式</div><div class="ee-help-card-content" data-v-f3837718> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-f3837718> 静态数据直接输入即可,如:供应商名称<br data-v-f3837718> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-f3837718> 示例:{SUM(supplier.name)}<br data-v-f3837718> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>函数使用</div><div class="ee-help-card-content" data-v-f3837718> SUM(字段) - 求和<br data-v-f3837718> AVG(字段) - 平均值<br data-v-f3837718> COUNT(字段) - 计数<br data-v-f3837718> IF(条件, 真值, 假值) - 条件判断<br data-v-f3837718> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-f3837718> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>系统变量</div><div class="ee-help-card-content" data-v-f3837718> {pageIndex} - 当前页码<br data-v-f3837718> {totalPages} - 总页数<br data-v-f3837718> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>示例</div><div class="ee-help-card-content" data-v-f3837718> 静态文本:供应商名称<br data-v-f3837718> 动态字段:{supplier.name}<br data-v-f3837718> 函数调用:{SUM(amount)}<br data-v-f3837718> 条件判断:{IF(amount>1000, "大单", "小单")}<br data-v-f3837718> 运算并修约:{ROUND(qty * price, 2)} </div></div></div></div>',1))])]),e.createElementVNode("footer",Jr,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:h[6]||(h[6]=A=>i.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:Y},"确定")])])],32)):e.createCommentVNode("",!0)}}),Qe=ue(Qr,[["__scopeId","data-v-f3837718"]]),_r={class:"pd-field"},es={class:"pd-label"},ts=["value","placeholder"],os=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=l,n=e.ref(!1);function i(){n.value=!0}return(u,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",_r,[e.createElementVNode("span",es,e.toDisplayString(t.descriptor.label),1),e.createElementVNode("input",{value:t.modelValue,class:"pd-input",placeholder:t.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:a[0]||(a[0]=r=>o("update:modelValue",r.target.value)),onDblclick:i},null,40,ts)]),e.createVNode(Qe,{modelValue:n.value,"onUpdate:modelValue":a[1]||(a[1]=r=>n.value=r),fields:t.fields,expression:t.modelValue,"onUpdate:expression":a[2]||(a[2]=r=>o("update:modelValue",r))},null,8,["modelValue","fields","expression"])],64))}}),ns={class:"pd-field"},ls=["value"],as=["value"],is={class:"pd-field"},rs={class:"pd-field"},ss={class:"pd-field"},ds={class:"pd-field"},cs={style:{width:"60px"}},us=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(t){const l=t,o=e.inject(He,null),n=e.computed(()=>l.fields.filter(a=>a.fieldType==="list").map(a=>({label:a.fieldLabel,value:a.fieldKey})));function i(a){l.element.options.dataSource=a||void 0,o?.recordHistory()}function u(a,r){if(r===void 0)return;const d=l.element.options.tableColWidths,c=o?.maxTableWidth.value??1/0,m=d.reduce((f,g,p)=>p===a?f:f+g,0);if(m+r>c){const f=Math.max(5,Math.round((c-m)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${c}mm,列${a+1} 已调整为 ${f}mm`),d[a]=f}else d[a]=r;b.syncTableElementSize(l.element.options),o?.recordHistory()}return(a,r)=>(e.openBlock(),e.createBlock(Be,{title:"表格设置",icon:"Grid","default-expanded":"","group-key":"table-settings"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:r[4]||(r[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ns,[r[5]||(r[5]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:t.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:r[0]||(r[0]=d=>i(d.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,d=>(e.openBlock(),e.createElementBlock("option",{key:d.value,value:d.value},e.toDisplayString(d.label),9,as))),128))],40,ls)]),e.createElementVNode("div",is,[r[6]||(r[6]=e.createElementVNode("span",{class:"pd-label"},"默认字号 (pt)",-1)),e.createVNode(de,{modelValue:t.element.options.tableDefaultFontSize,"onUpdate:modelValue":r[1]||(r[1]=d=>t.element.options.tableDefaultFontSize=d),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",rs,[r[7]||(r[7]=e.createElementVNode("span",{class:"pd-label"},"默认文字颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.tableDefaultColor,"onUpdate:modelValue":r[2]||(r[2]=d=>t.element.options.tableDefaultColor=d)},null,8,["modelValue"])]),e.createElementVNode("div",ss,[r[8]||(r[8]=e.createElementVNode("span",{class:"pd-label"},"默认内边距 (mm)",-1)),e.createVNode(de,{modelValue:t.element.options.tableDefaultPadding,"onUpdate:modelValue":r[3]||(r[3]=d=>t.element.options.tableDefaultPadding=d),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",ds,[r[9]||(r[9]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.element.options.tableColWidths,(d,c)=>(e.openBlock(),e.createElementBlock("div",{key:c,class:"col-width-row"},[e.createElementVNode("span",cs,"列"+e.toDisplayString(c+1),1),e.createVNode(de,{"model-value":d,min:5,max:200,"onUpdate:modelValue":m=>u(c,m)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),ms=ue(us,[["__scopeId","data-v-b5fdc7ff"]]),ps={class:"border-row"},vs={class:"pd-field"},fs={class:"pd-field"},gs={class:"pd-field"},hs=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[3]||(i[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ps,[e.withDirectives(e.createElementVNode("div",vs,[i[4]||(i[4]=e.createElementVNode("span",{class:"pd-label"},"边框宽度",-1)),e.createVNode(de,{modelValue:t.element.options.borderWidth,"onUpdate:modelValue":i[0]||(i[0]=u=>t.element.options.borderWidth=u),min:0,max:20,step:.25},null,8,["modelValue"])],512),[[e.vShow,o("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",fs,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"边框颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.borderColor,"onUpdate:modelValue":i[1]||(i[1]=u=>t.element.options.borderColor=u)},null,8,["modelValue"])],512),[[e.vShow,o("bb-border-color")]])]),e.withDirectives(e.createElementVNode("div",gs,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":i[2]||(i[2]=u=>t.element.options.backgroundColor=u)},null,8,["modelValue"])],512),[[e.vShow,o("bb-bg-color")]])],32)]),_:1}))}}),bs=ue(hs,[["__scopeId","data-v-e0e6d714"]]),Es={class:"advanced-row"},ys={class:"pd-field"},ks={class:"pd-field"},Vs={class:"pd-field"},Ns={class:"pd-field"},ws=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Es,[e.withDirectives(e.createElementVNode("div",ys,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"锁定",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":i[0]||(i[0]=u=>t.element.options.locked=u)},null,512),[[e.vModelCheckbox,t.element.options.locked]])],512),[[e.vShow,o("ad-locked")]]),e.withDirectives(e.createElementVNode("div",ks,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"每页重复",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":i[1]||(i[1]=u=>t.element.options.fixed=u)},null,512),[[e.vModelCheckbox,t.element.options.fixed]])],512),[[e.vShow,o("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",Vs,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"层级",-1)),e.createVNode(de,{modelValue:t.element.options.zIndex,"onUpdate:modelValue":i[2]||(i[2]=u=>t.element.options.zIndex=u),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,o("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",Ns,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:i[3]||(i[3]=u=>n.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,o("ad-delete")]])],32)]),_:1}))}}),Cs=ue(ws,[["__scopeId","data-v-14924be2"]]),Ss={key:0,class:"pd-field"},xs=["checked"],Bs={class:"pd-field"},$s=["checked"],Ds={class:"pd-field"},Ts=["checked"],zt=e.defineComponent({__name:"PaginationGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="table"),n=e.computed({get:()=>l.element.options.tablePagination?.enabled??!0,set:()=>{}});function i(m){l.element.options.tablePagination={enabled:m}}const u=e.computed({get:()=>l.element.options.pagination?.pageable??!0,set:()=>{}}),a=e.computed({get:()=>l.element.options.pagination?.keepWithNext??!1,set:()=>{}});function r(m){l.element.options.pagination={pageable:m,keepWithNext:a.value}}function d(m){l.element.options.pagination={pageable:u.value,keepWithNext:m}}function c(m){return l.searching?l.matchedKeys?.has(m)??!0:!0}return(m,f)=>(e.openBlock(),e.createBlock(Be,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:f[3]||(f[3]=e.withModifiers(()=>{},["prevent"]))},[o.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ss,[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]=g=>i(g.target.checked))},null,40,xs)],512)),[[e.vShow,c("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Bs,[f[5]||(f[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:u.value,onChange:f[1]||(f[1]=g=>r(g.target.checked))},null,40,$s)],512),[[e.vShow,c("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",Ds,[f[6]||(f[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:a.value,onChange:f[2]||(f[2]=g=>d(g.target.checked))},null,40,Ts)],512),[[e.vShow,c("pg-keep-with-next")]])],64))],32)]),_:1}))}}),Ms={class:"image-content-upload"},zs=["disabled"],As=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),u=e.inject(ft,e.computed(()=>{})),a=e.computed(()=>o.disabled||i.value||!u.value);async function r(d){const c=d.target,m=c.files?.[0];if(m){if(!m.type.startsWith("image/")){alert("仅支持上传图片文件"),c.value="";return}if(!u.value){alert("图片上传能力未配置"),c.value="";return}i.value=!0;try{const f=await u.value(m);f?n("success",f):alert("图片上传失败")}catch(f){alert(f instanceof Error?f.message:"图片上传失败")}finally{i.value=!1,c.value=""}}}return(d,c)=>(e.openBlock(),e.createElementBlock("div",Ms,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:a.value}])},[c[0]||(c[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(i.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:r},null,40,zs)],2),c[1]||(c[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),Ps=ue(As,[["__scopeId","data-v-b730e8e6"]]),Rs={class:"pd-field"},Ls=["value"],Us={class:"pd-field"},Is={key:0,class:"pd-field"},Fs=["checked"],Os=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(t){const l=t,o=e.inject(He),n=e.computed(()=>l.element.options.tableRows[l.selection.r1]);function i(r){const d=b.setRowType(l.element.options.tableRows,l.selection.r1,r);if(d){alert(d);return}o.recordHistory()}function u(r){r!==void 0&&(n.value.height=r,b.syncTableElementSize(l.element.options),o.recordHistory())}function a(r){b.setHeaderRepeat(l.element.options.tableRows,r),o.recordHistory()}return(r,d)=>(e.openBlock(),e.createBlock(Be,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:d[2]||(d[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Rs,[d[4]||(d[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:n.value.type,class:"pd-select",style:{width:"100%"},onChange:d[0]||(d[0]=c=>i(c.target.value))},[...d[3]||(d[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,Ls)]),e.createElementVNode("div",Us,[d[5]||(d[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(de,{"model-value":n.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":u},null,8,["model-value"])]),n.value.type==="header"?(e.openBlock(),e.createElementBlock("div",Is,[d[6]||(d[6]=e.createElementVNode("span",{class:"pd-label",title:"多级表头作为一个结构整体重复,勾选后表头区所有行都会在每页顶部重复"},"表头每页重复",-1)),e.createElementVNode("input",{checked:n.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:d[1]||(d[1]=c=>a(!!c.target.checked))},null,40,Fs)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),Hs={class:"pd-field"},Ws={class:"pd-radio-group",role:"radiogroup"},Gs={class:"pd-radio"},qs=["checked"],Ks={class:"pd-radio"},js=["checked"],Ys={class:"pd-radio"},Xs=["checked"],Zs={class:"pd-radio"},Js=["checked"],Qs={key:0,class:"pd-field"},_s=["value"],ed={key:1,class:"pd-field"},td=["checked"],od={key:2,class:"pd-field"},nd={key:3,class:"pd-hint"},ld={key:4,class:"pd-field"},ad={key:5,class:"pd-field"},id=["value"],rd={key:6,class:"pd-hint"},sd={key:7,class:"pd-field"},dd=["value"],cd={key:8,class:"pd-field"},ud={class:"pd-label"},md=["data-tip"],pd={key:9,class:"pd-hint"},vd={key:10,class:"pd-field"},fd=["value"],gd={key:11,class:"pd-field"},hd=["value"],bd={key:12,class:"pd-field"},Ed={key:13,class:"pd-field"},yd={class:"pd-field"},kd=["value"],Vd={class:"pd-field"},Nd={class:"pd-radio-group",role:"radiogroup"},wd={class:"pd-radio"},Cd=["checked"],Sd={class:"pd-radio"},xd=["checked"],Bd={class:"pd-radio"},$d=["checked"],Dd={class:"pd-radio"},Td=["checked"],Md={class:"pd-field"},zd={class:"pd-radio-group",role:"radiogroup"},Ad={class:"pd-radio"},Pd=["checked"],Rd={class:"pd-radio"},Ld=["checked"],Ud={class:"pd-radio"},Id=["checked"],Fd={class:"cell-style-grid"},Od={class:"pd-field cell-font-field"},Hd={class:"pd-field"},Wd={class:"pd-field"},Gd=["checked"],qd={class:"pd-field"},Kd={class:"pd-field"},jd={class:"border-style-row"},Yd={style:{width:"112px","flex-shrink":"0"}},Xd={class:"pd-button-group border-presets"},Zd={class:"pd-checkbox-group"},Jd={class:"pd-checkbox"},Qd={class:"pd-checkbox"},_d={class:"pd-checkbox"},ec={class:"pd-checkbox"},tc={class:"pd-field"},oc={class:"pd-field"},nc=["checked"],lc={key:14,class:"pd-field"},ac=["value"],ic={key:15,class:"pd-field"},rc={class:"merge-btns"},sc=["disabled","title"],dc=["disabled"],cc=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(t,{expose:l}){const o=b.propertyTip("cd-quiet-zone"),n=t,i=e.inject(He),u=e.computed(()=>n.element.options.tableRows),a=e.computed(()=>{const B=b.findMainCell(u.value,n.selection.r1,n.selection.c1);return u.value[B.r].cells[B.c]}),r=e.ref(!1),d=e.ref(""),c=e.computed(()=>a.value.cellType==="barcode"),m=e.computed(()=>a.value.cellType==="qrcode"),f=e.computed(()=>a.value.cellType==="image"),g=e.computed(()=>c.value&&!!a.value.printerDpi),p=e.computed(()=>!c.value&&!m.value&&!f.value),w=e.computed(()=>b.resolveCellTextFit(a.value));function C(B){const s=B.target.value;L(x=>{x.textFit=s})}function N(B){L(s=>{s.align=B})}function v(B){L(s=>{s.valign=B})}function $(B){const s=Number(B);L(x=>{x.printerDpi=s>0?s:void 0})}function W(B){L(s=>{s.cellType=B==="text"?void 0:B,B!=="barcode"&&(s.barcodeType=void 0,s.showBarcodeText=void 0,s.printerDpi=void 0),B!=="qrcode"&&(s.qrCodeLevel=void 0,s.qrQuietZone=void 0)})}function te(){d.value=a.value.formatter||"",r.value=!0}function J(B){L(s=>{s.formatter=B||void 0})}function L(B){const s=n.selection;for(let x=s.r1;x<=s.r2;x++)for(let ee=s.c1;ee<=s.c2;ee++){const he=u.value[x].cells[ee];he.merged||B(he)}i.recordHistory()}const E=e.ref("solid"),O=e.ref(.75),Y=e.ref("#333333"),z=e.ref([]);function h(){return{width:O.value,style:E.value,color:Y.value}}function A(B){b.applyBorderPreset(u.value,n.selection,B,h()),i.recordHistory()}function k(B){const s=B.target,x=new Set(z.value);s.checked?x.add(s.value):x.delete(s.value),z.value=[...x];const ee=h();L(he=>{const ge={...he.borders??{}};for(const se of["top","right","bottom","left"])x.has(se)?ge[se]={...ee}:delete ge[se];he.borders=ge})}const H=e.computed(()=>b.canMergeReason(u.value,n.selection)),G=e.computed(()=>{const B=n.selection;for(let s=B.r1;s<=B.r2;s++)for(let x=B.c1;x<=B.c2;x++){const ee=u.value[s].cells[x];if(!ee.merged&&((ee.rowspan??1)>1||(ee.colspan??1)>1))return!0}return!1});function q(){b.mergeCells(u.value,n.selection),i.recordHistory()}function _(){b.splitCells(u.value,n.selection),i.recordHistory()}return l({openFormatterEditor:te}),(B,s)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Be,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:s[46]||(s[46]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Hs,[s[52]||(s[52]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",Ws,[e.createElementVNode("label",Gs,[e.createElementVNode("input",{type:"radio",value:"text",checked:(a.value.cellType||"text")==="text",onChange:s[0]||(s[0]=x=>W(x.target.value))},null,40,qs),s[48]||(s[48]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",Ks,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:a.value.cellType==="barcode",onChange:s[1]||(s[1]=x=>W(x.target.value))},null,40,js),s[49]||(s[49]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",Ys,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:a.value.cellType==="qrcode",onChange:s[2]||(s[2]=x=>W(x.target.value))},null,40,Xs),s[50]||(s[50]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",Zs,[e.createElementVNode("input",{type:"radio",value:"image",checked:a.value.cellType==="image",onChange:s[3]||(s[3]=x=>W(x.target.value))},null,40,Js),s[51]||(s[51]=e.createElementVNode("span",null,"图片",-1))])])]),c.value?(e.openBlock(),e.createElementBlock("div",Qs,[s[54]||(s[54]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:a.value.barcodeType||"CODE128",class:"pd-select",onChange:s[4]||(s[4]=x=>L(ee=>{ee.barcodeType=x.target.value||void 0}))},[...s[53]||(s[53]=[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,_s)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",ed,[s[55]||(s[55]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:a.value.showBarcodeText!==!1,type:"checkbox",class:"pd-switch",onInput:s[5]||(s[5]=x=>L(ee=>{ee.showBarcodeText=!!x.target.checked}))},null,40,td)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",od,[s[56]||(s[56]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(de,{"model-value":a.value.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":s[6]||(s[6]=x=>L(ee=>{ee.barWidth=x}))},null,8,["model-value"])])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("p",nd,e.toDisplayString(g.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),1)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",ld,[s[57]||(s[57]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(de,{"model-value":a.value.barFontSize??10,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":s[7]||(s[7]=x=>L(ee=>{ee.barFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("div",ad,[s[59]||(s[59]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{value:a.value.printerDpi?String(a.value.printerDpi):"",class:"pd-select",onChange:s[8]||(s[8]=x=>$(x.target.value))},[...s[58]||(s[58]=[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,id)])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("p",rd,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",sd,[s[61]||(s[61]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{value:a.value.qrCodeLevel||"M",class:"pd-select",onChange:s[9]||(s[9]=x=>L(ee=>{ee.qrCodeLevel=x.target.value||void 0}))},[...s[60]||(s[60]=[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,dd)])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",cd,[e.createElementVNode("span",ud,[s[62]||(s[62]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,md)]),e.createVNode(de,{"model-value":a.value.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":s[10]||(s[10]=x=>L(ee=>{ee.qrQuietZone=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("p",pd,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),m.value||f.value?(e.openBlock(),e.createElementBlock("div",vd,[s[64]||(s[64]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{value:a.value.fit||"contain",class:"pd-select",onChange:s[11]||(s[11]=x=>L(ee=>{ee.fit=x.target.value}))},[...s[63]||(s[63]=[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,fd)])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("div",gd,[s[65]||(s[65]=e.createElementVNode("span",{class:"pd-label"},"裁剪锚点",-1)),e.createElementVNode("input",{class:"pd-input",type:"text",value:a.value.objectPosition??"",placeholder:"缺省居中,如 center 20%",onChange:s[12]||(s[12]=x=>L(ee=>{ee.objectPosition=x.target.value.trim()||void 0}))},null,40,hd)])):e.createCommentVNode("",!0),c.value||m.value||f.value?(e.openBlock(),e.createElementBlock("div",bd,[s[66]||(s[66]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(de,{"model-value":a.value.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":s[13]||(s[13]=x=>L(ee=>{ee.maxWidth=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),c.value||m.value||f.value?(e.openBlock(),e.createElementBlock("div",Ed,[s[67]||(s[67]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(de,{"model-value":a.value.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":s[14]||(s[14]=x=>L(ee=>{ee.maxHeight=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",yd,[s[68]||(s[68]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:a.value.formatter||"",class:"pd-input",placeholder:"输入内容,支持 {字段} 表达式",onInput:s[15]||(s[15]=x=>L(ee=>{ee.formatter=x.target.value||void 0})),onDblclick:te},null,40,kd)]),e.createElementVNode("div",Vd,[s[73]||(s[73]=e.createElementVNode("span",{class:"pd-label"},"水平对齐",-1)),e.createElementVNode("div",Nd,[e.createElementVNode("label",wd,[e.createElementVNode("input",{type:"radio",value:"left",checked:a.value.align==="left",onChange:s[16]||(s[16]=x=>N(x.target.value))},null,40,Cd),s[69]||(s[69]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Sd,[e.createElementVNode("input",{type:"radio",value:"center",checked:a.value.align==="center",onChange:s[17]||(s[17]=x=>N(x.target.value))},null,40,xd),s[70]||(s[70]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Bd,[e.createElementVNode("input",{type:"radio",value:"right",checked:a.value.align==="right",onChange:s[18]||(s[18]=x=>N(x.target.value))},null,40,$d),s[71]||(s[71]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Dd,[e.createElementVNode("input",{type:"radio",value:"justify",checked:a.value.align==="justify",onChange:s[19]||(s[19]=x=>N(x.target.value))},null,40,Td),s[72]||(s[72]=e.createElementVNode("span",null,"两端",-1))])])]),e.createElementVNode("div",Md,[s[77]||(s[77]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",zd,[e.createElementVNode("label",Ad,[e.createElementVNode("input",{type:"radio",value:"top",checked:a.value.valign==="top",onChange:s[20]||(s[20]=x=>v(x.target.value))},null,40,Pd),s[74]||(s[74]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",Rd,[e.createElementVNode("input",{type:"radio",value:"middle",checked:a.value.valign==="middle",onChange:s[21]||(s[21]=x=>v(x.target.value))},null,40,Ld),s[75]||(s[75]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ud,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:a.value.valign==="bottom",onChange:s[22]||(s[22]=x=>v(x.target.value))},null,40,Id),s[76]||(s[76]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",Fd,[e.createElementVNode("div",Od,[s[78]||(s[78]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(kt,{"model-value":a.value.fontFamily,placeholder:"继承默认","onUpdate:modelValue":s[23]||(s[23]=x=>L(ee=>{ee.fontFamily=x}))},null,8,["model-value"])]),e.createElementVNode("div",Hd,[s[79]||(s[79]=e.createElementVNode("span",{class:"pd-label"},"字号 (pt)",-1)),e.createVNode(de,{"model-value":a.value.fontSize,min:5,max:72,placeholder:"默认","onUpdate:modelValue":s[24]||(s[24]=x=>L(ee=>{ee.fontSize=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",Wd,[s[80]||(s[80]=e.createElementVNode("span",{class:"pd-label"},"加粗",-1)),e.createElementVNode("input",{checked:a.value.fontWeight==="bold",type:"checkbox",class:"pd-switch",onInput:s[25]||(s[25]=x=>L(ee=>{ee.fontWeight=x.target.checked?"bold":void 0}))},null,40,Gd)]),e.createElementVNode("div",qd,[s[81]||(s[81]=e.createElementVNode("span",{class:"pd-label"},"文字颜色",-1)),e.createVNode(Ne,{"model-value":a.value.color,"onUpdate:modelValue":s[26]||(s[26]=x=>L(ee=>{ee.color=x}))},null,8,["model-value"])]),e.createElementVNode("div",Kd,[s[82]||(s[82]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{"model-value":a.value.backgroundColor,"onUpdate:modelValue":s[27]||(s[27]=x=>L(ee=>{ee.backgroundColor=x}))},null,8,["model-value"])])]),s[93]||(s[93]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",jd,[e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":s[28]||(s[28]=x=>E.value=x),style:{width:"90px"}},[...s[83]||(s[83]=[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,E.value]]),e.createElementVNode("div",Yd,[e.createVNode(de,{modelValue:O.value,"onUpdate:modelValue":s[29]||(s[29]=x=>O.value=x),min:.25,max:5,step:.25},null,8,["modelValue"])]),e.createVNode(Ne,{modelValue:Y.value,"onUpdate:modelValue":s[30]||(s[30]=x=>Y.value=x),clearable:!1},null,8,["modelValue"])]),e.createElementVNode("div",Xd,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:s[31]||(s[31]=x=>A("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:s[32]||(s[32]=x=>A("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:s[33]||(s[33]=x=>A("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:s[34]||(s[34]=x=>A("none"))},"无")]),e.createElementVNode("div",Zd,[e.createElementVNode("label",Jd,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":s[35]||(s[35]=x=>z.value=x),value:"top",onChange:s[36]||(s[36]=x=>k(x))},null,544),[[e.vModelCheckbox,z.value]]),s[84]||(s[84]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",Qd,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":s[37]||(s[37]=x=>z.value=x),value:"right",onChange:s[38]||(s[38]=x=>k(x))},null,544),[[e.vModelCheckbox,z.value]]),s[85]||(s[85]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",_d,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":s[39]||(s[39]=x=>z.value=x),value:"bottom",onChange:s[40]||(s[40]=x=>k(x))},null,544),[[e.vModelCheckbox,z.value]]),s[86]||(s[86]=e.createElementVNode("span",null,"下",-1))]),e.createElementVNode("label",ec,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":s[41]||(s[41]=x=>z.value=x),value:"left",onChange:s[42]||(s[42]=x=>k(x))},null,544),[[e.vModelCheckbox,z.value]]),s[87]||(s[87]=e.createElementVNode("span",null,"左",-1))])]),e.createElementVNode("div",tc,[s[88]||(s[88]=e.createElementVNode("span",{class:"pd-label"},"内边距 (mm)",-1)),e.createVNode(de,{"model-value":a.value.padding,min:0,max:10,step:.5,placeholder:"默认","onUpdate:modelValue":s[43]||(s[43]=x=>L(ee=>{ee.padding=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",oc,[s[89]||(s[89]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:a.value.wordWrap??!0,type:"checkbox",class:"pd-switch",onInput:s[44]||(s[44]=x=>L(ee=>{ee.wordWrap=!!x.target.checked}))},null,40,nc)]),p.value?(e.openBlock(),e.createElementBlock("div",lc,[s[91]||(s[91]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:w.value,style:{width:"100%"},onChange:C},[...s[90]||(s[90]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,ac)])):e.createCommentVNode("",!0),p.value&&w.value==="shrink"?(e.openBlock(),e.createElementBlock("div",ic,[s[92]||(s[92]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(de,{"model-value":a.value.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":s[45]||(s[45]=x=>L(ee=>{ee.shrinkMinFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",rc,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!H.value,title:H.value||"",onClick:q}," 合并单元格 ",8,sc),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!G.value,onClick:_},"拆分单元格",8,dc)])],32)]),_:1}),e.createVNode(Qe,{modelValue:r.value,"onUpdate:modelValue":s[47]||(s[47]=x=>r.value=x),fields:t.fields,expression:d.value,"onUpdate:expression":J},null,8,["modelValue","fields","expression"])],64))}}),uc=ue(cc,[["__scopeId","data-v-2f71ec4e"]]),mc={class:"watermark-config"},pc={class:"pd-field"},vc={key:0,class:"pd-field"},fc={class:"pd-field"},gc={class:"pd-hint"},hc={class:"pd-field"},bc={class:"pd-field"},Ec={class:"pd-hint"},yc={class:"pd-field"},kc=["value"],Vc={class:"pd-field"},Nc=["min"],wc={class:"pd-field"},Cc=["min"],Sc=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=be.WATERMARK_DENSITY_PRESETS,u=be.WATERMARK_DEFAULTS.minTileWidth,a=be.WATERMARK_DEFAULTS.minTileHeight;function r(L){const E=L.trim();return E?/[{}]/.test(E)||/^[A-Za-z_$][\w$]*\s*\(/.test(E)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(E):!1}function d(L){return L?L.mode==="binding"?L.binding??"":L.content??"":""}const c=e.ref(d(o.modelValue)),m=e.ref(o.modelValue?.testData||""),f=e.ref(!1),g=e.ref(o.modelValue?.mode==="binding"?"binding":"fixed"),p=e.reactive({rotate:o.modelValue?.rotate??be.WATERMARK_DEFAULTS.rotate,color:o.modelValue?.color||be.WATERMARK_DEFAULTS.color,opacity:o.modelValue?.opacity??be.WATERMARK_DEFAULTS.opacity,tileWidth:o.modelValue?.tileWidth??be.WATERMARK_DEFAULTS.tileWidth,tileHeight:o.modelValue?.tileHeight??be.WATERMARK_DEFAULTS.tileHeight}),w=e.computed(()=>g.value==="binding");e.watch(()=>o.modelValue,L=>{L&&(c.value=d(L),g.value=L.mode==="binding"?"binding":"fixed",m.value=L.testData||"",p.rotate=L.rotate??be.WATERMARK_DEFAULTS.rotate,p.color=L.color||be.WATERMARK_DEFAULTS.color,p.opacity=L.opacity??be.WATERMARK_DEFAULTS.opacity,p.tileWidth=L.tileWidth??be.WATERMARK_DEFAULTS.tileWidth,p.tileHeight=L.tileHeight??be.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const C=e.computed({get(){const{tileWidth:L,tileHeight:E}=p;for(const[O,Y]of Object.entries(i))if(L===Y.width&&E===Y.height)return O;return"custom"},set(L){const E=i[L];E&&(p.tileWidth=E.width,p.tileHeight=E.height)}});function N(){g.value=r(c.value)?"binding":"fixed",J()}function v(){N()}function $(){f.value=!0}function W(L){c.value=L,N()}function te(L){p.color=L,J()}function J(){const L={testData:m.value,rotate:p.rotate,color:p.color,opacity:p.opacity,tileWidth:p.tileWidth,tileHeight:p.tileHeight};n("update:modelValue",g.value==="binding"?{...L,mode:"binding",binding:c.value,content:""}:{...L,mode:"fixed",content:c.value,binding:""})}return(L,E)=>(e.openBlock(),e.createElementBlock("div",mc,[E[18]||(E[18]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:E[8]||(E[8]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",pc,[E[9]||(E[9]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":E[0]||(E[0]=O=>c.value=O),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:v,onDblclick:$},null,544),[[e.vModelText,c.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:$},"编辑表达式")]),w.value?(e.openBlock(),e.createElementBlock("div",vc,[E[10]||(E[10]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":E[1]||(E[1]=O=>m.value=O),placeholder:"表达式取不到值时预览显示",onInput:J},null,544),[[e.vModelText,m.value]])])):e.createCommentVNode("",!0),e.createVNode(Qe,{modelValue:f.value,"onUpdate:modelValue":E[2]||(E[2]=O=>f.value=O),fields:t.fields,expression:c.value,"onUpdate:expression":W},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",fc,[E[11]||(E[11]=e.createElementVNode("span",{class:"pd-label"},"旋转角度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":E[3]||(E[3]=O=>p.rotate=O),min:-90,max:90,step:5,onChange:J},null,544),[[e.vModelText,p.rotate,void 0,{number:!0}]]),e.createElementVNode("span",gc,e.toDisplayString(p.rotate)+"°",1)]),e.createElementVNode("div",hc,[E[12]||(E[12]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{"model-value":p.color,"onUpdate:modelValue":te},null,8,["model-value"])]),e.createElementVNode("div",bc,[E[13]||(E[13]=e.createElementVNode("span",{class:"pd-label"},"透明度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":E[4]||(E[4]=O=>p.opacity=O),min:.05,max:.5,step:.05,onChange:J},null,544),[[e.vModelText,p.opacity,void 0,{number:!0}]]),e.createElementVNode("span",Ec,e.toDisplayString(p.opacity.toFixed(2)),1)]),e.createElementVNode("div",yc,[E[15]||(E[15]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":E[5]||(E[5]=O=>C.value=O),style:{width:"100%"},onChange:J},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),(O,Y)=>(e.openBlock(),e.createElementBlock("option",{key:Y,value:Y},e.toDisplayString(O.label)+"("+e.toDisplayString(O.width)+"×"+e.toDisplayString(O.height)+")",9,kc))),128)),E[14]||(E[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",Vc,[E[16]||(E[16]=e.createElementVNode("span",{class:"pd-label"},"瓦片宽",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":E[6]||(E[6]=O=>p.tileWidth=O),min:e.unref(u),step:10,onChange:J},null,40,Nc),[[e.vModelText,p.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",wc,[E[17]||(E[17]=e.createElementVNode("span",{class:"pd-label"},"瓦片高",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":E[7]||(E[7]=O=>p.tileHeight=O),min:e.unref(a),step:10,onChange:J},null,40,Cc),[[e.vModelText,p.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),xc=ue(Sc,[["__scopeId","data-v-b55bfc50"]]),Bc={class:"design-background-config"},$c=["title"],Dc={class:"design-background-actions"},Tc=["disabled"],Mc=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),u=e.inject(gt,e.computed(()=>{})),a=e.computed(()=>i.value||!u.value),r=e.computed(()=>o.modelValue?.rotation??0);async function d(f){const g=f.target,p=g.files?.[0];if(p){if(!p.type.startsWith("image/")){alert("仅支持上传图片文件"),g.value="";return}if(!u.value){alert("设计背景上传能力未配置"),g.value="";return}i.value=!0;try{const w=await u.value(p);w?n("update:modelValue",{src:w,rotation:0}):alert("设计背景上传失败")}catch(w){alert(w instanceof Error?w.message:"设计背景上传失败")}finally{i.value=!1,g.value=""}}}function c(){if(!o.modelValue?.src)return;const f=(r.value+90)%360;n("update:modelValue",{src:o.modelValue.src,rotation:f})}function m(){n("update:modelValue",void 0)}return(f,g)=>(e.openBlock(),e.createElementBlock("div",Bc,[g[0]||(g[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),g[1]||(g[1]=e.createElementVNode("p",{class:"design-background-tip"},"仅设计器显示,用于套打定位,不会出现在预览和打印中",-1)),t.modelValue?.src?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"design-background-path",title:t.modelValue.src},e.toDisplayString(t.modelValue.src),9,$c),e.createElementVNode("div",Dc,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:c}," 旋转("+e.toDisplayString(r.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:a.value}])},[e.createTextVNode(e.toDisplayString(i.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:d},null,40,Tc)],2))]))}}),zc=ue(Mc,[["__scopeId","data-v-3f4d2e32"]]),Ac={class:"tiling-config","data-test":"tiling-config"},Pc={class:"pd-field"},Rc={class:"tiling-switch"},Lc=["checked","disabled"],Uc={key:0,class:"pd-hint tiling-error"},Ic={class:"pd-field"},Fc=["value"],Oc=["value"],Hc={key:0,class:"pd-field"},Wc={class:"custom-size-grid"},Gc={key:1,class:"pd-field"},qc={class:"pd-radio-group",role:"radiogroup"},Kc={class:"pd-radio"},jc=["checked"],Yc={class:"pd-radio"},Xc=["checked"],Zc={class:"margin-grid"},Jc={class:"pd-field"},Qc={class:"pd-field"},_c={class:"pd-field"},eu={class:"pd-field"},tu={class:"pd-field"},ou={class:"pd-field"},nu={class:"pd-field"},lu={key:2,class:"pd-hint tiling-summary"},au=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=Object.keys(b.PAPER_PRESETS).filter(N=>N!=="CUSTOM"&&!b.PAPER_PRESETS[N]?.continuous),u=e.computed(()=>b.isContinuousPaperSize(o.templateData?.paperSize)),a=e.computed(()=>({...be.TILE_DEFAULTS,...o.modelValue??{},enabled:o.modelValue?.enabled??!1,sheetMargin:{...be.TILE_DEFAULTS.sheetMargin,...o.modelValue?.sheetMargin??{}}})),r=e.computed(()=>o.templateData?{...o.templateData,tiling:a.value}:void 0),d=e.computed(()=>r.value?be.validateTiling(r.value):[]),c=e.computed(()=>{const N=r.value;return N?Math.max(be.computeMaxColumns(N),1):1}),m=e.computed(()=>{const N=r.value;if(!(!N||d.value.length))try{return be.computeTileLayout(N)}catch{return}}),f=e.computed(()=>{const N=m.value,v=r.value;if(!N||!v)return"";const $=be.resolveSheetMm(v),W=a.value.sheetPaperSize==="CUSTOM"?"自定义":a.value.sheetPaperSize??"A4",te=a.value.sheetPaperSize==="CUSTOM"?"":a.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${W}${te} ${$.width}×${$.height}mm · ${N.columns} 列 × ${N.rows} 行 = 每张 ${N.perSheet} 格`});function g(N){n("update:modelValue",{...a.value,...N})}function p(N,v){g({sheetMargin:{...a.value.sheetMargin,[N]:v??0}})}function w(N){if(N!=="CUSTOM"){g({sheetPaperSize:N});return}const v=r.value,$=v?be.resolveSheetMm(v):{width:210,height:297};g({sheetPaperSize:"CUSTOM",sheetCustomWidth:a.value.sheetCustomWidth??$.width,sheetCustomHeight:a.value.sheetCustomHeight??$.height})}function C(N){if(!N){g({enabled:!1});return}const v=c.value,$=v>=1?Math.min(be.TILE_DEFAULTS.columns,v):1;g({...be.TILE_DEFAULTS,columns:$})}return(N,v)=>(e.openBlock(),e.createElementBlock("div",Ac,[v[30]||(v[30]=e.createElementVNode("h3",{class:"pd-divider"},"拼版打印",-1)),v[31]||(v[31]=e.createElementVNode("p",{class:"pd-hint"},"把标签按「列 × 行」铺到一张大纸上批量打印",-1)),e.createElementVNode("div",Pc,[e.createElementVNode("label",Rc,[e.createElementVNode("input",{type:"checkbox",checked:a.value.enabled,disabled:u.value,onChange:v[0]||(v[0]=$=>C($.target.checked))},null,40,Lc),v[13]||(v[13]=e.createElementVNode("span",null,"启用拼版",-1))]),u.value?(e.openBlock(),e.createElementBlock("p",Uc,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),a.value.enabled&&!u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Ic,[v[15]||(v[15]=e.createElementVNode("span",{class:"pd-label"},"目标纸张",-1)),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:a.value.sheetPaperSize??"A4",onChange:v[1]||(v[1]=$=>w($.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),$=>(e.openBlock(),e.createElementBlock("option",{key:$,value:$},e.toDisplayString(e.unref(b.PAPER_PRESETS)[$]?.label??$),9,Oc))),128)),v[14]||(v[14]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,Fc)]),a.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Hc,[v[17]||(v[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",Wc,[e.createVNode(de,{"model-value":a.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":v[2]||(v[2]=$=>g({sheetCustomWidth:$}))},null,8,["model-value"]),v[16]||(v[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":a.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":v[3]||(v[3]=$=>g({sheetCustomHeight:$}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",Gc,[v[20]||(v[20]=e.createElementVNode("span",{class:"pd-label"},"目标纸方向",-1)),e.createElementVNode("div",qc,[e.createElementVNode("label",Kc,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(a.value.sheetOrientation??"portrait")==="portrait",onChange:v[4]||(v[4]=$=>g({sheetOrientation:"portrait"}))},null,40,jc),v[18]||(v[18]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Yc,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:a.value.sheetOrientation==="landscape",onChange:v[5]||(v[5]=$=>g({sheetOrientation:"landscape"}))},null,40,Xc),v[19]||(v[19]=e.createElementVNode("span",null,"横向",-1))])])])),v[28]||(v[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",Zc,[e.createElementVNode("div",Jc,[v[21]||(v[21]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(de,{"model-value":a.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":v[6]||(v[6]=$=>p("top",$))},null,8,["model-value"])]),e.createElementVNode("div",Qc,[v[22]||(v[22]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(de,{"model-value":a.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":v[7]||(v[7]=$=>p("bottom",$))},null,8,["model-value"])]),e.createElementVNode("div",_c,[v[23]||(v[23]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(de,{"model-value":a.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":v[8]||(v[8]=$=>p("left",$))},null,8,["model-value"])]),e.createElementVNode("div",eu,[v[24]||(v[24]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(de,{"model-value":a.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":v[9]||(v[9]=$=>p("right",$))},null,8,["model-value"])])]),v[29]||(v[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",tu,[v[25]||(v[25]=e.createElementVNode("span",{class:"pd-label"},"横向间距",-1)),e.createVNode(de,{"model-value":a.value.gapX,min:0,max:50,"onUpdate:modelValue":v[10]||(v[10]=$=>g({gapX:$??0}))},null,8,["model-value"])]),e.createElementVNode("div",ou,[v[26]||(v[26]=e.createElementVNode("span",{class:"pd-label"},"纵向间距",-1)),e.createVNode(de,{"model-value":a.value.gapY,min:0,max:50,"onUpdate:modelValue":v[11]||(v[11]=$=>g({gapY:$??0}))},null,8,["model-value"])]),e.createElementVNode("div",nu,[v[27]||(v[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(de,{"model-value":a.value.columns,min:1,max:c.value,"onUpdate:modelValue":v[12]||(v[12]=$=>g({columns:$??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,$=>(e.openBlock(),e.createElementBlock("p",{key:$.code,class:"pd-hint tiling-error"},e.toDisplayString($.message),1))),128)),!d.value.length&&f.value?(e.openBlock(),e.createElementBlock("p",lu,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),iu=ue(au,[["__scopeId","data-v-aa278268"]]),ru={key:0,class:"prop-collapsed"},su={class:"prop-head"},du={class:"pd-tabs prop-tabs"},cu={class:"pd-tab-bar",role:"tablist"},uu={class:"pd-tab-pane",role:"tabpanel"},mu={class:"property-content"},pu={key:1,class:"pd-empty"},vu={class:"pd-tab-pane",role:"tabpanel"},fu={class:"pd-field"},gu=["value"],hu=["label"],bu=["value"],Eu={key:0,class:"pd-hint"},yu={key:1,class:"pd-field"},ku={class:"pd-label"},Vu={class:"custom-size-grid"},Nu={key:2,class:"pd-field"},wu={class:"pd-radio-group",role:"radiogroup"},Cu={class:"pd-radio"},Su=["checked"],xu={class:"pd-radio"},Bu=["checked"],$u={key:3,class:"pd-field"},Du={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},Tu={class:"pd-radio"},Mu=["checked"],zu={class:"pd-radio"},Au=["checked"],Pu={class:"pd-radio"},Ru=["checked"],Lu={class:"pd-radio"},Uu=["checked"],Iu={class:"pd-field"},Fu={class:"page-bg-row"},Ou={class:"page-bg-picker"},Hu={key:5,class:"pd-hint"},Wu={class:"margin-grid"},Gu={class:"pd-field"},qu={class:"pd-field"},Ku={class:"pd-field"},ju={class:"pd-field"},Yu={class:"pd-field"},Xu={class:"pd-field"},Zu=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(t,{emit:l}){const o=t,n=l,i=e.computed(()=>{const y=[];for(const[V,P]of Object.entries(b.PAPER_PRESETS)){if(o.multiPage&&b.isContinuousPaperSize(V))continue;const ie=P.group??"其他";let pe=y.find(ye=>ye.group===ie);pe||(pe={group:ie,items:[]},y.push(pe)),pe.items.push({key:V,label:P.label??V})}return y}),u=e.ref(""),a=e.computed(()=>o.element?["text","longText"].includes(o.element.printElementType.type):!1),r=e.computed(()=>o.element?o.element.printElementType.type==="image":!1),d=e.computed(()=>o.element?["barcode","qrcode"].includes(o.element.printElementType.type):!1),c=e.computed(()=>!o.element||o.element.printElementType.type!=="table"?!1:!!o.tableSelection&&o.tableSelection.elementId===o.element.id),m=e.computed(()=>o.element?o.element.printElementType.type==="table":!1),f=e.computed(()=>b.searchProperties(u.value)),g=e.computed(()=>f.value.groups),p=e.computed(()=>f.value.itemKeys),w=e.computed(()=>!!u.value.trim()),C=e.computed(()=>{if(!o.element)return[];if(o.element.printElementType.type==="table"&&o.tableSelection){const{r1:y,c1:V}=o.tableSelection,P=o.element.options.tableRows;if(P&&P[y]){const ie=P[y],pe=o.element.options.fields?.[0]?.dataSource;return b.getTableCellBindings(ie.type,y,V,pe)}}return b.getElementBindings(o.element)});function N(y){return y.split(".").flatMap(V=>{const P=V.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!P)return[V];const ie=P[1],pe=[...P[2].matchAll(/\[(\d+)\]/g)].map(ye=>Number(ye[1]));return[ie,...pe]})}function v(y){return o.element?N(y).reduce((ie,pe)=>ie==null?"":ie[pe],o.element)??"":""}function $(y,V){if(!o.element)return;const P=N(y),ie=P.pop(),pe=P.reduce((ye,we)=>((ye[we]===void 0||ye[we]===null)&&(ye[we]={}),ye[we]),o.element);pe[ie]=V||void 0,o.recordHistory?.()}function W(y){u.value=y}function te(y){o.element&&$("options.src",y)}const J=e.computed(()=>o.templateData?.paperSize||"A4"),L=e.computed(()=>!o.multiPage&&b.isContinuousPaperSize(J.value)),E=e.computed(()=>b.isLabelPaperSize(J.value)),O=e.computed(()=>o.templateData?.orientation||"portrait"),Y=e.computed(()=>!!o.templateData?.tiling?.enabled),z=e.computed(()=>o.templateData?.outputRotation??0),h=e.computed({get:()=>o.templateData?.pageBackground||"#ffffff",set:y=>j(y)}),A=e.computed(()=>o.templateData?.margins.top??10),k=e.computed(()=>o.templateData?.margins.bottom??10),H=e.computed(()=>o.templateData?.margins.left??10),G=e.computed(()=>o.templateData?.margins.right??10),q=e.computed(()=>o.templateData?.header.height??10),_=e.computed(()=>o.templateData?.footer.height??10),B=e.computed(()=>o.templateData?.customWidth??b.PAPER_PRESETS[J.value]?.width??210),s=e.computed(()=>o.templateData?.customHeight??297),x=e.computed(()=>o.templateData?.designBackground);function ee(y){if(o.templateData){if(!y){const V={...o.templateData};delete V.designBackground,n("update:templateData",V);return}se({designBackground:y})}}const he=e.computed(()=>o.templateData?.watermark??{});function ge(y){se({watermark:y})}function se(y){if(!o.templateData)return;const V={...o.templateData,...y};n("update:templateData",V)}function K(y){if(o.templateData){if(b.isContinuousPaperSize(y)){se({paperSize:y,customWidth:y==="CONTINUOUS"?o.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...o.templateData.margins,bottom:o.templateData?.margins.bottom??0}});return}if(y==="CUSTOM"){se({paperSize:"CUSTOM"});return}if(b.PAPER_PRESETS[y]){if(b.isLabelPaperSize(y)){se({paperSize:y,...b.labelPaperDefaults(o.templateData)});return}se({paperSize:y})}}}function S(y){se({orientation:String(y)})}function T(y){se({outputRotation:Number(y)})}function j(y){const V=y&&y.toLowerCase()!=="#ffffff"&&y.toLowerCase()!=="#fff"?y:void 0;se(V===void 0?{pageBackground:void 0}:{pageBackground:V})}function Z(){se({pageBackground:void 0})}function ne(y){y!==void 0&&se({customWidth:y})}function ve(y){y!==void 0&&se({customHeight:y})}function M(y){y!==void 0&&se({margins:{...o.templateData.margins,top:y}})}function D(y){y!==void 0&&se({margins:{...o.templateData.margins,bottom:y}})}function U(y){y!==void 0&&se({margins:{...o.templateData.margins,left:y}})}function oe(y){y!==void 0&&se({margins:{...o.templateData.margins,right:y}})}function le(y){y!==void 0&&se({header:{...o.templateData.header,height:y}})}function me(y){y!==void 0&&se({footer:{...o.templateData.footer,height:y}})}const R=e.computed(()=>o.activeTab||"page");function I(y){n("update:activeTab",y),n("toggle-collapse")}return(y,V)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",ru,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:V[0]||(V[0]=P=>I(R.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:R.value==="element"}]),title:"元素属性",onClick:V[1]||(V[1]=P=>I("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:R.value==="page"}]),title:"页面属性",onClick:V[2]||(V[2]=P=>I("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",su,[V[18]||(V[18]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:V[3]||(V[3]=P=>y.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",du,[e.createElementVNode("div",cu,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(t.activeTab||"page")==="element"}]),onClick:V[4]||(V[4]=P=>y.$emit("update:activeTab","element"))},"元素属性",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(t.activeTab||"page")==="page"}]),onClick:V[5]||(V[5]=P=>y.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",uu,[t.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(_a,{onSearch:W}),e.createElementVNode("div",mu,[g.value.includes("position-size")&&!c.value?(e.openBlock(),e.createBlock(ui,{key:0,element:t.element,"matched-keys":p.value,searching:w.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("appearance")?(e.openBlock(),e.createBlock(ji,{key:1,element:t.element,"is-text-type":a.value,"matched-keys":p.value,searching:w.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("code")&&d.value?(e.openBlock(),e.createBlock(pr,{key:2,element:t.element,"matched-keys":p.value,searching:w.value,onChange:V[6]||(V[6]=P=>t.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("binding")?(e.openBlock(),e.createBlock(Be,{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,P=>(e.openBlock(),e.createBlock(os,{key:P.targetPath,descriptor:P,fields:t.fields,"model-value":v(P.targetPath),"onUpdate:modelValue":ie=>$(P.targetPath,ie)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),r.value?(e.openBlock(),e.createBlock(Ps,{key:0,onSuccess:te})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0),m.value&&t.tableSelection&&t.tableSelection.elementId===t.element.id?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createVNode(Os,{element:t.element,selection:t.tableSelection},null,8,["element","selection"]),e.createVNode(uc,{element:t.element,selection:t.tableSelection,fields:t.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),m.value&&g.value.includes("content")?(e.openBlock(),e.createBlock(ms,{key:5,element:t.element,fields:t.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),g.value.includes("border-bg")?(e.openBlock(),e.createBlock(bs,{key:6,element:t.element,"matched-keys":p.value,searching:w.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("pagination")&&m.value?(e.openBlock(),e.createBlock(zt,{key:7,element:t.element,"matched-keys":p.value,searching:w.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("pagination")&&!m.value?(e.openBlock(),e.createBlock(zt,{key:8,element:t.element,"matched-keys":p.value,searching:w.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("advanced")?(e.openBlock(),e.createBlock(Cs,{key:9,element:t.element,"matched-keys":p.value,searching:w.value,onDeleteElement:V[7]||(V[7]=P=>y.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",pu,"请在画布中选择一个元素"))],512),[[e.vShow,(t.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",vu,[e.createElementVNode("form",{class:"pd-form",onSubmit:V[17]||(V[17]=e.withModifiers(()=>{},["prevent"]))},[V[39]||(V[39]=e.createElementVNode("h3",{class:"pd-divider"},"纸张设置",-1)),e.createElementVNode("div",fu,[V[20]||(V[20]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:J.value,class:"pd-select",onChange:V[8]||(V[8]=P=>K(P.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,P=>(e.openBlock(),e.createElementBlock("optgroup",{key:P.group,label:P.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.items,ie=>(e.openBlock(),e.createElementBlock("option",{key:ie.key,value:ie.key},e.toDisplayString(ie.label),9,bu))),128))],8,hu))),128)),V[19]||(V[19]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,gu)]),E.value?(e.openBlock(),e.createElementBlock("p",Eu,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),L.value||J.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",yu,[e.createElementVNode("span",ku,e.toDisplayString(L.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",Vu,[e.createVNode(de,{"model-value":B.value,min:25,max:2e3,"onUpdate:modelValue":ne},null,8,["model-value"]),J.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[V[21]||(V[21]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":s.value,min:25,max:2e3,"onUpdate:modelValue":ve},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),L.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Nu,[V[24]||(V[24]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",wu,[e.createElementVNode("label",Cu,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:O.value==="portrait",onChange:V[9]||(V[9]=P=>S(P.target.value))},null,40,Su),V[22]||(V[22]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",xu,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:O.value==="landscape",onChange:V[10]||(V[10]=P=>S(P.target.value))},null,40,Bu),V[23]||(V[23]=e.createElementVNode("span",null,"横向",-1))])]),V[25]||(V[25]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!L.value&&!Y.value?(e.openBlock(),e.createElementBlock("div",$u,[V[30]||(V[30]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",Du,[e.createElementVNode("label",Tu,[e.createElementVNode("input",{type:"radio",value:"0",checked:z.value===0,onChange:V[11]||(V[11]=P=>T(P.target.value))},null,40,Mu),V[26]||(V[26]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",zu,[e.createElementVNode("input",{type:"radio",value:"90",checked:z.value===90,onChange:V[12]||(V[12]=P=>T(P.target.value))},null,40,Au),V[27]||(V[27]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",Pu,[e.createElementVNode("input",{type:"radio",value:"180",checked:z.value===180,onChange:V[13]||(V[13]=P=>T(P.target.value))},null,40,Ru),V[28]||(V[28]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",Lu,[e.createElementVNode("input",{type:"radio",value:"270",checked:z.value===270,onChange:V[14]||(V[14]=P=>T(P.target.value))},null,40,Uu),V[29]||(V[29]=e.createElementVNode("span",null,"270°",-1))])]),V[31]||(V[31]=e.createElementVNode("p",{class:"pd-hint"},"整页内容旋转对应角度出纸;90°/270° 时纸张长宽互换以贴合内容,内容不变形不裁切;0° 为不旋转(默认)",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",Iu,[V[32]||(V[32]=e.createElementVNode("span",{class:"pd-label"},"页面背景色",-1)),e.createElementVNode("div",Fu,[e.createElementVNode("div",Ou,[e.createVNode(Ne,{modelValue:h.value,"onUpdate:modelValue":V[15]||(V[15]=P=>h.value=P)},null,8,["modelValue"])]),e.createElementVNode("button",{type:"button",class:"pd-reset",title:"恢复为默认白色",onClick:Z},"默认")])]),e.createVNode(zc,{"model-value":x.value,"onUpdate:modelValue":ee},null,8,["model-value"]),t.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(iu,{key:4,"model-value":t.templateData?.tiling,"template-data":t.templateData,"onUpdate:modelValue":V[16]||(V[16]=P=>se({tiling:P}))},null,8,["model-value","template-data"])),V[40]||(V[40]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),L.value?(e.openBlock(),e.createElementBlock("p",Hu,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",Wu,[e.createElementVNode("div",Gu,[V[33]||(V[33]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(de,{"model-value":A.value,min:0,max:50,"onUpdate:modelValue":M},null,8,["model-value"])]),e.createElementVNode("div",qu,[V[34]||(V[34]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(de,{"model-value":k.value,min:0,max:100,"onUpdate:modelValue":D},null,8,["model-value"])]),e.createElementVNode("div",Ku,[V[35]||(V[35]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(de,{"model-value":H.value,min:0,max:50,"onUpdate:modelValue":U},null,8,["model-value"])]),e.createElementVNode("div",ju,[V[36]||(V[36]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(de,{"model-value":G.value,min:0,max:50,"onUpdate:modelValue":oe},null,8,["model-value"])])]),V[41]||(V[41]=e.createElementVNode("h3",{class:"pd-divider"},"页眉/页脚高度 (mm)",-1)),e.createElementVNode("div",Yu,[V[37]||(V[37]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(de,{"model-value":q.value,min:0,max:100,step:.1,"onUpdate:modelValue":le},null,8,["model-value"])]),e.createElementVNode("div",Xu,[V[38]||(V[38]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(de,{"model-value":_.value,min:0,max:100,step:.1,"onUpdate:modelValue":me},null,8,["model-value"])])],32),e.createVNode(xc,{"model-value":he.value,fields:t.fields,"onUpdate:modelValue":ge},null,8,["model-value","fields"])],512),[[e.vShow,(t.activeTab||"page")==="page"]])])],64))],2))}}),Ju=ue(Zu,[["__scopeId","data-v-4782ce32"]]),Qu={class:"status-bar"},_u={key:0,class:"status-item coord"},em={class:"status-item"},tm={class:"status-item"},om={class:"status-item status-paper"},nm=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("div",Qu,[t.coordinate?(e.openBlock(),e.createElementBlock("span",_u," x:"+e.toDisplayString(t.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(t.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",em,"缩放 "+e.toDisplayString(t.scale)+"%",1),e.createElementVNode("span",tm,"元素 "+e.toDisplayString(t.elementCount)+e.toDisplayString(t.selectedCount?` (选中 ${t.selectedCount})`:""),1),e.createElementVNode("span",{class:e.normalizeClass(["status-dirty",{on:t.dirty}])},[o[0]||(o[0]=e.createElementVNode("span",{class:"dirty-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.dirty?"未保存":"已保存"),1)],2),e.createElementVNode("span",om,e.toDisplayString(t.paper),1)]))}}),lm=ue(nm,[["__scopeId","data-v-a91952ff"]]),am={id:"getting-started",title:"快速入门",content:`
|
|
6
|
+
*/"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),be=require("@worm-vue3-print/core"),h=require("@worm-vue3-print/core/designer"),ue=require("lucide-vue-next"),Me=require("@worm-vue3-print/core/browser"),Lt=require("jsbarcode"),Xt=require("dompurify"),Je=Symbol("selected-ids"),It=Symbol("preview-ids");function Zt(t){const l=e.ref(new Set),o=e.ref(new Set),n=e.computed(()=>t.value.filter(d=>l.value.has(d.id))),i=e.computed(()=>l.value.size>0);function c(d,f=!1){if(f){const z=new Set(l.value);z.has(d)?z.delete(d):z.add(d),l.value=z}else l.value=new Set([d])}function r(){l.value=new Set}function a(d){l.value=new Set(d)}function s(d){o.value=new Set(d)}function m(){o.value=new Set}function u(){l.value=new Set(o.value),o.value=new Set}function g(){const d=n.value;if(d.length===0)return null;let f=1/0,z=1/0,V=-1/0,N=-1/0;return d.forEach(p=>{f=Math.min(f,p.options.left),z=Math.min(z,p.options.top),V=Math.max(V,p.options.left+p.options.width),N=Math.max(N,p.options.top+p.options.height)}),{left:f,top:z,width:V-f,height:N-z}}return{selectedIds:l,selectedElements:n,hasSelection:i,select:c,clearSelection:r,selectAll:a,getSelectionBounds:g,previewIds:o,setPreview:s,clearPreview:m,commitPreview:u}}function Jt(){const t=e.ref(null);function l(i){t.value=i.map(c=>({options:{...c.options},printElementType:{...c.printElementType}}))}function o(i=10){if(!t.value)return null;const c=new Map;for(const a of t.value){const s=a.options.groupId;s&&c.set(s,(c.get(s)??0)+1)}const r=new Map;for(const[a,s]of c)r.set(a,s>=2?h.generateGroupId():void 0);return t.value.map(a=>({id:h.generateId(),options:{...a.options,left:a.options.left+i,top:a.options.top+i,groupId:a.options.groupId?r.get(a.options.groupId):void 0},printElementType:{...a.printElementType}}))}function n(){return t.value!==null&&t.value.length>0}return{clipboard:t,copy:l,paste:o,hasData:n}}function Qt(t){const o=e.ref([]),n=e.ref([]),i=e.ref(!1),c=e.ref(!1);function r(){i.value=o.value.length>0,c.value=n.value.length>0}function a(f){const z={elements:JSON.parse(JSON.stringify(f?.elements??[])),templateData:JSON.parse(JSON.stringify(f?.templateData??{}))};return f?.pages&&(z.pages=JSON.parse(JSON.stringify(f.pages)),f.activePageIndex!==void 0&&(z.activePageIndex=f.activePageIndex)),z}function s(f){return a(f)}function m(f){o.value.push(s(f)),n.value=[],o.value.length>50&&o.value.shift(),r()}function u(f){if(o.value.length===0)return null;const z=o.value.pop();return n.value.push(f?s(f):a(z)),r(),o.value.length>0?a(o.value[o.value.length-1]):null}function g(f){if(n.value.length===0)return null;const z=n.value.pop();return o.value.push(f?s(f):a(z)),r(),a(z)}function d(){o.value=[],n.value=[],r()}return{push:m,undo:u,redo:g,canUndo:i,canRedo:c,clear:d}}const pt="开启拼版后只能有一个设计页面";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:[]},elements:[],watermark:{}}}function Ze(t){const l=(o,n)=>(o??[]).map(i=>{const c={...i.options};return(i.printElementType?.type??i.type)==="table"&&h.syncTableElementSize(c),{id:i.id||h.generateId(),zone:n,options:c,printElementType:{...i.printElementType}}});return{...t,margins:{...t.margins},header:{height:t.header?.height??10,elements:[]},footer:{height:t.footer?.height??10,elements:[]},guides:[...t.guides??[]],elements:[...l(t.elements??[],"content"),...l(t.header?.elements??[],"header"),...l(t.footer?.elements??[],"footer")]}}function wt(t){const l=(n,i)=>{const c=Ze(h.normalizeTemplateUnits(n));return c.name||(c.name=`页面 ${i+1}`),c};if(!t)return[l(Re(),0)];const o=Array.isArray(t.pages)?t.pages:[t];return o.length?o.map(l):[l(Re(),0)]}function Ct(t){const l=t.elements,o=n=>l.filter(i=>(i.zone||"content")===n).map(i=>({id:i.id,type:i.printElementType.type,options:{...i.options},printElementType:{...i.printElementType}}));return{unit:"mm",...t,header:{...t.header,elements:o("header")},footer:{...t.footer,elements:o("footer")},elements:o("content"),guides:[...t.guides??[]]}}function _t(t={}){const l=e.ref(100),o=e.ref(!0),n=e.ref(!0),i=e.ref(!1),c=e.ref(!0),r=e.ref(wt(t.initialTemplate)),a=e.ref(0),s=e.ref(r.value[0]??Ze(Re())),m=e.computed(()=>r.value.some(W=>W.tiling?.enabled===!0));function u(){return m.value?(alert(pt),!0):!1}function g(){r.value[a.value]=s.value}function d(W){W<0||W>=r.value.length||(g(),a.value=W,s.value=r.value[W],x())}const f=e.computed({get:()=>s.value.elements,set:W=>{s.value.elements=W}}),z=e.ref(t.initialFields||[]),{selectedIds:V,selectedElements:N,select:p,clearSelection:S,selectAll:O,previewIds:oe,setPreview:ee,clearPreview:Z,commitPreview:y}=Zt(f),{group:U,ungroup:Y,getGroupedIds:q}=h.useGroup(),{copy:E,paste:T,hasData:b}=Jt(),{align:$}=h.useAlign(),{push:M,undo:L,redo:J,canUndo:P,canRedo:X}=Qt(),re=e.computed(()=>{if(V.value.size===0)return null;const W=V.value.values().next().value;return f.value.find(se=>se.id===W)||null}),le=e.ref(null);function v(W){le.value=W}function x(){S(),v(null)}function K(){return{elements:f.value.map(W=>({id:W.id,zone:W.zone,options:JSON.parse(JSON.stringify(W.options)),printElementType:{...W.printElementType}})),templateData:{paperSize:s.value.paperSize,orientation:s.value.orientation,outputRotation:s.value.outputRotation,margins:{...s.value.margins},header:{height:s.value.header.height,elements:[]},footer:{height:s.value.footer.height,elements:[]},elements:[],customWidth:s.value.customWidth,customHeight:s.value.customHeight,watermark:s.value.watermark?{...s.value.watermark}:void 0,guides:[...s.value.guides??[]]},pages:JSON.parse(JSON.stringify(r.value)),activePageIndex:a.value}}function G(){M(K())}function C(W){return W.pages?.[W.activePageIndex??0]?.elements??W.elements}function D(){const W=L(K());W?.pages?(r.value=W.pages,a.value=W.activePageIndex??0,s.value=r.value[a.value]??r.value[0],x()):W?.templateData&&(s.value={...W.templateData,elements:W.elements})}function j(){const W=J(K());W?.pages?(r.value=W.pages,a.value=W.activePageIndex??0,s.value=r.value[a.value]??r.value[0],x()):W?.templateData&&(s.value={...W.templateData,elements:W.elements})}function _(){E(N.value)}function ae(){E(N.value),fe()}function ge(){const W=T();W&&W.length>0&&(f.value.push(...W),G())}function A(){E(N.value);const W=T();W&&W.length>0&&(W.forEach(se=>{se.options.left+=5,se.options.top+=5}),f.value.push(...W),p(W[0].id,!1),G())}function B(){l.value=100}const F=e.computed(()=>b());let ne=!1,ie=null;const ve=300;function I(W,se){const me=N.value.filter(ke=>!ke.options.locked);me.length!==0&&(me.forEach(ke=>{ke.options.left+=W,ke.options.top+=se}),ne||(ne=!0,G()),ie&&clearTimeout(ie),ie=setTimeout(()=>{ne=!1,ie=null},ve))}function H(){O(f.value.map(W=>W.id))}function k(W){$(N.value,W),G()}function w(W,se=!1){if(se){p(W,!0);return}V.value=new Set(q(f.value,W))}function R(){f.value=U(f.value,V.value),G()}function ce(){f.value=Y(f.value,V.value),G()}function fe(){V.value.size!==0&&(f.value=f.value.filter(W=>!V.value.has(W.id)),S(),G())}const{setup:ye,cleanup:we}=h.useKeyboard({onMove:I,onDelete:fe,onCopy:_,onPaste:ge,onSelectAll:H,onUndo:D,onRedo:j,onDuplicate:A,onResetZoom:B,onAlignLeft:()=>k("left"),onAlignRight:()=>k("right"),onAlignCenterH:()=>k("vertical"),onAlignTop:()=>k("top"),onAlignBottom:()=>k("bottom"),onGroup:R,onUngroup:ce});let xe=null;function Le(){xe=K()}function _e(){if(!xe)return;const W=new Map(xe.elements.map(Ee=>[Ee.id,Ee]));let se=!1;for(const Ee of f.value){const $e=W.get(Ee.id);if(!$e)continue;($e.options.left!==Ee.options.left||$e.options.top!==Ee.options.top||$e.options.width!==Ee.options.width||$e.options.height!==Ee.options.height)&&h.finalizeElementZone(Ee,s.value).rejected&&(se=!0)}se&&alert("该元素类型不能放入页眉/页脚");const me=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ke=C(xe).map(me).join("|"),Se=C(K()).map(me).join("|");xe=null,ke!==Se&&G()}function We(W,se){const me=h.zoneFromPaperPoint(s.value,se.x,se.y);if(me!=="content"&&!h.ZONE_ALLOWED_TYPES.includes(W.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ke=h.getZoneRects(s.value)[me];return W.zone=me,W.options.left=se.x-ke.left,W.options.top=se.y-ke.top,me!=="content"&&h.clampToZone(W,ke),!0}function et(W,se){const me=h.createRuntimeElement(W);se&&!We(me,se)||(f.value.push(me),p(me.id,!1),G())}function tt(W,se){const me=h.createFieldElement(W);se&&!We(me,se)||(f.value.push(me),p(me.id,!1),G())}function ot(W){if(V.value.size===0)return;const se=V.value.values().next().value,me=f.value.find(Ae=>Ae.id===se);if(!me)return;const ke=me.options.zIndex??0,Se=f.value.map(Ae=>Ae.options.zIndex??0),Ee=Math.max(...Se,0),$e=Math.min(...Se,0);switch(W){case"top":me.options.zIndex=Ee+1;break;case"bottom":me.options.zIndex=$e-1;break;case"up":me.options.zIndex=ke+1;break;case"down":me.options.zIndex=ke-1;break}G()}function nt(W,se){const{width:me,height:ke}=h.getPaperDimensions(s.value),Se=96/25.4;l.value=h.computeFitScale(W,se,me*Se,ke*Se)}function lt(W){if(s.value={...W},r.value[a.value]=s.value,r.value.length>1){const se={paperSize:W.paperSize,orientation:W.orientation,outputRotation:W.outputRotation,customWidth:W.customWidth,customHeight:W.customHeight};for(const me of r.value)Object.assign(me,se)}G()}function Ge(){return g(),r.value.length<=1?Ct(r.value[0]):{version:1,pages:r.value.map(Ct)}}function ze(W,se){r.value=wt(W),a.value=0,s.value=r.value[0],se&&(s.value={...s.value,elements:se.map(me=>({...me,id:me.id||h.generateId(),zone:me.zone||"content",options:{...me.options},printElementType:{...me.printElementType}}))},r.value[a.value]=s.value),M(K())}function qe(){const W=new Set(r.value.map(me=>me.name));let se=r.value.length+1;for(;W.has(`页面 ${se}`);)se++;return`页面 ${se}`}function at(){if(u())return;g();const W=r.value[a.value]??Re(),se=Ze({...Re(),paperSize:W.paperSize,orientation:W.orientation,customWidth:W.customWidth,customHeight:W.customHeight,name:qe()});r.value.push(se),a.value=r.value.length-1,s.value=se,x(),G()}function it(){if(u())return;g();const W=r.value[a.value],se=JSON.parse(JSON.stringify(W));se.name=`${W.name??`页面 ${a.value+1}`} 副本`,se.elements=se.elements.map(me=>({...me,id:h.generateId()})),r.value.splice(a.value+1,0,se),d(a.value+1),G()}function Ke(W){r.value.length<=1||(g(),r.value.splice(W,1),W<a.value?a.value--:W===a.value&&a.value>=r.value.length&&(a.value=r.value.length-1),s.value=r.value[a.value],x(),G())}function rt(W,se){r.value[W]&&(r.value[W].name=se)}function st(W,se){if(W===se)return;g();const[me]=r.value.splice(W,1);r.value.splice(se,0,me),a.value=se,s.value=me,x(),G()}return M(K()),e.onMounted(()=>ye()),e.onUnmounted(()=>{we(),ie&&(clearTimeout(ie),ie=null)}),{scale:l,showRuler:o,showGrid:n,snapToGrid:i,showTableGhostBorder:c,templateData:s,elements:f,fields:z,tilingEnabled:m,pages:r,activePageIndex:a,switchPage:d,addPage:at,duplicatePage:it,deletePage:Ke,renamePage:rt,movePage:st,selectedIds:V,selectedElements:N,selectedElement:re,select:p,selectElement:w,clearSelection:S,selectAll:H,previewIds:oe,setPreview:ee,clearPreview:Z,commitPreview:y,hasClipboard:F,copy:_,paste:ge,cutSelected:ae,tableSelection:le,setTableSelection:v,canUndo:P,canRedo:X,undo:D,redo:j,recordHistory:G,alignSelected:k,groupSelected:R,ungroupSelected:ce,deleteSelected:fe,duplicateSelected:A,resetZoom:B,dragStart:Le,dragStop:_e,addElement:et,addFieldElement:tt,moveLayer:ot,fitToWindow:nt,updateTemplateData:lt,getTemplateJson:Ge,loadTemplate:ze}}const Ce=Symbol("mixed"),vt=new Set(["text","longText"]);function eo(t){const{elements:l,selectedIds:o,tableSelection:n,recordHistory:i}=t,c=e.computed(()=>l.value.filter(b=>o.value.has(b.id)&&!b.options.locked)),r=e.computed(()=>{const b=n.value;return b?l.value.find($=>$.id===b.elementId)??null:null}),a=e.computed(()=>n.value&&r.value?"cells":c.value.length>0||o.value.size>0?"elements":"none"),s=e.computed(()=>{const b=n.value,$=r.value?.options.tableRows;if(!b||!$)return[];const M=[];for(let L=b.r1;L<=b.r2;L++)for(let J=b.c1;J<=b.c2;J++){const P=$[L]?.cells[J];P&&!P.merged&&M.push(P)}return M}),m=e.computed(()=>c.value.filter(b=>vt.has(b.printElementType.type))),u=e.computed(()=>a.value==="cells"?s.value.length>0:a.value!=="elements"?!1:c.value.length>0&&m.value.length===c.value.length),g=e.computed(()=>a.value==="cells"?s.value:m.value.map(b=>b.options));function d(b){if(!b.length)return;const $=b[0];return b.every(M=>M===$)?$:Ce}const f=(b,$)=>(b??"").split(/\s+/).includes($),z=e.computed(()=>{const b=g.value;if(!b.length)return{fontFamily:void 0,fontSize:void 0,color:void 0,backgroundColor:void 0,textAlign:void 0,verticalAlign:void 0,bold:!1,underline:!1,strike:!1};const $=b.map(L=>L.fontWeight==="bold"||L.fontWeight==="bolder"),M=b.map(L=>L.textDecoration);return{fontFamily:d(b.map(L=>L.fontFamily)),fontSize:d(b.map(L=>L.fontSize)),color:d(b.map(L=>L.color)),backgroundColor:d(b.map(L=>L.backgroundColor)),textAlign:d(b.map(L=>a.value==="cells"?L.align:L.textAlign)),verticalAlign:d(b.map(L=>a.value==="cells"?L.valign:L.verticalAlign)),bold:$.every(Boolean)?!0:$.some(Boolean)?Ce:!1,underline:M.map(L=>f(L,"underline")).every(Boolean)?!0:M.some(L=>f(L,"underline"))?Ce:!1,strike:M.map(L=>f(L,"line-through")).every(Boolean)?!0:M.some(L=>f(L,"line-through"))?Ce:!1}});function V(b){const $=s.value;$.length&&($.forEach(b),i())}function N(b){if(a.value==="cells"){V(X=>{"fontFamily"in b&&(X.fontFamily=b.fontFamily),"fontSize"in b&&(X.fontSize=b.fontSize),"color"in b&&(X.color=b.color),"backgroundColor"in b&&(X.backgroundColor=b.backgroundColor),"textAlign"in b&&(X.align=b.textAlign),"verticalAlign"in b&&(X.valign=b.verticalAlign)});return}const $=m.value,M=c.value,J=["fontFamily","fontSize","color","textAlign","verticalAlign"].some(X=>X in b),P="backgroundColor"in b;!($.length&&J)&&!(M.length&&P)||($.forEach(X=>{const re=X.options;"fontFamily"in b&&(re.fontFamily=b.fontFamily),"fontSize"in b&&(re.fontSize=b.fontSize),"color"in b&&(re.color=b.color),"textAlign"in b&&(re.textAlign=b.textAlign),"verticalAlign"in b&&(re.verticalAlign=b.verticalAlign)}),P&&M.forEach(X=>{X.options.backgroundColor=b.backgroundColor}),i())}function p(){if(a.value==="cells"){const M=z.value.bold!==!0;V(L=>{L.fontWeight=M?"bold":void 0});return}const b=z.value.bold!==!0,$=m.value;$.length&&($.forEach(M=>{M.options.fontWeight=b?"bold":"normal"}),i())}function S(b){if(a.value==="cells")return;const $=m.value;if(!$.length)return;const M=z.value[b==="underline"?"underline":"strike"]!==!0;$.forEach(L=>{const J=(L.options.textDecoration??"").split(/\s+/).filter(Boolean),P=J.indexOf(b);M&&P<0&&J.push(b),!M&&P>=0&&J.splice(P,1),L.options.textDecoration=J.length?J.join(" "):void 0}),i()}const O=()=>S("underline"),oe=()=>S("line-through");function ee(b,$){const M=c.value;M.length&&(M.forEach(L=>{L.options.borders=void 0,b==="none"?L.options.borderWidth=0:(L.options.borderWidth=$.width,L.options.borderStyle=$.style,L.options.borderColor=$.color)}),i())}function Z(b,$){const M=n.value,L=r.value?.options.tableRows;!M||!L||(h.applyBorderPreset(L,{r1:M.r1,c1:M.c1,r2:M.r2,c2:M.c2},b,$),i())}function y(b,$,M){V(L=>{const J={...L.borders??{}};for(const P of b)M?J[P]={...$}:delete J[P];L.borders=J})}const U=["top","right","bottom","left"],Y=e.computed(()=>{if(a.value!=="cells")return null;const b=s.value;if(!b.length)return null;const $={};for(const M of U){const L=b.map(J=>!!J.borders?.[M]);$[M]=L.every(Boolean)?!0:L.some(Boolean)?Ce:!1}return $});function q(b,$){const M=Y.value?.[b]!==!0;y([b],$,M)}const E=e.computed(()=>{if(a.value!=="elements")return null;const b=c.value;if(!b.length)return null;const $={};for(const M of U){const L=b.map(J=>!!J.options.borders?.[M]);$[M]=L.every(Boolean)?!0:L.some(Boolean)?Ce:!1}return $});function T(b,$){const M=c.value;if(!M.length)return;const L=E.value?.[b]!==!0;M.forEach(J=>{const P={...J.options.borders??{}};L?P[b]={width:$.width,style:$.style,color:$.color}:delete P[b],J.options.borders=P}),i()}return{context:a,fontEditable:u,values:z,applyStyle:N,toggleBold:p,toggleUnderline:O,toggleStrike:oe,applyElementBorder:ee,applyCellBorderPreset:Z,applyCellBorderEdges:y,cellEdges:Y,toggleCellEdge:q,elementEdges:E,toggleElementEdge:T}}const to=["fontFamily","fontSize","fontWeight","color","textAlign","verticalAlign","textDecoration"];function oo(t){const{elements:l,selectedIds:o,recordHistory:n}=t,i=e.ref(!1),c=e.ref(!1),r=e.ref(null);let a=null;const s=e.computed(()=>l.value.filter(V=>o.value.has(V.id)&&!V.options.locked)),m=e.computed(()=>s.value.length===1);function u(V){if(!V)return;const N={};for(const p of h.ELEMENT_BORDER_SIDES){const S=V[p];S&&(N[p]={...S})}return N}function g(V=!1){const N=s.value[0];if(!N)return!1;const p=N.options,S=N.printElementType.type;return a={text:vt.has(S)?Object.fromEntries(to.map(O=>[O,p[O]])):null,backgroundColor:p.backgroundColor,border:h.acceptsElementBorder(S)?{borderWidth:p.borderWidth,borderStyle:p.borderStyle,borderColor:p.borderColor,borders:u(p.borders)}:null},r.value=N.id,i.value=!0,c.value=V,!0}function d(){i.value=!1,c.value=!1,r.value=null,a=null}function f(V){const N=a;if(!N||V.options.locked||V.id===r.value)return!1;const p=V.options,S=V.printElementType.type;return N.text&&vt.has(S)&&Object.assign(p,N.text),p.backgroundColor=N.backgroundColor,N.border&&h.acceptsElementBorder(S)&&(p.borderWidth=N.border.borderWidth,p.borderStyle=N.border.borderStyle,p.borderColor=N.border.borderColor,p.borders=u(N.border.borders)),!0}e.watch(o,()=>{if(!i.value||!a)return;const V=s.value;if(!V.length){d();return}let N=!1;V.forEach(p=>{N=f(p)||N}),N&&(n(),c.value||d())});function z(V){if(V.key!=="Escape"||!i.value)return;const N=V.target?.tagName;N==="INPUT"||N==="TEXTAREA"||N==="SELECT"||d()}return document.addEventListener("keydown",z),e.onScopeDispose(()=>document.removeEventListener("keydown",z)),{active:i,locked:c,sourceId:r,capturable:m,capture:g,cancel:d}}let St=0;function no(){return St+=1,`guide-${St}`}function lo(t,l){const o=e.computed(()=>t.value.guides??[]);function n(s){t.value={...t.value,guides:s([...t.value.guides??[]])},l()}function i(s,m){n(u=>(u.push({type:s,position:m,id:no()}),u))}function c(s,m){n(u=>u.map(g=>g.id===s?{...g,position:m}:g))}function r(s){n(m=>m.filter(u=>u.id!==s))}function a(){const s=[],m=[];for(const u of o.value)u.type==="vertical"?s.push(u.position):m.push(u.position);return{vertical:s,horizontal:m}}return{guides:o,addGuide:i,moveGuide:c,removeGuide:r,getGuidePositions:a}}const He=Symbol("table-edit"),ft=Symbol("print-upload-image"),gt=Symbol("print-upload-design-background"),ht=Symbol("print-font-catalog"),ao=e.computed(()=>[]);function io(t){return{catalog:e.computed(()=>{const o=[],n=new Set;for(const i of e.toValue(t)??[]){const c=i?.family?.trim();if(!c)continue;const r=c.toLowerCase();if(n.has(r))continue;n.add(r);const a=i.label?.trim();o.push(a?{family:c,label:a}:{family:c})}return o})}}function ro(){return e.inject(ht,ao)}function xt(t,l){const o=l?.trim().toLowerCase();if(o)return t.find(n=>n.family.trim().toLowerCase()===o)}function Bt(t){return t.label?`${t.label}(${t.family})`:t.family}function Fe(t){return t.toLowerCase().replace(/\s+/g,"")}function $t(t,l){if(t===l)return 0;if(t.startsWith(l))return 1;if(t.includes(l))return 2;let o=0;for(const n of t)if(n===l[o]&&o++,o===l.length)return 3;return-1}function so(t,l){const o=Fe(l.trim());return o?t.map((n,i)=>({font:n,index:i,rank:co(n,o)})).filter(n=>n.rank>=0).sort((n,i)=>n.rank-i.rank||n.index-i.index).map(n=>n.font):[...t]}function co(t,l){const o=$t(Fe(t.family),l);if(!t.label)return o;const n=$t(Fe(t.label),l);return o<0?n:n<0?o:Math.min(o,n)}const uo="print-designer-font-face";function mo(t){const l=`${uo}-${e.useId()}`;let o;e.watchEffect(()=>{const n=e.toValue(t);if(!n){o?.remove(),o=void 0;return}o||(o=document.createElement("style"),o.id=l,document.head.appendChild(o)),o.textContent=n}),e.onUnmounted(()=>{o?.remove(),o=void 0})}const po=e.defineComponent({__name:"HelpButton",emits:["click"],setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:o[0]||(o[0]=n=>l.$emit("click"))},[...o[1]||(o[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),pe=(t,l)=>{const o=t.__vccOpts||t;for(const[n,i]of l)o[n]=i;return o},vo=pe(po,[["__scopeId","data-v-80ccab03"]]),fo=["disabled","data-test","data-tip"],go=e.defineComponent({__name:"ToolbarDropdown",props:{disabled:{type:Boolean,default:!1},testId:{default:"dd-trigger"},tip:{},panelClass:{},keepMounted:{type:Boolean,default:!1}},setup(t){const l=t,o=e.ref(!1),n=e.ref(null);function i(c){o.value&&(n.value?.contains(c.target)||(o.value=!1))}return e.watch(()=>l.disabled,c=>{c&&(o.value=!1)}),e.onMounted(()=>document.addEventListener("pointerdown",i)),e.onUnmounted(()=>document.removeEventListener("pointerdown",i)),(c,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapRef",ref:n,class:"tb-dd"},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["tb-dd-trigger",{on:o.value}]),disabled:t.disabled,"data-test":t.testId,"data-tip":t.tip,onClick:r[0]||(r[0]=a=>o.value=!o.value)},[e.renderSlot(c.$slots,"trigger",{},void 0,!0),e.createVNode(e.unref(ue.ChevronDown),{size:12,class:e.normalizeClass(["tb-dd-arrow",{up:o.value}])},null,8,["class"])],10,fo),t.keepMounted||o.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tb-dd-panel",[t.panelClass,{"is-hidden":t.keepMounted&&!o.value}]])},[e.renderSlot(c.$slots,"default",{},void 0,!0)],2)):e.createCommentVNode("",!0)],512))}}),Oe=pe(go,[["__scopeId","data-v-e5f0ee73"]]);function ho(t){return`tb-more-slot-${t}`}const bt=Symbol("worm-print-toolbar-overflow"),ct=2,bo=74;function Eo(){const t=e.shallowRef(null),l=new Map,o=e.reactive(new Map),n=new Map;let i=0;const c=e.ref(new Set),r=e.ref(!1),a=e.computed(()=>[...o.values()].sort((O,oe)=>O.order-oe.order)),s=e.computed(()=>c.value.size>0);function m(){for(const[O,oe]of l){const ee=oe.offsetWidth;ee>0&&n.set(O,ee)}}function u(O){const oe=getComputedStyle(O),ee=Number.parseFloat(oe.gap)||ct,Z=Number.parseFloat(oe.paddingLeft)||0,y=Number.parseFloat(oe.paddingRight)||0;let U=0;for(const Y of Array.from(O.children)){if(Y.hasAttribute("data-overflow-more")||Y.hasAttribute("data-overflow-spacer"))continue;const q=Math.max(Y.offsetWidth,Y.scrollWidth);q<=0||(U+=q+ee)}return{available:O.clientWidth-Z-y,natural:U}}function g(){const O=t.value;if(!O)return;const{available:oe,natural:ee}=u(O),Z=c.value.size>0;Z||(i=ee,m());const y=a.value.map(E=>({id:E.id,order:E.order,width:n.get(E.id)??0})),U=y.reduce((E,T)=>E-T.width-ct,i),Y=h.resolveToolbarOverflow({available:oe,pinned:U,moreTriggerWidth:bo,gap:ct,units:y});Y.movedIds.length===c.value.size&&Y.movedIds.every(E=>c.value.has(E))||(c.value=new Set(Y.movedIds)),r.value=Y.overflowRemains,Z&&c.value.size===0&&e.nextTick(g)}let d=null;function f(O){O!==t.value&&(d?.disconnect(),t.value=O,O&&typeof ResizeObserver<"u"&&(d=new ResizeObserver(()=>g()),d.observe(O)),e.nextTick(g))}function z(O,oe){o.set(O.id,O),l.set(O.id,oe),e.nextTick(g)}function V(O){l.delete(O),o.delete(O),n.delete(O),e.nextTick(g)}const N=document.createElement("div");function p(O){return c.value.has(O)}function S(O){return c.value,t.value?.querySelector(`[data-overflow-slot="${O}"]`)??N}return e.onUnmounted(()=>d?.disconnect()),{attachRoot:f,registerUnit:z,unregisterUnit:V,refresh:g,movedIds:c,overflowRemains:r,hasMoved:s,chain:a,moved:p,slotEl:S}}function Ut(){const t=Eo();return e.provide(bt,t),t}function Et(){return e.inject(bt,null)}function Ft(){const t=e.ref(new Set),l=document.createElement("div");return{attachRoot:()=>{},registerUnit:()=>{},unregisterUnit:()=>{},refresh:()=>{},movedIds:t,overflowRemains:e.ref(!1),hasMoved:e.computed(()=>!1),chain:e.computed(()=>[]),moved:()=>!1,slotEl:()=>l}}function yt(t){return{mounted(l,o){l.dataset.unit=o.value.id,t.registerUnit(o.value,l)},unmounted(l,o){t.unregisterUnit(o.value.id)}}}const yo={key:0,class:"tb-group tb-more-group","data-overflow-more":""},ko={class:"tb-menu tb-more-menu"},Vo=["data-unit"],No={class:"tb-menu-label"},wo=["id","data-overflow-slot","data-unit"],Co=e.defineComponent({__name:"ToolbarMore",setup(t){const l=Et(),o=e.computed(()=>!!l&&l.hasMoved.value),n=e.computed(()=>l?.chain.value??[]),i=e.computed(()=>l?.movedIds.value??new Set);return(c,r)=>e.unref(l)?e.withDirectives((e.openBlock(),e.createElementBlock("div",yo,[e.createVNode(Oe,{"test-id":"more-dd",tip:"更多","keep-mounted":"","panel-class":"tb-more-panel"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Ellipsis),{size:15}),r[0]||(r[0]=e.createElementVNode("span",{class:"tb-btn-text"},"更多",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",ko,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,a=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:a.id,class:"tb-more-item","data-unit":a.id},[e.createElementVNode("div",No,e.toDisplayString(a.label),1),e.createElementVNode("div",{id:e.unref(ho)(a.id),class:"tb-more-slot","data-overflow-slot":a.id,"data-unit":a.id},null,8,wo)],8,Vo)),[[e.vShow,i.value.has(a.id)]])),128))])]),_:1})],512)),[[e.vShow,o.value]]):e.createCommentVNode("",!0)}}),So=pe(Co,[["__scopeId","data-v-5d13dbea"]]),xo={class:"tb-group tb-brand"},Bo={class:"tb-title"},$o={class:"tb-title-name"},Do={class:"tb-group"},To=["disabled"],Mo=["disabled"],zo={class:"tb-ou tb-group"},Ao={class:"tb-menu","data-test":"arrange-panel"},Po={class:"tb-menu-grid"},Ro=["disabled"],Lo=["disabled"],Io=["disabled"],Uo=["disabled"],Fo=["disabled"],Oo=["disabled"],Ho=["disabled"],Wo=["disabled"],Go={class:"tb-menu-grid"},qo=["disabled"],Ko=["disabled"],jo=["disabled"],Yo=["disabled"],Xo={class:"tb-menu-grid"},Zo=["disabled"],Jo=["disabled"],Qo={class:"tb-menu tb-menu-rows","data-test":"view-panel"},_o={class:"tb-ou tb-group"},en={class:"tb-zoom"},tn={class:"tb-ou tb-group"},on=["disabled","data-tip"],nn=["disabled","data-tip"],ln=["disabled","data-tip"],an={key:0,class:"tb-group"},rn={class:"tb-group"},sn=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},showHelp:{type:Boolean,default:!0},clipboardDisabled:{type:Boolean,default:!0},hasClipboard:{type:Boolean,default:!1}},{scale:{default:100},scaleModifiers:{}}),emits:e.mergeModels(["preview","save","undo","redo","align","move-layer","toggle-ruler","toggle-grid","toggle-snap","toggle-table-ghost-border","group","ungroup","fit-window","zoom","help","copy","paste","delete"],["update:scale"]),setup(t){const l=Ut(),o=yt(l),n=e.ref(null);e.onMounted(()=>l.attachRoot(n.value));const i=e.useModel(t,"scale"),c=t,r=e.computed(()=>c.clipboardDisabled?"粘贴 (Ctrl+V),需选中元素":c.hasClipboard?"粘贴 (Ctrl+V)":"粘贴 (Ctrl+V),剪贴板为空");return(a,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:e.normalizeClass(["designer-toolbar",{"is-tight":e.unref(l).overflowRemains.value}])},[e.createElementVNode("div",xo,[s[30]||(s[30]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-b50decc4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-b50decc4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-b50decc4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-b50decc4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-b50decc4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-b50decc4></line></svg></span>',1)),e.createElementVNode("div",Bo,[e.createElementVNode("span",$o,e.toDisplayString(t.isEdit?"编辑模板":"新建模板"),1),s[29]||(s[29]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",Do,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canUndo,onClick:s[0]||(s[0]=m=>a.$emit("undo")),"data-tip":"撤销"},[e.createVNode(e.unref(ue.Undo2),{size:15})],8,To),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canRedo,onClick:s[1]||(s[1]=m=>a.$emit("redo")),"data-tip":"重做"},[e.createVNode(e.unref(ue.Redo2),{size:15})],8,Mo)]),e.renderSlot(a.$slots,"default",{},void 0,!0),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("arrange-view"),disabled:!e.unref(l).moved("arrange-view")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",zo,[e.createVNode(Oe,{"test-id":"arrange-dd",tip:"排列"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Layers),{size:15}),s[31]||(s[31]=e.createElementVNode("span",{class:"tb-btn-text"},"排列",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Ao,[s[32]||(s[32]=e.createElementVNode("div",{class:"tb-menu-label"},"对齐 / 分布",-1)),e.createElementVNode("div",Po,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[2]||(s[2]=m=>a.$emit("align","left")),"data-tip":"左对齐"},[e.createVNode(e.unref(ue.AlignStartVertical),{size:15})],8,Ro),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[3]||(s[3]=m=>a.$emit("align","right")),"data-tip":"右对齐"},[e.createVNode(e.unref(ue.AlignEndVertical),{size:15})],8,Lo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[4]||(s[4]=m=>a.$emit("align","top")),"data-tip":"顶对齐"},[e.createVNode(e.unref(ue.AlignStartHorizontal),{size:15})],8,Io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[5]||(s[5]=m=>a.$emit("align","bottom")),"data-tip":"底对齐"},[e.createVNode(e.unref(ue.AlignEndHorizontal),{size:15})],8,Uo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[6]||(s[6]=m=>a.$emit("align","vertical")),"data-tip":"水平居中"},[e.createVNode(e.unref(ue.AlignCenterVertical),{size:15})],8,Fo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[7]||(s[7]=m=>a.$emit("align","horizontal")),"data-tip":"垂直居中"},[e.createVNode(e.unref(ue.AlignCenterHorizontal),{size:15})],8,Oo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[8]||(s[8]=m=>a.$emit("align","distributeHor")),"data-tip":"水平分布"},[e.createVNode(e.unref(ue.AlignHorizontalSpaceBetween),{size:15})],8,Ho),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[9]||(s[9]=m=>a.$emit("align","distributeVer")),"data-tip":"垂直分布"},[e.createVNode(e.unref(ue.AlignVerticalSpaceBetween),{size:15})],8,Wo)]),s[33]||(s[33]=e.createElementVNode("div",{class:"tb-menu-label"},"层级",-1)),e.createElementVNode("div",Go,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[10]||(s[10]=m=>a.$emit("move-layer","top")),"data-tip":"置顶"},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:15})],8,qo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[11]||(s[11]=m=>a.$emit("move-layer","up")),"data-tip":"上移一层"},[e.createVNode(e.unref(ue.ArrowUp),{size:15})],8,Ko),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[12]||(s[12]=m=>a.$emit("move-layer","down")),"data-tip":"下移一层"},[e.createVNode(e.unref(ue.ArrowDown),{size:15})],8,jo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[13]||(s[13]=m=>a.$emit("move-layer","bottom")),"data-tip":"置底"},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:15})],8,Yo)]),s[34]||(s[34]=e.createElementVNode("div",{class:"tb-menu-label"},"组合",-1)),e.createElementVNode("div",Xo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[14]||(s[14]=m=>a.$emit("group")),"data-tip":"组合 (Ctrl+G)"},[e.createVNode(e.unref(ue.Group),{size:15})],8,Zo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.selectedElementHasGroup,onClick:s[15]||(s[15]=m=>a.$emit("ungroup")),"data-tip":"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ue.Ungroup),{size:15})],8,Jo)])])]),_:1}),e.createVNode(Oe,{"test-id":"view-dd",tip:"视图"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Eye),{size:15}),s[35]||(s[35]=e.createElementVNode("span",{class:"tb-btn-text"},"视图",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Qo,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:s[16]||(s[16]=m=>a.$emit("toggle-ruler"))},[...s[36]||(s[36]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:s[17]||(s[17]=m=>a.$emit("toggle-grid"))},[...s[37]||(s[37]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:s[18]||(s[18]=m=>a.$emit("toggle-table-ghost-border"))},[...s[38]||(s[38]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:s[19]||(s[19]=m=>a.$emit("toggle-snap"))},[...s[39]||(s[39]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2)])]),_:1})])),[[e.unref(o),{id:"arrange-view",order:4,label:"排列 / 视图"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("zoom"),disabled:!e.unref(l).moved("zoom")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",_o,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[20]||(s[20]=m=>a.$emit("fit-window")),"data-tip":"适应窗口"},[e.createVNode(e.unref(ue.Maximize),{size:15})]),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[21]||(s[21]=m=>a.$emit("zoom",-10)),"data-tip":"缩小"},[e.createVNode(e.unref(ue.ZoomOut),{size:15})]),e.createElementVNode("span",en,e.toDisplayString(i.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[22]||(s[22]=m=>a.$emit("zoom",10)),"data-tip":"放大"},[e.createVNode(e.unref(ue.ZoomIn),{size:15})])])),[[e.unref(o),{id:"zoom",order:3,label:"缩放"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("clipboard"),disabled:!e.unref(l).moved("clipboard")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",tn,[e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"copy",disabled:t.clipboardDisabled,onClick:s[23]||(s[23]=m=>a.$emit("copy")),"data-tip":t.clipboardDisabled?"复制 (Ctrl+C),需选中元素":"复制 (Ctrl+C)"},[e.createVNode(e.unref(ue.Copy),{size:15})],8,on),e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"paste",disabled:t.clipboardDisabled||!t.hasClipboard,onClick:s[24]||(s[24]=m=>a.$emit("paste")),"data-tip":r.value},[e.createVNode(e.unref(ue.ClipboardPaste),{size:15})],8,nn),e.createElementVNode("button",{class:"tb-btn tb-icon danger","data-test":"delete",disabled:t.clipboardDisabled,onClick:s[25]||(s[25]=m=>a.$emit("delete")),"data-tip":t.clipboardDisabled?"删除 (Delete),需选中元素":"删除 (Delete)"},[e.createVNode(e.unref(ue.Trash2),{size:15})],8,ln)])),[[e.unref(o),{id:"clipboard",order:1,label:"剪贴板"}]])],8,["to","disabled"])),e.createVNode(So),s[40]||(s[40]=e.createElementVNode("div",{class:"tb-spacer","data-overflow-spacer":""},null,-1)),t.showHelp?(e.openBlock(),e.createElementBlock("div",an,[e.createVNode(vo,{onClick:s[26]||(s[26]=m=>a.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",rn,[e.createElementVNode("button",{class:"btn-secondary","data-tip":"预览模板打印效果",onClick:s[27]||(s[27]=m=>a.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary","data-tip":"保存模板",onClick:s[28]||(s[28]=m=>a.$emit("save"))},"保存")])],2))}}),dn=pe(sn,[["__scopeId","data-v-b50decc4"]]),cn={class:"font-select"},un=["placeholder","disabled","aria-expanded","aria-activedescendant","onKeydown"],mn=["id","aria-selected","onMousedown"],pn=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(t,{emit:l}){const o=t,n=l,i=ro(),c=`font-select-list-${e.useId()}`,r=e.ref(null),a=e.ref(null),s=e.ref("down"),m=e.ref(N(o.modelValue)),u=e.ref(""),g=e.ref(!1),d=e.ref(-1),f=e.computed(()=>{const b=o.modelValue?.trim();return b?xt(i.value,b)?"":b:""}),z=e.computed(()=>{const b=(o.modelValue??"").trim(),$=(J,P,X,re)=>({kind:J,key:P,label:X,value:re,selected:(re??"")===b}),M=u.value.trim();if(!M){const J=[$("clear","__clear__",o.placeholder)];f.value&&J.push($("unknown","__unknown__",`${f.value}(未知)`,f.value));for(const P of i.value)J.push($("font",P.family,Bt(P),P.family));return J}const L=so(i.value,M).map(J=>$("font",J.family,Bt(J),J.family));if(!L.length){const J=V(M);L.push($("free","__free__",`使用「${J}」`,J))}return L});function V(b){const $=Fe(b);return i.value.find(L=>L.label&&Fe(L.label)===$)?.family??b}function N(b){const $=b?.trim();return $?xt(i.value,$)?.label??$:""}const p=e.computed(()=>g.value&&d.value>=0?`${c}-${d.value}`:void 0);function S(){const b=(o.modelValue??"").trim();return z.value.findIndex($=>($.value??"")===b)}function O(){g.value||(g.value=!0,u.value="",d.value=S())}function oe(){g.value=!0}function ee(){g.value=!0,u.value=m.value,d.value=z.value.length?0:-1}function Z(b){if(!g.value){O();return}const $=z.value.length-1;$<0||(d.value=Math.min(Math.max(d.value+b,0),$),y())}function y(){e.nextTick(()=>{r.value?.children[d.value]?.scrollIntoView?.({block:"nearest"})})}function U(b){const $=window.innerHeight;for(let M=b.parentElement;M&&M!==document.body;M=M.parentElement){const L=getComputedStyle(M).overflowY;if(L==="auto"||L==="scroll"||L==="hidden"||L==="clip"){const J=M.getBoundingClientRect();return{top:Math.max(0,J.top),bottom:Math.min($,J.bottom)}}}return{top:0,bottom:$}}async function Y(){await e.nextTick();const b=a.value,$=r.value;if(!b||!$)return;const M=b.getBoundingClientRect(),L=U(b);s.value=h.resolveOverlayPlacement({triggerTop:M.top,triggerBottom:M.bottom,overlayHeight:$.getBoundingClientRect().height,boundaryTop:L.top,boundaryBottom:L.bottom})}e.watch([g,()=>z.value.length],()=>{g.value&&Y()});function q(){if(!g.value)return;const b=z.value[d.value];if(b){E(b);return}const $=u.value.trim();if($){const M=V($);E({value:M})}}function E(b){m.value=N(b.value),u.value="",g.value=!1,d.value=-1,n("update:model-value",b.value)}function T(){g.value=!1,u.value="",d.value=-1,m.value=N(o.modelValue)}return e.watch(()=>o.modelValue,b=>{m.value=N(b)}),(b,$)=>(e.openBlock(),e.createElementBlock("div",cn,[e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:a,"onUpdate:modelValue":$[0]||($[0]=M=>m.value=M),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:t.placeholder,disabled:t.disabled,"aria-expanded":g.value,"aria-controls":c,"aria-activedescendant":p.value,onFocus:O,onClick:oe,onInput:ee,onKeydown:[$[1]||($[1]=e.withKeys(e.withModifiers(M=>Z(1),["prevent"]),["down"])),$[2]||($[2]=e.withKeys(e.withModifiers(M=>Z(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(q,["prevent"]),["enter"]),e.withKeys(e.withModifiers(T,["prevent"]),["esc"])],onBlur:T},null,40,un),[[e.vModelText,m.value]]),g.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:c,ref_key:"listRef",ref:r,class:e.normalizeClass(["font-select-list",{"is-up":s.value==="up"}]),role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,(M,L)=>(e.openBlock(),e.createElementBlock("li",{id:`${c}-${L}`,key:M.key,class:e.normalizeClass(["font-select-option",{"is-active":L===d.value,"is-muted":M.kind==="unknown"||M.kind==="free"}]),role:"option","aria-selected":M.selected,onMousedown:e.withModifiers(J=>E(M),["prevent"])},e.toDisplayString(M.label),43,mn))),128))],2)):e.createCommentVNode("",!0)]))}}),kt=pe(pn,[["__scopeId","data-v-68640be3"]]),vn={class:"pd-stepper"},fn=["disabled"],gn=["value","placeholder","min","max","step","disabled"],hn=["disabled"],bn=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>{const V=String(o.step),N=V.indexOf(".");return N===-1?0:V.length-N-1});function c(V){return Number.isFinite(V)?Number(V.toFixed(i.value)):0}const r=e.computed(()=>{const V=o.modelValue;if(!(V==null||!Number.isFinite(V)))return c(V)}),a=e.ref(r.value===void 0?"":String(r.value));e.watch(r,V=>{a.value=V===void 0?"":String(V)});const s=e.computed(()=>r.value!==void 0?r.value:o.min!==void 0?o.min:0),m=e.computed(()=>o.min!==void 0&&s.value<=o.min),u=e.computed(()=>o.max!==void 0&&s.value>=o.max);function g(V){let N=c(V);return o.min!==void 0&&N<o.min&&(N=o.min),o.max!==void 0&&N>o.max&&(N=o.max),N}function d(V){if(V<0&&m.value||V>0&&u.value)return;const N=g(s.value+V*o.step);a.value=String(N),n("update:modelValue",N)}function f(V){a.value=V.target.value}function z(){const V=a.value.trim();if(V===""){r.value!==void 0&&(a.value=String(r.value));return}const N=Number(V);if(!Number.isFinite(N)){a.value=r.value===void 0?"":String(r.value);return}const p=g(N);a.value=String(p),p!==r.value&&n("update:modelValue",p)}return(V,N)=>(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:m.value||t.disabled,title:"减小","aria-label":"减小",onClick:N[0]||(N[0]=p=>d(-1))},"−",8,fn),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:a.value,placeholder:t.placeholder,min:t.min,max:t.max,step:t.step,disabled:t.disabled,onInput:f,onChange:z,onBlur:z,onKeydown:N[1]||(N[1]=e.withKeys(e.withModifiers(p=>p.target.blur(),["prevent"]),["enter"]))},null,40,gn),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:u.value||t.disabled,title:"增大","aria-label":"增大",onClick:N[2]||(N[2]=p=>d(1))},"+",8,hn)]))}}),de=pe(bn,[["__scopeId","data-v-627f09cb"]]),En=["aria-expanded","title"],yn={class:"picker-preview"},kn={class:"picker-heading"},Vn=["disabled"],Nn={class:"preset-color-grid"},wn=["title","aria-label","onClick"],Cn=e.defineComponent({inheritAttrs:!1,__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),c=e.ref(),r=e.ref(),a=e.ref(),s=e.ref({}),m=e.ref(0),u=e.ref(0),g=e.ref(0),d=e.ref("#000000"),f=e.ref(!1),z=e.computed(()=>o.modelValue||"#000000"),V=e.computed(()=>o.modelValue?{background:o.modelValue}:{background:"transparent"}),N=e.computed(()=>re(v(m.value,u.value,g.value))),p=e.computed({get:()=>Math.round(m.value),set:G=>Z(x(G),u.value,g.value)});e.watch(()=>o.modelValue,G=>{if(!G){d.value="";return}ee(G)},{immediate:!0});function S(G){d.value=G.toUpperCase(),ee(G),n("update:modelValue",G)}function O(){o.clearable&&n("update:modelValue","")}function oe(G){const D=G.target.value.trim();if(!D){o.clearable&&n("update:modelValue","");return}P(D)&&(ee(D),n("update:modelValue",X(D)))}function ee(G){const C=P(G);if(!C)return;const D=le(C.r,C.g,C.b);m.value=D.h,u.value=D.s,g.value=D.v,d.value=X(G).toUpperCase()}function Z(G,C,D){m.value=x(G),u.value=K(C),g.value=K(D),d.value=N.value.toUpperCase(),n("update:modelValue",N.value)}function y(G){G.currentTarget.setPointerCapture(G.pointerId),f.value=!0,q(G)}function U(G){f.value&&q(G)}function Y(G){f.value=!1;const C=G.currentTarget;C.hasPointerCapture(G.pointerId)&&C.releasePointerCapture(G.pointerId)}function q(G){const C=a.value;if(!C)return;const D=C.getBoundingClientRect(),j=K((G.clientX-D.left)/D.width),_=K(1-(G.clientY-D.top)/D.height);Z(m.value,j,_)}function E(G){const C=G.shiftKey?.1:.02;let D=!0;G.key==="ArrowLeft"?Z(m.value,u.value-C,g.value):G.key==="ArrowRight"?Z(m.value,u.value+C,g.value):G.key==="ArrowUp"?Z(m.value,u.value,g.value+C):G.key==="ArrowDown"?Z(m.value,u.value,g.value-C):D=!1,D&&G.preventDefault()}function T(){i.value?$():b()}async function b(){const G=c.value;if(!G)return;o.modelValue&&ee(z.value),i.value=!0,await e.nextTick();const C=G.getBoundingClientRect(),D=190,j=r.value?.offsetHeight??216,_=8,ae=Math.min(C.left,window.innerWidth-D-_),ge=C.bottom+6,A=ge+j>window.innerHeight-_?Math.max(_,C.top-j-6):ge;s.value={left:`${Math.max(_,ae)}px`,top:`${A}px`}}function $(){i.value=!1}function M(G){const C=G.target;c.value?.contains(C)||r.value?.contains(C)||$()}function L(){i.value&&$()}function J(G){G.key==="Escape"&&i.value&&$()}function P(G){const C=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(G.trim());if(!C)return null;const D=C[1],j=D.length===3?D.split("").map(_=>_+_).join(""):D;return{r:Number.parseInt(j.slice(0,2),16),g:Number.parseInt(j.slice(2,4),16),b:Number.parseInt(j.slice(4,6),16)}}function X(G){const C=P(G);return C?re(C):"#000000"}function re({r:G,g:C,b:D}){return`#${[G,C,D].map(j=>Math.round(K(j/255)*255).toString(16).padStart(2,"0")).join("")}`}function le(G,C,D){const j=G/255,_=C/255,ae=D/255,ge=Math.max(j,_,ae),A=Math.min(j,_,ae),B=ge-A;let F=0;return B!==0&&(ge===j?F=(_-ae)/B%6:ge===_?F=(ae-j)/B+2:F=(j-_)/B+4,F*=60,F<0&&(F+=360)),{h:F,s:ge===0?0:B/ge,v:ge}}function v(G,C,D){const j=D*C,_=(G%360+360)%360/60,ae=j*(1-Math.abs(_%2-1)),[ge,A,B]=_<1?[j,ae,0]:_<2?[ae,j,0]:_<3?[0,j,ae]:_<4?[0,ae,j]:_<5?[ae,0,j]:[j,0,ae],F=D-j;return{r:(ge+F)*255,g:(A+F)*255,b:(B+F)*255}}function x(G){return((Number.isFinite(G)?G:0)%360+360)%360}function K(G){return Math.min(1,Math.max(0,Number.isFinite(G)?G:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",M,!0),window.addEventListener("scroll",L,!0),window.addEventListener("resize",L),document.addEventListener("keydown",J)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",M,!0),window.removeEventListener("scroll",L,!0),window.removeEventListener("resize",L),document.removeEventListener("keydown",J)}),(G,C)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",e.mergeProps({ref_key:"triggerRef",ref:c},G.$attrs,{type:"button",class:"preset-color-trigger","aria-expanded":i.value,"aria-haspopup":"dialog",title:t.modelValue||"自动",onClick:T}),[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(V.value)},null,4)],16,En),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:r,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(s.value),onPointerdown:C[2]||(C[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",yn,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!t.modelValue}]),style:e.normalizeStyle(t.modelValue?{background:N.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[0]||(C[0]=D=>d.value=D),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:oe},null,544),[[e.vModelText,d.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:a,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(m.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:y,onPointermove:U,onPointerup:Y,onPointercancel:Y,onKeydown:E},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${u.value*100}%`,top:`${(1-g.value)*100}%`,background:N.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[1]||(C[1]=D=>p.value=D),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",kn,[C[4]||(C[4]=e.createElementVNode("span",null,"常用颜色",-1)),t.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!t.modelValue,title:"清除选中的颜色",onClick:O},[...C[3]||(C[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,Vn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Nn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.PRESET_COLORS),D=>(e.openBlock(),e.createElementBlock("button",{key:D,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!t.modelValue&&D.toLowerCase()===t.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:D}),title:D,"aria-label":D,onClick:j=>S(D)},null,14,wn))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),Ne=pe(Cn,[["__scopeId","data-v-4ff2cd97"]]),Sn={class:"format-toolbar"},xn={class:"tb-ou ft-group"},Bn=["disabled","data-tip"],$n={class:"tb-ou ft-group"},Dn={class:"ft-font"},Tn={class:"ft-size","data-test":"font-size"},Mn={class:"tb-ou ft-group"},zn=["disabled","data-tip"],An=["disabled","data-tip"],Pn=["disabled","data-tip"],Rn={class:"tb-ou ft-group"},Ln=["title"],In={class:"ft-glyph"},Un={class:"tb-ou ft-group"},Fn={class:"ft-align-panel","data-test":"align-panel"},On={class:"ft-align-row"},Hn={class:"ft-align-row"},Wn={class:"tb-ou ft-group"},Gn={class:"ft-border-panel","data-test":"border-panel"},qn={class:"ft-border-grid"},Kn=["disabled","data-tip"],jn={class:"ft-style-row"},Yn=["data-test","data-tip","onClick"],Xn={class:"ft-border-style-row"},Zn={class:"ft-line-width"},Jn={class:"ft-border-style-row"},Qn=e.defineComponent({__name:"FormatToolbar",props:{format:{},painter:{}},setup(t){const l=Et()??Ft(),o=yt(l),n=t,i=e.computed(()=>n.format.values.value),c=e.computed(()=>!n.format.fontEditable.value),r=e.computed(()=>c.value||n.format.context.value==="cells"),a=e.computed(()=>n.format.context.value==="none"),s=e.computed(()=>n.painter?.active.value===!0),m=e.computed(()=>!n.painter||!s.value&&(n.format.context.value==="none"||n.format.context.value==="cells"||!n.painter.capturable.value)),u=e.computed(()=>s.value?"退出格式刷(Esc)":n.painter?n.format.context.value==="cells"?"格式刷(表格单元格暂不支持)":n.format.context.value==="none"?"格式刷(需选中元素)":n.painter.capturable.value?"格式刷:单击刷一次,双击连续刷":"格式刷(请仅选中一个源元素)":"格式刷");function g(){const J=n.painter;if(J){if(J.active.value){J.cancel();return}J.capture(!1)}}function d(){n.painter?.capture(!0)}const f=e.computed(()=>i.value.fontFamily===Ce?void 0:i.value.fontFamily),z=e.computed(()=>i.value.fontFamily===Ce?"混合":"默认"),V=e.computed(()=>i.value.fontSize===Ce?void 0:i.value.fontSize),N=e.computed(()=>i.value.fontSize===Ce?"混合":"默认"),p=e.computed(()=>i.value.bold===!0),S=e.computed(()=>i.value.color===Ce?void 0:i.value.color),O=e.computed(()=>i.value.backgroundColor===Ce?void 0:i.value.backgroundColor),oe=e.computed(()=>i.value.textAlign==="center"?ue.TextAlignCenter:i.value.textAlign==="right"?ue.TextAlignEnd:i.value.textAlign==="justify"?ue.TextAlignJustify:ue.TextAlignStart),ee=e.computed(()=>c.value?"对齐(需选中文本元素或单元格)":"对齐"),Z=e.computed(()=>a.value?"边框(需选中元素)":"边框");function y(J){return c.value?`${J}(需选中文本元素)`:n.format.context.value==="cells"?`${J}(单元格不支持)`:J}const U=e.ref("solid"),Y=e.ref(.75),q=e.ref("#333333"),E=e.computed(()=>n.format.context.value==="cells"),T=[{key:"solid",label:"实线",preview:"2px solid currentColor"},{key:"dashed",label:"虚线",preview:"2px dashed currentColor"},{key:"dotted",label:"点线",preview:"2px dotted currentColor"},{key:"double",label:"双线",preview:"3px double currentColor"}];function b(){return{width:Y.value,style:U.value,color:q.value}}function $(J){E.value?n.format.applyCellBorderPreset(J,b()):n.format.applyElementBorder(J==="none"?"none":"all",b())}function M(J){return(E.value?n.format.cellEdges.value:n.format.elementEdges.value)?.[J]===!0}function L(J){E.value?n.format.toggleCellEdge(J,b()):n.format.toggleElementEdge(J,b())}return(J,P)=>(e.openBlock(),e.createElementBlock("div",Sn,[(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("painter"),disabled:!e.unref(l).moved("painter")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",xn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:s.value}]),"data-test":"format-painter",disabled:m.value,"data-tip":u.value,onClick:g,onDblclick:d},[e.createVNode(e.unref(ue.Paintbrush),{size:15})],42,Bn)])),[[e.unref(o),{id:"painter",order:2,label:"格式刷"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("font"),disabled:!e.unref(l).moved("font")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",$n,[e.createElementVNode("div",Dn,[e.createVNode(kt,{"model-value":f.value,placeholder:z.value,disabled:c.value,"onUpdate:modelValue":P[0]||(P[0]=X=>t.format.applyStyle({fontFamily:X}))},null,8,["model-value","placeholder","disabled"])]),e.createElementVNode("div",Tn,[e.createVNode(de,{"model-value":V.value,min:5,max:72,placeholder:N.value,disabled:c.value,"onUpdate:modelValue":P[1]||(P[1]=X=>t.format.applyStyle({fontSize:X}))},null,8,["model-value","placeholder","disabled"])])])),[[e.unref(o),{id:"font",order:9,label:"字体与字号"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("style"),disabled:!e.unref(l).moved("style")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Mn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:p.value}]),"data-test":"bold",disabled:c.value,"data-tip":c.value?"加粗(需选中文本元素或单元格)":"加粗",onClick:P[2]||(P[2]=X=>t.format.toggleBold())},[e.createVNode(e.unref(ue.Bold),{size:15})],10,zn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.underline===!0}]),"data-test":"underline",disabled:r.value,"data-tip":y("下划线"),onClick:P[3]||(P[3]=X=>t.format.toggleUnderline())},[e.createVNode(e.unref(ue.Underline),{size:15})],10,An),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.strike===!0}]),"data-test":"strike",disabled:r.value,"data-tip":y("删除线"),onClick:P[4]||(P[4]=X=>t.format.toggleStrike())},[e.createVNode(e.unref(ue.Strikethrough),{size:15})],10,Pn)])),[[e.unref(o),{id:"style",order:8,label:"文字样式"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("color"),disabled:!e.unref(l).moved("color")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Rn,[e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:c.value}]),title:`字体颜色${c.value?"(需选中或混选文本元素)":""}`},[e.createVNode(Ne,{"model-value":S.value,"onUpdate:modelValue":P[5]||(P[5]=X=>t.format.applyStyle({color:X}))},null,8,["model-value"]),P[24]||(P[24]=e.createElementVNode("span",{class:"ft-glyph"},"A",-1))],10,Ln),e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:a.value}]),title:"背景色"},[e.createVNode(Ne,{"model-value":O.value,"onUpdate:modelValue":P[6]||(P[6]=X=>t.format.applyStyle({backgroundColor:X}))},null,8,["model-value"]),e.createElementVNode("span",In,[e.createVNode(e.unref(ue.PaintBucket),{size:14})])],2)])),[[e.unref(o),{id:"color",order:6,label:"颜色"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("align"),disabled:!e.unref(l).moved("align")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Un,[e.createVNode(Oe,{"test-id":"align-dd",tip:ee.value,disabled:c.value},{trigger:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(oe.value),{size:15})),P[25]||(P[25]=e.createElementVNode("span",{class:"ft-btn-text"},"对齐",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Fn,[e.createElementVNode("div",On,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="left"}]),"data-test":"align-left","data-tip":"左对齐",onClick:P[7]||(P[7]=X=>t.format.applyStyle({textAlign:"left"}))},[e.createVNode(e.unref(ue.TextAlignStart),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="center"}]),"data-test":"align-center","data-tip":"水平居中",onClick:P[8]||(P[8]=X=>t.format.applyStyle({textAlign:"center"}))},[e.createVNode(e.unref(ue.TextAlignCenter),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="right"}]),"data-test":"align-right","data-tip":"右对齐",onClick:P[9]||(P[9]=X=>t.format.applyStyle({textAlign:"right"}))},[e.createVNode(e.unref(ue.TextAlignEnd),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="justify"}]),"data-test":"align-justify","data-tip":"两端对齐(撑满行宽,含末行)",onClick:P[10]||(P[10]=X=>t.format.applyStyle({textAlign:"justify"}))},[e.createVNode(e.unref(ue.TextAlignJustify),{size:15})],2)]),e.createElementVNode("div",Hn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="top"}]),"data-test":"valign-top","data-tip":"顶端对齐",onClick:P[11]||(P[11]=X=>t.format.applyStyle({verticalAlign:"top"}))},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="middle"}]),"data-test":"valign-middle","data-tip":"垂直居中",onClick:P[12]||(P[12]=X=>t.format.applyStyle({verticalAlign:"middle"}))},[e.createVNode(e.unref(ue.ChevronsUpDown),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="bottom"}]),"data-test":"valign-bottom","data-tip":"底端对齐",onClick:P[13]||(P[13]=X=>t.format.applyStyle({verticalAlign:"bottom"}))},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:15})],2)])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"align",order:7,label:"对齐"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("border"),disabled:!e.unref(l).moved("border")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Wn,[e.createVNode(Oe,{"test-id":"border",tip:Z.value,disabled:a.value},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Grid3x3),{size:15}),P[26]||(P[26]=e.createElementVNode("span",{class:"ft-btn-text"},"边框",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Gn,[e.createElementVNode("div",qn,[e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-none","data-tip":"无边框",onClick:P[14]||(P[14]=X=>$("none"))},[...P[27]||(P[27]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"4",y1:"14",x2:"14",y2:"4"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-all","data-tip":"所有边框",onClick:P[15]||(P[15]=X=>$("all"))},[...P[28]||(P[28]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-outer","data-tip":"外侧边框",onClick:P[16]||(P[16]=X=>$("outer"))},[...P[29]||(P[29]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-inner",disabled:!E.value,"data-tip":E.value?"内部边框":"内部边框(仅表格单元格可用)",onClick:P[17]||(P[17]=X=>$("inner"))},[...P[30]||(P[30]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])],8,Kn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("top")}]),"data-test":"edge-top","data-tip":"上边框",onClick:P[18]||(P[18]=X=>L("top"))},[...P[31]||(P[31]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"3",x2:"16",y2:"3"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("bottom")}]),"data-test":"edge-bottom","data-tip":"下边框",onClick:P[19]||(P[19]=X=>L("bottom"))},[...P[32]||(P[32]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"15",x2:"16",y2:"15"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("left")}]),"data-test":"edge-left","data-tip":"左边框",onClick:P[20]||(P[20]=X=>L("left"))},[...P[33]||(P[33]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"2",x2:"3",y2:"16"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("right")}]),"data-test":"edge-right","data-tip":"右边框",onClick:P[21]||(P[21]=X=>L("right"))},[...P[34]||(P[34]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"15",y1:"2",x2:"15",y2:"16"})],-1)])],2)]),e.createElementVNode("div",jn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(T,X=>e.createElementVNode("button",{key:X.key,type:"button",class:e.normalizeClass(["ft-style-btn",{on:U.value===X.key}]),"data-test":`style-${X.key}`,"data-tip":X.label,onClick:re=>U.value=X.key},[e.createElementVNode("span",{class:"ft-style-line",style:e.normalizeStyle({borderTop:X.preview})},null,4)],10,Yn)),64))]),e.createElementVNode("div",Xn,[P[35]||(P[35]=e.createElementVNode("span",{class:"ft-edge-label"},"粗细",-1)),e.createElementVNode("div",Zn,[e.createVNode(de,{modelValue:Y.value,"onUpdate:modelValue":P[22]||(P[22]=X=>Y.value=X),min:.25,max:5,step:.25},null,8,["modelValue"])])]),e.createElementVNode("div",Jn,[P[36]||(P[36]=e.createElementVNode("span",{class:"ft-edge-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:q.value,"onUpdate:modelValue":P[23]||(P[23]=X=>q.value=X),clearable:!1},null,8,["modelValue"])])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"border",order:5,label:"边框"}]])],8,["to","disabled"]))]))}}),_n=pe(Qn,[["__scopeId","data-v-721695e4"]]),el={class:"layer-panel"},tl=["onClick"],ol={class:"layer-icon"},nl={class:"layer-name"},ll={key:0,class:"layer-zone"},al={class:"layer-zindex"},il={key:0,class:"layer-actions"},rl={key:1,class:"layer-actions"},sl=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer","group","ungroup"],setup(t){const l=t,o=e.computed(()=>l.elements.filter(u=>l.selectedIds.has(u.id))),n=e.computed(()=>o.value.length>=2),i=e.computed(()=>o.value.some(u=>!!u.options.groupId)),c=e.computed(()=>[...l.elements].sort((u,g)=>(g.options.zIndex??0)-(u.options.zIndex??0))),r={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function a(u){return r[u.printElementType.type]||"?"}function s(u){return u.options.title||u.printElementType.title||u.printElementType.type}function m(u){return u.zone==="header"?"页眉":u.zone==="footer"?"页脚":""}return(u,g)=>(e.openBlock(),e.createElementBlock("div",el,[g[6]||(g[6]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.id,class:e.normalizeClass(["layer-item",{active:t.selectedIds.has(d.id)}]),onClick:f=>u.$emit("select",d.id,f.ctrlKey||f.metaKey)},[e.createElementVNode("span",ol,e.toDisplayString(a(d)),1),e.createElementVNode("span",nl,e.toDisplayString(s(d)),1),m(d)?(e.openBlock(),e.createElementBlock("span",ll,e.toDisplayString(m(d)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",al,"z:"+e.toDisplayString(d.options.zIndex??0),1)],10,tl))),128)),c.value.length>0?(e.openBlock(),e.createElementBlock("div",il,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[0]||(g[0]=d=>u.$emit("move-layer","top")),title:"置顶"},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[1]||(g[1]=d=>u.$emit("move-layer","up")),title:"上移"},[e.createVNode(e.unref(ue.ArrowUp),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[2]||(g[2]=d=>u.$emit("move-layer","down")),title:"下移"},[e.createVNode(e.unref(ue.ArrowDown),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[3]||(g[3]=d=>u.$emit("move-layer","bottom")),title:"置底"},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:14})])])):e.createCommentVNode("",!0),n.value||i.value?(e.openBlock(),e.createElementBlock("div",rl,[n.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"pd-button small",onClick:g[4]||(g[4]=d=>u.$emit("group")),title:"组合 (Ctrl+G)"},[e.createVNode(e.unref(ue.Group),{size:14})])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"pd-button small",onClick:g[5]||(g[5]=d=>u.$emit("ungroup")),title:"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ue.Ungroup),{size:14})])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),dl=pe(sl,[["__scopeId","data-v-567d273e"]]),cl={class:"field-tree-panel"},ul={class:"tree-container"},ml=["onClick"],pl={class:"expand-icon"},vl={class:"node-icon"},fl=["title"],gl=["title","onDragstart"],hl={class:"node-meta"},bl={class:"node-label"},El={class:"node-key"},yl={key:0,class:"pd-empty"},kl=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(""),c=e.ref(new Set),r=e.computed(()=>!!i.value.trim()),a=e.computed(()=>h.filterGroups(h.groupFields(o.fields),i.value));function s(u){const g=new Set(c.value);g.has(u)?g.delete(u):g.add(u),c.value=g}function m(u,g){u.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:g.fieldKey,fieldLabel:g.fieldLabel})),u.dataTransfer&&(u.dataTransfer.effectAllowed="copy"),n("field-drag",g)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",cl,[g[2]||(g[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=d=>i.value=d),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,i.value]]),e.createElementVNode("div",ul,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.key||"_top"},[d.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":d.isList}]),onClick:f=>s(d.key)},[e.createElementVNode("span",pl,e.toDisplayString(c.value.has(d.key)&&!r.value?"▶":"▼"),1),e.createElementVNode("span",vl,e.toDisplayString(d.isList?"📋":"📁"),1),e.createElementVNode("span",{class:"group-label",title:d.label},e.toDisplayString(d.label),9,fl)],10,ml)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.fields,f=>(e.openBlock(),e.createElementBlock("div",{key:f.fieldKey,class:"field-row",draggable:"true",title:`${f.fieldLabel} (${f.fieldKey})`,style:e.normalizeStyle({paddingLeft:(d.key?22:8)+"px"}),onDragstart:z=>m(z,f)},[g[1]||(g[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",hl,[e.createElementVNode("span",bl,e.toDisplayString(f.fieldLabel),1),e.createElementVNode("span",El,"("+e.toDisplayString(f.fieldKey)+")",1)])],44,gl))),128))],512),[[e.vShow,!d.key||r.value||!c.value.has(d.key)]])],64))),128))]),a.value.length===0?(e.openBlock(),e.createElementBlock("p",yl,"暂无字段")):e.createCommentVNode("",!0)]))}}),Vl=pe(kl,[["__scopeId","data-v-6a0d8392"]]),Nl={key:0,class:"left-collapsed"},wl={class:"left-head"},Cl={class:"pd-tabs left-tabs"},Sl={class:"pd-tab-bar",role:"tablist"},xl={class:"pd-tab-pane",role:"tabpanel"},Bl=["onDragstart"],$l={class:"material-icon"},Dl={class:"material-label"},Tl={class:"pd-tab-pane",role:"tabpanel"},Ml={class:"pd-tab-pane",role:"tabpanel"},zl=e.defineComponent({__name:"LeftPanel",props:{fields:{},elements:{},selectedIds:{},collapsed:{type:Boolean}},emits:["select","move-layer","group","ungroup","toggle-visible","toggle-locked","field-drag","toggle-collapse"],setup(t,{emit:l}){const o=l,n=e.ref("elements"),i=[{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 c(s,m){s.dataTransfer?.setData("elementType",m)}function r(s){o("field-drag",s)}function a(s){n.value=s,o("toggle-collapse")}return(s,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",Nl,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:m[0]||(m[0]=u=>a(n.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="elements"}]),title:"元素",onClick:m[1]||(m[1]=u=>a("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="fields"}]),title:"字段",onClick:m[2]||(m[2]=u=>a("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="layers"}]),title:"图层",onClick:m[3]||(m[3]=u=>a("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",wl,[m[14]||(m[14]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:m[4]||(m[4]=u=>s.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",Cl,[e.createElementVNode("div",Sl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="elements"}]),onClick:m[5]||(m[5]=u=>n.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="fields"}]),onClick:m[6]||(m[6]=u=>n.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="layers"}]),onClick:m[7]||(m[7]=u=>n.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",xl,[m[15]||(m[15]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,u=>e.createElementVNode("div",{key:u.type,class:"material-card",draggable:"true",onDragstart:g=>c(g,u.type)},[e.createElementVNode("span",$l,e.toDisplayString(u.icon),1),e.createElementVNode("span",Dl,e.toDisplayString(u.label),1)],40,Bl)),64))],512),[[e.vShow,n.value==="elements"]]),e.withDirectives(e.createElementVNode("div",Tl,[e.createVNode(Vl,{fields:t.fields,onFieldDrag:r},null,8,["fields"])],512),[[e.vShow,n.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Ml,[e.createVNode(dl,{elements:t.elements,"selected-ids":t.selectedIds,onSelect:m[8]||(m[8]=(u,g)=>s.$emit("select",u,g)),onMoveLayer:m[9]||(m[9]=u=>s.$emit("move-layer",u)),onGroup:m[10]||(m[10]=u=>s.$emit("group")),onUngroup:m[11]||(m[11]=u=>s.$emit("ungroup")),onToggleVisible:m[12]||(m[12]=u=>s.$emit("toggle-visible",u)),onToggleLocked:m[13]||(m[13]=u=>s.$emit("toggle-locked",u))},null,8,["elements","selected-ids"])],512),[[e.vShow,n.value==="layers"]])])],64))],2))}}),Al=pe(zl,[["__scopeId","data-v-4501eea7"]]);function Pl(t,l){const o=e.ref(!1),n=e.ref(null);let i=0,c=0,r=0,a=0,s=!1;function m(V){if(l.disabled||V.button!==0)return;const N=V.target;if(!(N instanceof Element)||N.classList.contains("resize-handle"))return;o.value=!0,s=V.altKey,i=V.clientX,c=V.clientY;const p=t.value;p&&(r=parseFloat(p.style.left)||0,a=parseFloat(p.style.top)||0,n.value={left:r,top:a,width:parseFloat(p.style.width)||0,height:parseFloat(p.style.height)||0},l.onStart?.({altKey:s}),document.addEventListener("mousemove",g),document.addEventListener("mouseup",d),V.preventDefault())}function u(V){const N=l.getScale?.()??1;let p=r+(V.clientX-i)/N,S=a+(V.clientY-c)/N;if(l.axis==="x"&&(S=a),l.axis==="y"&&(p=r),l.onAdsorb){const O=t.value;if(O){const oe=parseFloat(O.style.width)||0,ee=parseFloat(O.style.height)||0,Z=l.onAdsorb({left:p,top:S,width:oe,height:ee});p=Z.left,S=Z.top}}return{left:p,top:S}}function g(V){const N=u(V);n.value&&(n.value.left=N.left,n.value.top=N.top),l.onDrag(N)}function d(V){o.value=!1;const N=u(V);l.onDragEnd?.(N,{altKey:s}),l.onStop?.(),n.value=null,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",d)}function f(){const V=t.value;V&&V.removeEventListener("mousedown",m),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",d)}function z(){f();const V=t.value;V&&V.addEventListener("mousedown",m)}return{isDragging:o,dragPreview:n,setup:z,cleanup:f}}function Rl(t){const l=[];return t.getAttribute("data-fit")==="shrink"&&l.push(t),t.querySelectorAll('[data-fit="shrink"]').forEach(o=>l.push(o)),l}function Ll(t){t.querySelectorAll("[data-fit-size]").forEach(l=>{if(l.getAttribute("data-fit")==="shrink")return;l.removeAttribute("data-fit-size");const o=l.getAttribute("data-fit-base");o?l.style.fontSize=`${o}pt`:l.style.removeProperty("font-size")})}function Vt(t,l){const o=()=>{const n=t.value;n&&(Rl(n).forEach(Me.fitTextNode),Ll(n))};e.watchEffect(()=>{l(),e.nextTick(o)},{flush:"post"}),e.onMounted(()=>{e.nextTick(o)})}const Il=["data-fit","data-fit-base","data-fit-min"],Ul=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),c=e.computed(()=>h.resolveElementTextFit("text",l.element.options)),r=e.computed(()=>l.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),s=e.computed(()=>{const u=l.element.options,g=c.value==="autoHeight";return{fontSize:r.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:u.fontFamily||"inherit",color:u.color||"#333",backgroundColor:u.backgroundColor||"transparent",textAlign:u.textAlign||"left",...u.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:u.lineHeight?u.lineHeight+"pt":"normal",letterSpacing:u.letterSpacing?u.letterSpacing+"pt":"normal",textDecoration:u.textDecoration||"none",padding:`${u.contentPaddingTop||0}pt ${u.contentPaddingRight||0}pt ${u.contentPaddingBottom||0}pt ${u.contentPaddingLeft||0}pt`,width:"100%",height:g?"auto":"100%",boxSizing:"border-box",overflow:g?"visible":"hidden",...u.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...u.verticalAlign?{display:"flex",...u.textAlign==="justify"?{flexDirection:"column",justifyContent:o[u.verticalAlign]??"flex-start"}:{alignItems:o[u.verticalAlign]??"flex-start",justifyContent:n[u.textAlign||"left"]??"flex-start"}}:{}}}),m=e.computed(()=>l.designMode?l.element.options.testData?l.element.options.testData:l.element.options.formatter||"文本":h.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[c.value,r.value,a.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.letterSpacing,l.element.options.lineHeight,m.value]),(u,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-text",style:e.normalizeStyle(s.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(r.value),"data-fit-min":String(a.value)},e.toDisplayString(m.value),13,Il))}}),Fl={class:"print-image"},Ol=["src"],Hl={key:1,class:"image-placeholder"},Wl=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const r=l.element.options.src||"";return r?r.includes("{")?l.designMode?h.evaluateTemplate(r,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(r,l.data?.[0]||{}):r:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const c=e.computed(()=>({objectFit:l.element.options.fit||"contain",...h.cropStyleDeclarations(l.element.options.fit,l.element.options.fitScale,l.element.options.objectPosition)}));return(r,a)=>(e.openBlock(),e.createElementBlock("div",Fl,[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(c.value),onError:i},null,44,Ol)):(e.openBlock(),e.createElementBlock("div",Hl,"图片"))]))}}),Gl=pe(Wl,[["__scopeId","data-v-73dc7258"]]),ql=["data-fit","data-fit-base","data-fit-min"],Kl=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),c=e.computed(()=>h.resolveElementTextFit("longText",l.element.options)),r=e.computed(()=>l.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),s=e.computed(()=>{const u=l.element.options,g=c.value==="autoHeight";return{fontSize:r.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:u.fontFamily||"inherit",color:u.color||"#333",backgroundColor:u.backgroundColor||"transparent",textAlign:u.textAlign||"left",...u.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:u.lineHeight?u.lineHeight+"pt":"1.5",letterSpacing:u.letterSpacing?u.letterSpacing+"pt":"normal",textIndent:u.longTextIndent?u.longTextIndent+"em":"0",width:"100%",height:g?"auto":"100%",overflow:g?"visible":"hidden",wordBreak:"break-all",boxSizing:"border-box",...u.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...u.verticalAlign?{display:"flex",...u.textAlign==="justify"?{flexDirection:"column",justifyContent:o[u.verticalAlign]??"flex-start"}:{alignItems:o[u.verticalAlign]??"flex-start",justifyContent:n[u.textAlign||"left"]??"flex-start"}}:{}}}),m=e.computed(()=>l.designMode?l.element.options.formatter?l.element.options.formatter:"长文本内容":h.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[c.value,r.value,a.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.lineHeight,m.value]),(u,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-longtext",style:e.normalizeStyle(s.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(r.value),"data-fit-min":String(a.value)},e.toDisplayString(m.value),13,ql))}}),jl=["title"],Yl=["title","onClick"],Xl=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(t,{emit:l}){const o=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],n=l;function i(c,r){n("action",c,r)}return(c,r)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:t.x+"px",top:t.y+"px"}),onMousedown:r[8]||(r[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:r[0]||(r[0]=a=>i("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:r[1]||(r[1]=a=>i("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteRow}]),onClick:r[2]||(r[2]=a=>t.canDeleteRow&&i("delete-row"))}," 删除行 ",2),r[9]||(r[9]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:"menu-item",onClick:r[3]||(r[3]=a=>i("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:r[4]||(r[4]=a=>i("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteCol}]),onClick:r[5]||(r[5]=a=>t.canDeleteCol&&i("delete-col"))}," 删除列 ",2),r[10]||(r[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!t.mergeDisabledReason}]),title:t.mergeDisabledReason||"",onClick:r[6]||(r[6]=a=>!t.mergeDisabledReason&&i("merge"))}," 合并单元格 ",10,jl),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canSplit}]),onClick:r[7]||(r[7]=a=>t.canSplit&&i("split"))}," 拆分单元格 ",2),r[11]||(r[11]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),r[12]||(r[12]=e.createElementVNode("div",{class:"menu-group-title"},"行类型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,a=>e.createElementVNode("div",{key:a.value,class:e.normalizeClass(["menu-item",{disabled:!!t.rowTypeDisabledReason(a.value),active:t.currentRowType===a.value}]),title:t.rowTypeDisabledReason(a.value)||"",onClick:s=>!t.rowTypeDisabledReason(a.value)&&i("set-row-type",a.value)},e.toDisplayString(a.label),11,Yl)),64))],36)):e.createCommentVNode("",!0)]))}}),Zl=pe(Xl,[["__scopeId","data-v-fbbccae0"]]),Jl={class:"cell-barcode"},Ql=["preserveAspectRatio"],_l=["src"],ea={key:1,class:"cell-barcode-fallback"},ta=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},qrQuietZone:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(t){const l=t,o=e.ref(null),n=e.ref(!1),i=e.ref(""),c=e.ref(null),r={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},a=e.computed(()=>r[l.fit||"contain"]??"xMidYMid meet"),s=e.computed(()=>c.value?{width:c.value.width,height:c.value.height}:{maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}),m=e.computed(()=>({width:"100%",height:"100%",objectFit:l.fit||"contain",maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));function u(){if(n.value=!1,c.value=null,!o.value)return;const z=h.barcodeUnitsPerModule(l.barWidth);try{Lt(o.value,l.value,{format:l.barcodeType||"CODE128",width:z,height:h.BARCODE_BAR_HEIGHT_MODULES*z,displayValue:l.showText!==!1,fontSize:(l.barFontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*z,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*z,marginRight:h.BARCODE_QUIET_ZONE_MODULES*z,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*z})}catch{return}n.value=!0;const V=g(o.value),N=V?h.resolveBarcodeSize({unitWidth:V.width/z,unitHeight:V.height/z,boxWidthMm:h.barcodeAvailableBoxMm(l.targetWidthMm,l.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(l.targetHeightMm,l.maxHeight),dpi:l.printerDpi,barWidth:l.barWidth}):null;c.value=N?{width:`${N.widthMm}mm`,height:`${N.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function g(z){const V=(z.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return V.length!==4||V.some(N=>!Number.isFinite(N))?null:{width:V[2],height:V[3]}}function d(){if(!l.value){i.value="";return}try{const z=Me.browserCodeRenderer.render(l.value,"qrcode",{qrCodeLevel:String(l.qrCodeLevel||"M"),qrQuietZone:typeof l.qrQuietZone=="number"?l.qrQuietZone:void 0});i.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(z)}`}catch{i.value=""}}function f(){l.cellType==="barcode"?u():d()}return e.onMounted(f),e.watch(()=>[l.cellType,l.value,l.barcodeType,l.qrCodeLevel,l.qrQuietZone,l.showText,l.printerDpi,l.targetWidthMm,l.targetHeightMm,l.barWidth,l.barFontSize,l.maxWidth,l.maxHeight],f),(z,V)=>(e.openBlock(),e.createElementBlock("div",Jl,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:o,preserveAspectRatio:a.value,style:e.normalizeStyle(s.value)},null,12,Ql)),[[e.vShow,t.cellType==="barcode"&&n.value]]),t.cellType==="qrcode"&&i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:i.value,alt:"qrcode",style:e.normalizeStyle(m.value)},null,12,_l)):e.createCommentVNode("",!0),!n.value&&t.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",ea,e.toDisplayString(t.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),oa=pe(ta,[["__scopeId","data-v-f7222c41"]]),na=["src"],la={key:1,class:"image-placeholder"},aa=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},objectPosition:{},fitScale:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{},boxHeightMm:{}},setup(t){const l=t,o=e.computed(()=>{const a=l.value||"";return a?a.includes("{")?l.designMode?h.evaluateTemplate(a,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(a,l.data?.[0]||{}):a:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const c=e.computed(()=>l.boxHeightMm?{height:`${l.boxHeightMm}mm`}:{}),r=e.computed(()=>({...l.boxHeightMm?{width:"100%",height:"100%"}:{},objectFit:l.fit||"contain",...h.cropStyleDeclarations(l.fit,l.fitScale,l.objectPosition),maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:"cell-image",style:e.normalizeStyle(c.value)},[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(r.value),onError:i},null,44,na)):(e.openBlock(),e.createElementBlock("div",la,"图片"))],4))}}),ia=pe(aa,[["__scopeId","data-v-2821a676"]]),ra=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],sa=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],da={key:0,class:"data-placeholder"},ca={key:3,class:"data-placeholder"},ua={key:0,class:"col-resize-layer"},ma=["aria-label","onMousedown"],pa={key:1,class:"row-badges"},Ye=3.7795275591,va=.1,fa=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-cell"],setup(t,{emit:l}){const o={header:"题",data:"数",subtotal:"小",summary:"汇"},n=t,i=l,c=e.inject(He,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),r=e.computed(()=>n.element.options.tableRows??[]),a=e.computed(()=>n.element.options.tableColWidths??[]),s=e.computed(()=>n.element.options.tableDefaultFontSize??10),m=e.computed(()=>n.element.options.tableDefaultColor??"#333333"),u=e.computed(()=>{const I=c.tableSelection.value;return I&&I.elementId===n.element.id?I:null});function g(I){let H=0;for(let k=0;k<I;k++)H+=r.value[k].height;return H}const d=e.ref(null),f=e.ref(null),z=e.ref([]);function V(){if(!n.designMode)return;const I=d.value;if(!I)return;const H=I.offsetHeight;if(H<=0)return;const k=n.element.options,w=H/Ye;Math.abs(w-(k.height??0))>va&&(k.height=Math.round(w*100)/100);const R=I.offsetTop;z.value=Array.from(I.rows).map(ce=>({top:(ce.offsetTop-R)/Ye,height:ce.offsetHeight/Ye}))}function N(I){return z.value[I]?.top??g(I)}function p(I){return z.value[I]?.height??r.value[I]?.height??0}e.watch(()=>[n.element.options,n.designMode],()=>V(),{deep:!0,flush:"post"}),e.onMounted(()=>{V(),document.fonts?.ready.then(()=>V())});const S=e.computed(()=>{const I=n.element.options.dataSource;if(I&&Array.isArray(h.DEFAULT_DEMO_DATA[I]))return h.DEFAULT_DEMO_DATA[I];for(const H of Object.values(h.DEFAULT_DEMO_DATA))if(Array.isArray(H))return H}),O=e.computed(()=>{if(n.data)return n.data});function oe(I){return I.cellType==="barcode"||I.cellType==="qrcode"}function ee(I,H){return oe(H)?h.resolveBarcodeDesignValue(H.formatter,S.value):H.formatter||""}function Z(I,H){const k=n.element.options,w={designMode:n.designMode,showGhostBorder:n.showTableGhostBorder};return{fontFamily:H.fontFamily||"inherit",textAlign:H.align??"left",...H.align==="justify"?{textAlignLast:"justify"}:{},verticalAlign:H.valign??"middle",fontSize:(H.fontSize??s.value)+"pt",fontWeight:H.fontWeight??"normal",color:H.color??m.value,backgroundColor:H.backgroundColor??"transparent",borderTop:h.resolveCellBorderCss(H.borders?.top,w),borderRight:h.resolveCellBorderCss(H.borders?.right,w),borderBottom:h.resolveCellBorderCss(H.borders?.bottom,w),borderLeft:h.resolveCellBorderCss(H.borders?.left,w),padding:(H.padding??k.tableDefaultPadding??1)+"mm",whiteSpace:H.wordWrap??!0?"normal":"nowrap",overflow:H.wordWrap??!0?"visible":"hidden"}}function y(I){return h.resolveCellTextFit(I)}function U(I){return y(I)!=="autoHeight"}function Y(I){return I.fontSize??s.value}function q(I,H){return h.cellFitCapMm(r.value,I,H,n.element.options.tableDefaultPadding??1)}function E(I,H){return h.cellFitWidthMm(a.value,I,H,n.element.options.tableDefaultPadding??1)}function T(I,H){return{maxHeight:q(H,I)+"mm",overflow:"hidden",...I.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}Vt(f,()=>[n.designMode,n.data?.length,a.value.join(","),s.value,n.element.options.tableDefaultPadding,r.value.map(I=>`${I.height}:${I.cells.map(H=>`${H.formatter??""}|${H.fontSize??""}|${H.wordWrap??""}|${H.textFit??""}|${H.colspan??1}`).join("~")}`).join(",")]);function b(I,H){const k=u.value;return{"cell-selected":!!k&&I>=k.r1&&I<=k.r2&&H>=k.c1&&H<=k.c2,"row-data-bg":r.value[I].type==="data"}}const $=e.ref(null);function M(I,H){const k=h.normalizeSelection(r.value,I,H);c.setTableSelection({elementId:n.element.id,...k})}function L(I,H,k){!n.designMode||!n.isSelected||(k.stopPropagation(),k.shiftKey&&u.value?M({r:u.value.r1,c:u.value.c1},{r:I,c:H}):($.value={r:I,c:H},M({r:I,c:H},{r:I,c:H})),window.addEventListener("mouseup",()=>{$.value=null},{once:!0}))}function J(I,H){$.value&&M($.value,{r:I,c:H})}function P(I,H){n.designMode&&i("dblclick-cell",n.element.id,I,H)}const X=e.reactive({visible:!1,x:0,y:0}),re=e.inject(Je,null);function le(I,H,k){if(!n.designMode)return;!n.isSelected&&re&&(re.value=new Set([n.element.id]));const w=u.value;w&&I>=w.r1&&I<=w.r2&&H>=w.c1&&H<=w.c2||M({r:I,c:H},{r:I,c:H}),X.x=k.clientX,X.y=k.clientY,X.visible=!0,window.removeEventListener("mouseup",v),window.addEventListener("mouseup",v)}function v(I){I.target?.closest?.(".table-ctx-menu")||(X.visible=!1,window.removeEventListener("mouseup",v))}const x=e.computed(()=>{const I=u.value;return I?h.canMergeReason(r.value,I):"未选择单元格"}),K=e.computed(()=>{const I=u.value;if(!I)return!1;for(let H=I.r1;H<=I.r2;H++)for(let k=I.c1;k<=I.c2;k++){const w=r.value[H].cells[k];if(!w.merged&&((w.rowspan??1)>1||(w.colspan??1)>1))return!0}return!1});function G(I){const H=u.value;if(!H)return"未选择单元格";if(H.r1!==H.r2)return"行类型仅支持单行设置";const k=JSON.parse(JSON.stringify(r.value));return h.setRowType(k,H.r1,I)}function C(){h.syncTableElementSize(n.element.options)}function D(I,H){const k=c.maxTableWidth.value,w=I.reduce((R,ce)=>R+ce,0)+I[H];return w>k?`插入后表格总宽 ${Math.round(w*10)/10}mm 超过打印范围宽度 ${k}mm,请先缩小列宽`:null}function j(I,H){const k=u.value;if(!k)return;X.visible=!1;const w=n.element.options,R=w.tableRows,ce=w.tableColWidths;let fe=null;switch(I){case"insert-row-above":h.insertRow(R,k.r1,"above");break;case"insert-row-below":h.insertRow(R,k.r2,"below");break;case"delete-row":fe=h.deleteRow(R,k.r1);break;case"insert-col-left":fe=D(ce,k.c1),fe||h.insertCol(R,ce,k.c1,"left");break;case"insert-col-right":fe=D(ce,k.c2),fe||h.insertCol(R,ce,k.c2,"right");break;case"delete-col":fe=h.deleteCol(R,ce,k.c1);break;case"merge":h.mergeCells(R,k);break;case"split":h.splitCells(R,k);break;case"set-row-type":fe=h.setRowType(R,k.r1,H);break}if(fe){alert(fe);return}c.setTableSelection(null),C(),c.recordHistory()}const _=e.computed(()=>n.designMode&&!!n.isSelected&&!n.element.options.locked&&a.value.length>=1),ae=e.computed(()=>Array.from({length:a.value.length},(I,H)=>H+1));function ge(I){return a.value.slice(0,I).reduce((H,k)=>H+k,0)}const A=e.ref(null);let B=0,F=0;function ne(I,H){_.value&&H.button===0&&(A.value=I,B=H.clientX,F=a.value[I-1],document.addEventListener("mousemove",ie),document.addEventListener("mouseup",ve))}function ie(I){if(A.value===null)return;const H=n.scale||1,k=(I.clientX-B)/(H*Ye),w=A.value-1,R=n.element.options.tableColWidths;R[w]=h.clampResizedColumnWidth(R,w,F+k,c.maxTableWidth.value),C()}function ve(){document.removeEventListener("mousemove",ie),document.removeEventListener("mouseup",ve),A.value!==null&&(A.value=null,C(),c.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",ie),document.removeEventListener("mouseup",ve)}),(I,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:f,class:e.normalizeClass(["print-table",{"design-mode":t.designMode}]),onContextmenu:H[0]||(H[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:d,style:e.normalizeStyle({fontSize:s.value+"pt",color:m.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(k,w)=>(e.openBlock(),e.createElementBlock("col",{key:w,style:e.normalizeStyle({width:k+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,w)=>(e.openBlock(),e.createElementBlock("tr",{key:k.id,style:e.normalizeStyle({height:k.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.cells,(R,ce)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:R.id},[R.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:R.rowspan||1,colspan:R.colspan||1,class:e.normalizeClass(b(w,ce)),style:e.normalizeStyle(Z(k,R)),onMousedown:e.withModifiers(fe=>L(w,ce,fe),["left"]),onMouseenter:fe=>J(w,ce),onDblclick:e.withModifiers(fe=>P(w,ce),["stop"]),onContextmenu:e.withModifiers(fe=>le(w,ce,fe),["prevent","stop"])},[oe(R)?(e.openBlock(),e.createBlock(oa,{key:0,"cell-type":R.cellType,value:ee(k,R),"barcode-type":R.barcodeType,"qr-code-level":R.qrCodeLevel,"qr-quiet-zone":R.qrQuietZone,"show-text":R.showBarcodeText!==!1,fit:R.fit,"max-width":R.maxWidth,"max-height":R.maxHeight,"printer-dpi":R.printerDpi,"target-width-mm":E(ce,R),"target-height-mm":q(w,R),"bar-width":R.barWidth,"bar-font-size":R.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","qr-quiet-zone","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):R.cellType==="image"?(e.openBlock(),e.createBlock(ia,{key:1,value:R.formatter||"",fit:R.fit,"object-position":R.objectPosition,"fit-scale":R.fitScale,"max-width":R.maxWidth,"max-height":R.maxHeight,"box-height-mm":e.unref(h.cellImageBoxMm)(R.fit,q(w,R)),"design-mode":t.designMode,data:O.value},null,8,["value","fit","object-position","fit-scale","max-width","max-height","box-height-mm","design-mode","data"])):U(R)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(T(R,w)),"data-fit":y(R)==="shrink"?"shrink":void 0,"data-fit-base":String(Y(R)),"data-fit-min":String(e.unref(h.resolveShrinkMinFontSize)(R.shrinkMinFontSize)),"data-fit-mm":q(w,R)},[k.type==="data"?(e.openBlock(),e.createElementBlock("span",da,e.toDisplayString(ee(k,R)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(ee(k,R)),1)],64))],12,sa)):k.type==="data"?(e.openBlock(),e.createElementBlock("span",ca,e.toDisplayString(ee(k,R)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(ee(k,R)),1)],64))],46,ra))],64))),128))],4))),128))])],4),_.value?(e.openBlock(),e.createElementBlock("div",ua,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ae.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k,class:e.normalizeClass(["col-resize-handle",{dragging:A.value===k}]),role:"separator","aria-label":"列宽手柄"+k,style:e.normalizeStyle({left:ge(k)+"mm"}),onMousedown:e.withModifiers(w=>ne(k,w),["stop","prevent"])},null,46,ma))),128))])):e.createCommentVNode("",!0),t.designMode&&t.isSelected?(e.openBlock(),e.createElementBlock("div",pa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,w)=>(e.openBlock(),e.createElementBlock("span",{key:k.id,class:"row-badge",style:e.normalizeStyle({top:N(w)+"mm",height:p(w)+"mm"})},e.toDisplayString(o[k.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(Zl,{visible:X.visible,x:X.x,y:X.y,"can-delete-row":r.value.length>1,"can-delete-col":a.value.length>1,"merge-disabled-reason":x.value,"can-split":K.value,"current-row-type":u.value?r.value[u.value.r1]?.type??null:null,"row-type-disabled-reason":G,onAction:j},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),ga=pe(fa,[["__scopeId","data-v-f086e160"]]),Dt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="hline"),n=e.computed(()=>{const i=l.element.options,c=(i.borderWidth||.75)+"pt",r=i.borderStyle||"solid",a=i.borderColor||"#333";return o.value?{width:"100%",height:"0",borderTop:`${c} ${r} ${a}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${c} ${r} ${a}`,boxSizing:"border-box"}});return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(n.value)},null,4))}}),Tt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="oval"),n=e.computed(()=>{const i=l.element.options;return{width:"100%",height:"100%",borderWidth:(i.borderWidth||1)+"pt",borderStyle:i.borderStyle||"solid",borderColor:i.borderColor||"#333",backgroundColor:i.backgroundColor||"transparent",borderRadius:o.value?"50%":"0",boxSizing:"border-box"}});return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(n.value)},null,4))}}),ha={class:"print-barcode",ref:"containerRef"},ba=["preserveAspectRatio"],Ea=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(null),n=e.ref(null),i={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},c=e.computed(()=>i[l.element.options.fit||"contain"]??"xMidYMid meet"),r=e.computed(()=>n.value?{width:n.value.width,height:n.value.height}:{maxWidth:"100%",maxHeight:"100%"});function a(){if(!o.value)return;const m=l.element.options,u=(l.designMode?m.testData||m.formatter:h.resolveTextBinding(m,l.data))||"条码",g=h.barcodeUnitsPerModule(m.barWidth);try{Lt(o.value,u,{format:m.barcodeType||"CODE128",width:g,height:h.BARCODE_BAR_HEIGHT_MODULES*g,displayValue:!m.hideTitle,fontSize:(m.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 d=s(o.value),f=d?h.resolveBarcodeSize({unitWidth:d.width/g,unitHeight:d.height/g,boxWidthMm:h.barcodeAvailableBoxMm(m.width,m.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(m.height,m.maxHeight),dpi:m.printerDpi,barWidth:m.barWidth}):null;n.value=f?{width:`${f.widthMm}mm`,height:`${f.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function s(m){const u=(m.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return u.length!==4||u.some(g=>!Number.isFinite(g))?null:{width:u[2],height:u[3]}}return e.onMounted(a),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.barcodeType,l.element.options.width,l.element.options.height,l.element.options.barWidth,l.element.options.printerDpi,l.element.options.hideTitle,l.element.options.fontSize,l.element.options.maxWidth,l.element.options.maxHeight],a),(m,u)=>(e.openBlock(),e.createElementBlock("div",ha,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:o,preserveAspectRatio:c.value,style:e.normalizeStyle(r.value)},null,12,ba))],512))}}),ya=pe(Ea,[["__scopeId","data-v-6eb95a40"]]),ka={class:"print-qrcode"},Va=["src"],Na=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(""),n=e.computed(()=>{const c=l.element.options;return{width:"100%",height:"100%",objectFit:c.fit||"contain",maxWidth:c.maxWidth?`${c.maxWidth}mm`:"100%",maxHeight:c.maxHeight?`${c.maxHeight}mm`:"100%"}});function i(){const c=l.element.options,r=(l.designMode?c.testData||c.formatter:h.resolveTextBinding(c,l.data))||"二维码";try{const a=Me.browserCodeRenderer.render(r,"qrcode",{qrCodeLevel:String(c.qrCodeLevel??"M"),qrQuietZone:typeof c.qrQuietZone=="number"?c.qrQuietZone:void 0});o.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(a)}`}catch{o.value=""}}return e.onMounted(i),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.qrCodeLevel,l.element.options.qrQuietZone],i),(c,r)=>(e.openBlock(),e.createElementBlock("div",ka,[o.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,alt:"qrcode",style:e.normalizeStyle(n.value)},null,12,Va)):e.createCommentVNode("",!0)]))}}),wa=pe(Na,[["__scopeId","data-v-792ee33c"]]),Ca=["innerHTML"],Sa=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{if(l.element.options.formatter){const n=l.data&&l.data.length>0?l.data[0]:{},i=h.evaluateTemplate(l.element.options.formatter,n??{});return i?Xt.sanitize(i):""}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,i)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:o.value},null,8,Ca))}}),xa=pe(Sa,[["__scopeId","data-v-880bbde5"]]),Ba=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const i=l.element.options;return{fontSize:(i.fontSize||12)+"pt",fontWeight:i.fontWeight||"normal",fontFamily:i.fontFamily||"inherit",color:i.color||"#333",textAlign:i.textAlign||"left",...i.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:i.lineHeight?i.lineHeight+"pt":"normal",letterSpacing:i.letterSpacing?i.letterSpacing+"pt":"normal"}}),n=e.computed(()=>l.designMode?l.element.options.title||"{pageIndex}/{totalPages}":l.element.options.title||"");return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(o.value)},e.toDisplayString(n.value),5))}}),$a=pe(Ba,[["__scopeId","data-v-9762b52f"]]),Da={key:0,class:"drag-preview"},Ta={key:1,class:"resize-handles"},Ma=["onMousedown"],za={key:2,class:"selected-indicator"},Aa={class:"position-label"},Pa=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(t,{emit:l}){const o=t,n=l,i=e.ref(null),c=e.inject(Je,null),r=e.computed(()=>c?.value?c.value.has(o.element.id):o.isSelected??!1),a=e.inject(It,null),s=e.computed(()=>a?.value.has(o.element.id)??!1),m={text:e.markRaw(Ul),image:e.markRaw(Gl),longText:e.markRaw(Kl),table:e.markRaw(ga),hline:e.markRaw(Dt),vline:e.markRaw(Dt),rect:e.markRaw(Tt),oval:e.markRaw(Tt),barcode:e.markRaw(ya),qrcode:e.markRaw(wa),html:e.markRaw(xa),pageNumber:e.markRaw($a)},u=e.computed(()=>m[o.element.printElementType.type]),g=e.computed(()=>o.element.printElementType.type==="table"?{showTableGhostBorder:o.showTableGhostBorder,scale:o.scale}:{}),d=e.computed(()=>{const E=o.element.options,T=h.resolveElementBorder(o.element.printElementType.type,E),b={};if(T?.all&&(b.border=`${T.all.borderWidth} ${T.all.borderStyle} ${T.all.borderColor}`),T)for(const $ of h.ELEMENT_BORDER_SIDES){const M=T.edges[$];M&&(b[`border${$.charAt(0).toUpperCase()}${$.slice(1)}`]=`${M.borderWidth} ${M.borderStyle} ${M.borderColor}`)}return{position:"absolute",left:E.left+"mm",top:E.top+"mm",width:E.width+"mm",height:E.height+"mm",zIndex:E.zIndex||"auto",...b}}),f=e.computed(()=>{const E=o.element.options;return`x:${Math.round(E.left)} y:${Math.round(E.top)} ${Math.round(E.width)}×${Math.round(E.height)}mm`});let z=0,V=0;const N=e.reactive({disabled:!o.designMode||!!o.element.options.locked,getScale:()=>(o.scale||1)*h.mmToPx(1),onDrag:E=>{const T=E.left-z,b=E.top-V;i.value&&(i.value.style.transform=`translate(${T}mm, ${b}mm)`)},onDragEnd:(E,T)=>{if(T.altKey){const M=JSON.parse(JSON.stringify(o.element));M.id=h.generateId(),M.options.left=E.left,M.options.top=E.top,M.options.groupId=void 0,n("clone-element",M,{left:E.left,top:E.top}),i.value&&(i.value.style.transform="");return}const b=E.left-z,$=E.top-V;if(o.element.options.left=E.left,o.element.options.top=E.top,i.value&&(i.value.style.transform=""),o.element.options.groupId&&o.allElements)for(const M of o.allElements)M.id!==o.element.id&&M.options.groupId===o.element.options.groupId&&(M.options.left+=b,M.options.top+=$)},onStart:()=>{z=o.element.options.left,V=o.element.options.top,n("drag-start")},onStop:()=>{o.clearAdsorbGuides?.(),n("drag-stop")},onAdsorb:E=>{let T=E.left,b=E.top;return o.snapToGrid&&(T=Math.round(E.left/5)*5,b=Math.round(E.top/5)*5),o.adsorbHandler?o.adsorbHandler({id:o.element.id,left:T,top:b,width:o.element.options.width,height:o.element.options.height}):{left:T,top:b,lines:[]}}}),{setup:p,cleanup:S,isDragging:O}=Pl(i,N);e.watchEffect(()=>{N.disabled=!o.designMode||!!o.element.options.locked});const oe=e.computed(()=>r.value&&!!o.designMode&&!o.element.options.locked&&o.element.printElementType.type!=="table"),{startResize:ee,cleanup:Z}=h.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(o.scale||1)*h.mmToPx(1),getRect:()=>({left:o.element.options.left,top:o.element.options.top,width:o.element.options.width,height:o.element.options.height}),onResize:E=>{o.element.options.left=E.left,o.element.options.top=E.top,o.element.options.width=E.width,o.element.options.height=E.height},onStart:()=>{n("drag-start")},onStop:()=>{n("drag-stop")}});function y(E){o.designMode&&E.button===0&&n("select",o.element.id,E.ctrlKey||E.metaKey)}function U(){o.designMode&&n("dblclick-element",o.element.id)}function Y(E,T,b){o.designMode&&n("dblclick-cell",E,T,b)}e.onMounted(()=>{o.designMode&&p()});function q(){S(),Z(),o.clearAdsorbGuides?.()}return e.onUnmounted(()=>{q()}),(E,T)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:i,class:e.normalizeClass(["print-element",{selected:r.value,previewed:s.value,"design-mode":t.designMode,locked:t.element.options.locked,hidden:t.element.options.visible===!1,"drag-ghost":e.unref(O),[`type-${t.element.printElementType.type}`]:!0,[`zone-${t.zone||"content"}`]:!0}]),style:e.normalizeStyle(d.value),onMousedown:e.withModifiers(y,["stop"]),onDblclick:e.withModifiers(U,["stop"]),onContextmenu:T[0]||(T[0]=e.withModifiers(b=>E.$emit("contextmenu",t.element.id,b),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.value),e.mergeProps({element:t.element,data:t.printData,"design-mode":t.designMode,"is-selected":r.value},g.value,{onDblclickCell:Y}),null,16,["element","data","design-mode","is-selected"])),e.unref(O)?(e.openBlock(),e.createElementBlock("div",Da)):e.createCommentVNode("",!0),oe.value?(e.openBlock(),e.createElementBlock("div",Ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.RESIZE_POINTS),b=>(e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(["resize-handle",`handle-${b}`]),onMousedown:e.withModifiers($=>e.unref(ee)(b,$),["stop"])},null,42,Ma))),128))])):e.createCommentVNode("",!0),r.value&&t.designMode?(e.openBlock(),e.createElementBlock("div",za,[e.createElementVNode("div",Aa,e.toDisplayString(f.value),1)])):e.createCommentVNode("",!0)],38))}}),ut=pe(Pa,[["__scopeId","data-v-5a7482f4"]]);function Ra(t={}){const l=e.ref([]),o=e.ref({width:0,height:0});function n(r,a,s){return h.computeAdsorb(r,a,s,t)}function i(r,a,s){l.value=r,o.value={width:a,height:s}}function c(){l.value=[]}return{check:n,renderLines:i,clearLines:c,guideLines:l,paperSize:o}}function La(t){const{check:l,renderLines:o,clearLines:n,guideLines:i,paperSize:c}=Ra(t.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function r(s){const m=t.getElements().filter(d=>d.id!==s.id).map(d=>({id:d.id,left:d.options.left,top:d.options.top,width:d.options.width,height:d.options.height})),u=l(s,m,t.getGuides?.()),g=t.getPaperSize();return o(u.lines,g.width,g.height),u}function a(){n()}return{requestAdsorb:r,clearGuides:a,guideLines:i,paperSize:c}}const Ia=["src"],Ua=["width","height","viewBox"],Fa=["x","y","font-size","fill","transform"],Oa={key:0,class:"zone-label"},Ha={key:0,class:"zone-height-tip"},Wa={key:0,class:"zone-label"},Ga={key:0,class:"zone-height-tip"},qa=["onMousedown","onDblclick"],Ka=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(t,{expose:l,emit:o}){const n=t,i=o,c=e.ref(null),r=e.computed(()=>h.getPaperDimensions(n.templateData).width),a=e.computed(()=>h.getPaperDimensions(n.templateData).height),s=e.computed(()=>n.templateData.designBackground),m=e.ref(!1);e.watch(()=>s.value?.src,()=>{m.value=!1});const u=e.computed(()=>{const C=s.value?.rotation;return C===90||C===180||C===270?C:0}),g=e.computed(()=>{const C=u.value,D=C===90||C===270,j=D?a.value:r.value,_=D?r.value:a.value,ae={width:j+"mm",height:_+"mm",left:(r.value-j)/2+"mm",top:(a.value-_)/2+"mm"};return C!==0&&(ae.transform=`rotate(${C}deg)`),ae});function d(){m.value=!0,console.warn("[print-designer] 设计背景图加载失败:",s.value?.src)}const f=e.computed(()=>`${8/(n.scale||1)}px`),z=e.computed(()=>{const C=n.scale||1,D=h.mmToPx(r.value)*C,j=h.mmToPx(a.value)*C;return{width:D+"px",height:j+"px",position:"relative"}}),V=e.computed(()=>{const C=n.templateData.margins,D=n.templateData.header.height,j=n.templateData.footer.height,_=r.value-C.left-C.right;return{header:{left:C.left,top:C.top,width:_,height:D},content:{left:C.left,top:C.top+D,width:_,height:a.value-C.top-C.bottom-D-j},footer:{left:C.left,top:a.value-C.bottom-j,width:_,height:j}}});function N(C){return{position:"absolute",left:C.left+"mm",top:C.top+"mm",width:C.width+"mm",height:C.height+"mm"}}const p=e.computed(()=>{const C={header:[],footer:[],content:[]};for(const D of n.runtimeElements)D.zone==="header"?C.header.push(D):D.zone==="footer"?C.footer.push(D):C.content.push(D);return C}),S=e.computed(()=>p.value.header),O=e.computed(()=>p.value.footer),oe=e.computed(()=>p.value.content);let ee="content";const{requestAdsorb:Z,clearGuides:y,guideLines:U,paperSize:Y}=La({getElements:()=>p.value[ee],getPaperSize:()=>{const C=V.value[ee];return{width:C.width,height:C.height}},getGuides:()=>{const C=[],D=[];for(const j of n.guides??[])j.type==="vertical"?C.push(j.position):D.push(j.position);return{vertical:C,horizontal:D}}});function q(C){ee=n.runtimeElements.find(_=>_.id===C.id)?.zone||"content";const j=Z(C);return(j.left!==C.left||j.top!==C.top)&&P(j.left+C.width/2,j.top+C.height/2),j}function E(C,D){if(C.button!==0)return;const j=D.position,_=C.clientX,ae=C.clientY,ge=n.scale??1,A=25.4/96,B=ne=>{const ie=(D.type==="vertical"?ne.clientX-_:ne.clientY-ae)/ge*A,ve=D.type==="vertical"?r.value:a.value,I=Math.min(Math.max(j+ie,0),ve);i("guide-move",D.id,I)},F=()=>{window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",F)};window.addEventListener("mousemove",B),window.addEventListener("mouseup",F)}const T=e.computed(()=>({width:r.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"})),b=e.computed(()=>{const C=n.templateData.margins;return{padding:`${C.top}mm ${C.right}mm ${C.bottom}mm ${C.left}mm`,position:"relative",boxSizing:"border-box",minHeight:a.value+"mm"}}),$=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 M=0,L=null;const J=e.ref(null);function P(C,D){M+=1,J.value={left:C,top:D,key:M},L&&clearTimeout(L),L=setTimeout(()=>{J.value=null},300)}const X=e.computed(()=>be.resolveWatermarkLayout(n.templateData.watermark,n.printData,{width:r.value,height:a.value})),re=e.ref(null);function le(C,D){D.button===0&&(K(),re.value={zone:C,startY:D.clientY,startH:n.templateData[C].height},window.addEventListener("mousemove",v),window.addEventListener("mouseup",x))}function v(C){if(!re.value)return;const{zone:D,startY:j,startH:_}=re.value,ge=(C.clientY-j)/(n.scale||1)*25.4/96,A=D==="header"?ge:-ge,B=Math.min(100,a.value-n.templateData.margins.top-n.templateData.margins.bottom-(D==="header"?n.templateData.footer.height:n.templateData.header.height)-10),F=Math.min(B,Math.max(0,Math.round((_+A)*10)/10));i("zone-height-change",D,F)}function x(){if(!re.value)return;const C=re.value.zone;re.value=null,window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",x),i("zone-height-commit",C)}function K(){window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",x),re.value=null}e.onUnmounted(()=>{K(),L&&clearTimeout(L)});function G(C,D){i("select",C,D)}return l({contentRef:c}),(C,D)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(z.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(T.value)},[t.designMode&&s.value?.src&&!m.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(g.value)},[e.createElementVNode("img",{src:s.value.src,draggable:"false",alt:"",onError:d},null,40,Ia)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:c,style:e.normalizeStyle(b.value)},[t.showGrid&&t.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle($.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),X.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(X.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value.tiles,(j,_)=>(e.openBlock(),e.createElementBlock("svg",{key:_,class:"watermark-tile",width:j.widthMm+"mm",height:j.heightMm+"mm",viewBox:`0 0 ${X.value.tileWidthPx} ${X.value.tileHeightPx}`,style:e.normalizeStyle({left:j.leftMm+"mm",top:j.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:X.value.tileWidthPx/2,y:X.value.tileHeightPx/2,"font-size":X.value.fontSizePx,fill:X.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${X.value.rotate},${X.value.tileWidthPx/2},${X.value.tileHeightPx/2})`},e.toDisplayString(X.value.text),9,Fa)],12,Ua))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":t.designMode}]),style:e.normalizeStyle(N(V.value.header))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Oa,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":S.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"header","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[0]||(D[0]=_=>C.$emit("drag-start")),onDragStop:D[1]||(D[1]=_=>C.$emit("drag-stop")),onDblclickElement:D[2]||(D[2]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[3]||(D[3]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[4]||(D[4]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:D[5]||(D[5]=e.withModifiers(j=>le("header",j),["prevent","stop"]))},[re.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",Ha,e.toDisplayString(t.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":t.designMode}]),style:e.normalizeStyle(N(V.value.content))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":oe.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"content","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[6]||(D[6]=_=>C.$emit("drag-start")),onDragStop:D[7]||(D[7]=_=>C.$emit("drag-stop")),onDblclickElement:D[8]||(D[8]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[9]||(D[9]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[10]||(D[10]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},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":t.designMode}]),style:e.normalizeStyle(N(V.value.footer))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Wa,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":O.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"footer","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[11]||(D[11]=_=>C.$emit("drag-start")),onDragStop:D[12]||(D[12]=_=>C.$emit("drag-stop")),onDblclickElement:D[13]||(D[13]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[14]||(D[14]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[15]||(D[15]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:D[16]||(D[16]=e.withModifiers(j=>le("footer",j),["prevent","stop"]))},[re.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",Ga,e.toDisplayString(t.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(U),(j,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:e.normalizeClass(["adsorb-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:e.unref(Y).height+"mm",borderLeftColor:j.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:j.position+"mm",left:"0",width:e.unref(Y).width+"mm",borderTopColor:j.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.guides,j=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+j.id,class:e.normalizeClass(["manual-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:a.value+"mm","--guide-hit":f.value}:{top:j.position+"mm",left:"0",width:r.value+"mm","--guide-hit":f.value}),onMousedown:e.withModifiers(_=>E(_,j),["prevent","stop"]),onDblclick:e.withModifiers(_=>j.id&&i("guide-remove",j.id),["prevent","stop"])},null,46,qa))),128))],4)],4)],4))}}),ja=pe(Ka,[["__scopeId","data-v-4682b43a"]]),Ya=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>o.orientation==="horizontal"),c=e.computed(()=>i.value?"vertical":"horizontal"),r=e.ref(null),a=e.ref(null),s=e.computed(()=>a.value??o.cursorPx??null),m=e.computed(()=>i.value?{width:o.viewportPx+"px",height:h.RULER_THICKNESS+"px"}:{width:h.RULER_THICKNESS+"px",height:o.viewportPx+"px"});let u=0;function g(){u||(u=requestAnimationFrame(()=>{u=0,d()}))}function d(){const y=r.value;if(!y)return;const U=y.getContext("2d");if(!U)return;const Y=window.devicePixelRatio||1,q=Math.max(0,Math.round(o.viewportPx)),E=h.RULER_THICKNESS;y.width=(i.value?q:E)*Y,y.height=(i.value?E:q)*Y,U.setTransform(Y,0,0,Y,0,0);const T=getComputedStyle(y),b=T.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",$=T.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",M=T.getPropertyValue("--pd-accent").trim()||"#165DFF";U.fillStyle=b,U.fillRect(0,0,i.value?q:E,i.value?E:q);const L=o.scale>0?o.scale:1,J=h.mmToPx(1)*L;if(J<=0)return;const P=-o.originPx/J,X=(q-o.originPx)/J,re=h.chooseMajorStepMM(L),le=h.buildRulerTicks(P,X,re);f(U,le,J,$,!0),f(U,le,J,$,!1),z(U,0,M),z(U,o.paperLengthMM,M);const v=s.value;if(v!==null&&v>=0&&v<=q){if(U.strokeStyle=M,U.lineWidth=1.5,U.beginPath(),i.value){const x=Math.round(v)+.5;U.moveTo(x,0),U.lineTo(x,E)}else{const x=Math.round(v)+.5;U.moveTo(0,x),U.lineTo(E,x)}U.stroke()}}function f(y,U,Y,q,E){y.strokeStyle=q,y.fillStyle=q,y.globalAlpha=E?.32:1,y.lineWidth=1,y.font="9px ui-monospace, Menlo, monospace",y.textBaseline="top";for(const T of U){if((T.mm<0||T.mm>o.paperLengthMM)!==E)continue;const $=Math.round(o.originPx+T.mm*Y)+.5,M=T.major?8:4;y.beginPath(),i.value?(y.moveTo($,0),y.lineTo($,M)):(y.moveTo(0,$),y.lineTo(M,$)),y.stroke(),T.major&&T.label&&(i.value?y.fillText(T.label,$+2,11):(y.save(),y.translate(11,$+2),y.rotate(-Math.PI/2),y.fillText(T.label,0,0),y.restore()))}y.globalAlpha=1}function z(y,U,Y){const q=h.mmToPx(1)*(o.scale>0?o.scale:1),E=Math.round(o.originPx+U*q)+.5;E<=0||E>=o.viewportPx||(y.strokeStyle=Y,y.globalAlpha=.55,y.lineWidth=1,y.beginPath(),i.value?(y.moveTo(E,0),y.lineTo(E,h.RULER_THICKNESS)):(y.moveTo(0,E),y.lineTo(h.RULER_THICKNESS,E)),y.stroke(),y.globalAlpha=1)}e.watch(()=>[o.viewportPx,o.originPx,o.paperLengthMM,o.scale,o.cursorPx,o.orientation],g),e.onMounted(g),e.onBeforeUnmount(()=>{u&&cancelAnimationFrame(u)});let V=!1;function N(y){const U=r.value;if(!U)return null;const Y=U.getBoundingClientRect(),q=i.value?y.clientX-Y.left:y.clientY-Y.top;if(q<0||q>o.viewportPx)return null;const E=h.mmToPx(1)*(o.scale>0?o.scale:1);return(q-o.originPx)/E}function p(y){y.button===0&&(V=!0,y.preventDefault(),window.addEventListener("mousemove",ee),window.addEventListener("mouseup",Z),oe(y))}function S(y){const U=r.value;if(!U)return;const Y=U.getBoundingClientRect();a.value=i.value?y.clientX-Y.left:y.clientY-Y.top,g()}function O(){a.value=null,g()}function oe(y){const U=N(y);n("guide-dragging",U)}function ee(y){V&&oe(y)}function Z(y){if(!V)return;V=!1,window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",Z);const U=N(y);U!==null&&U>=0&&U<=o.paperLengthMM&&n("add-guide",c.value,U),n("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",Z)}),(y,U)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:r,class:e.normalizeClass(["pd-ruler",`is-${t.orientation}`]),style:e.normalizeStyle(m.value),onMousedown:p,onMousemove:S,onMouseleave:O},null,38))}}),Mt=pe(Ya,[["__scopeId","data-v-1e7d0633"]]),Xa={class:"canvas-scroll"},Xe=96/25.4,Za=e.defineComponent({__name:"CanvasArea",props:{templateData:{},elements:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},hasClipboard:{type:Boolean},guides:{},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","coordinate","add-guide","guide-move","guide-remove","zoom","clone-element"],setup(t,{expose:l,emit:o}){const n=t,i=o;function c(A,B){i("select",A,B)}const r=e.ref(null),a=e.computed(()=>h.getPaperDimensions(n.templateData).width),s=e.computed(()=>h.getPaperDimensions(n.templateData).height),m=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),u=e.reactive({x:null,y:null}),g=e.reactive({x:0,y:0}),d=e.computed(()=>({transform:`translate(${g.x}px, ${g.y}px)`}));function f(){const A=r.value,B=A?.querySelector(".hiprint-printPaper");if(!A||!B)return;const F=A.getBoundingClientRect(),ne=B.getBoundingClientRect(),ie=n.scale||1,ve=ne.width/h.mmToPx(a.value);m.paperScale=Math.abs(ve-ie)<.002?ie:ve,m.originX=ne.left-F.left-h.RULER_THICKNESS,m.originY=ne.top-F.top-h.RULER_THICKNESS,m.viewW=A.clientWidth-h.RULER_THICKNESS,m.viewH=A.clientHeight-h.RULER_THICKNESS}function z(){g.x=r.value?.scrollLeft??0,g.y=r.value?.scrollTop??0,f()}let V=null,N=0;function p(){cancelAnimationFrame(N);const A=performance.now()+220,B=()=>{f(),performance.now()<A&&(N=requestAnimationFrame(B))};N=requestAnimationFrame(B)}const S=e.ref(null);function O(A,B){S.value=B===null?null:{type:A,mm:B}}const oe=e.computed(()=>{const A=S.value,B=r.value?.querySelector(".hiprint-printPaper");if(!A||!B)return{};const F=B.getBoundingClientRect(),ne=F.width/h.mmToPx(a.value),ie=h.mmToPx(A.mm)*(ne>0?ne:n.scale||1);return A.type==="vertical"?{left:F.left+ie+"px",top:F.top+"px",height:F.height+"px"}:{left:F.left+"px",top:F.top+ie+"px",width:F.width+"px"}});function ee(A){const B=r.value?.querySelector(".hiprint-printPaper");if(!B)return;const F=B.getBoundingClientRect(),ne=n.scale||1,ie=h.pxToMm((A.clientX-F.left)/ne),ve=h.pxToMm((A.clientY-F.top)/ne);if(!(ie<0||ve<0))return{x:ie,y:ve}}function Z(A){const B=ee(A),F=A.dataTransfer?.getData("fieldData");if(F)try{const ie=JSON.parse(F);i("drop-field",ie,B);return}catch{}const ne=A.dataTransfer?.getData("elementType");ne&&i("drop-element",ne,B)}const y=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let U={x:0,y:0};function Y(A){return!A||!(A instanceof HTMLElement)?!1:!!(A===r.value||A.classList.contains("canvas-scroll")||A.classList.contains("hiprint-printPaper")||A.classList.contains("hiprint-printPaper-content")||A.classList.contains("zone-layer")||A.classList.contains("grid-bg")||A.classList.contains("watermark-layer"))}function q(A){const B=r.value,F=B?.querySelector(".hiprint-printPaper");if(!B||!F)return;const ne=B.getBoundingClientRect();u.x=A.clientX-ne.left-h.RULER_THICKNESS,u.y=A.clientY-ne.top-h.RULER_THICKNESS;const ie=F.getBoundingClientRect(),ve=n.scale||1,I=h.pxToMm((A.clientX-ie.left)/ve),H=h.pxToMm((A.clientY-ie.top)/ve);if(I<0||H<0){i("coordinate",null);return}i("coordinate",{x:I,y:H})}function E(){i("coordinate",null),u.x=null,u.y=null}function T(A,B,F,ne){const ie=r.value;if(!ie)return;const ve=Math.max(ne,Math.round(A)),I=Math.round((n.scale||1)*100);if(ve===I)return;const H=n.scale||1,k=ve/100/H,w=getComputedStyle(ie),R=parseFloat(w.paddingLeft)||0,ce=parseFloat(w.paddingTop)||0,fe=ie.scrollLeft+B-R,ye=ie.scrollTop+F-ce;i("zoom",ve-I),e.nextTick(()=>{const we=getComputedStyle(ie),xe=parseFloat(we.paddingLeft)||0,Le=parseFloat(we.paddingTop)||0;ie.scrollLeft=fe*k-B+xe,ie.scrollTop=ye*k-F+Le})}function b(A){if(!(A.ctrlKey||A.metaKey))return;A.preventDefault();const B=r.value;if(!B)return;const F=Math.round((n.scale||1)*100),ne=h.nextWheelScale(F,A.deltaY>0?-1:1);if(ne===F)return;const ie=B.getBoundingClientRect();T(ne,A.clientX-ie.left,A.clientY-ie.top,h.MIN_SCALE_PERCENT)}function $(A){const B=r.value;if(!B)return;const F=Math.round((n.scale||1)*100),ne=h.nextWheelScale(F,A);T(ne,B.clientWidth/2,B.clientHeight/2,h.MIN_SCALE_PERCENT)}function M(A){const B=r.value;if(!B)return;const F=B.querySelector(".hiprint-printPaper"),ne=F?.style.transition??"";F&&(F.style.transition="none"),T(A,B.clientWidth/2,B.clientHeight/2,h.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{F&&(F.style.transition=ne)})}function L(A){A.button!==2&&Y(A.target)&&(i("clear-selection"),U={x:A.clientX,y:A.clientY},y.visible=!0,y.x=A.clientX,y.y=A.clientY,y.w=0,y.h=0,window.addEventListener("mousemove",P),window.addEventListener("mouseup",X))}function J(){if(y.w<3||y.h<3)return[];const A=r.value?.querySelector(".hiprint-printPaper");if(!A)return[];const B=A.getBoundingClientRect(),F=n.scale||1,ne=y.x<U.x,ie=[];for(const ve of n.elements){if(ve.options.visible===!1||ve.options.locked)continue;const I=B.left+ve.options.left*Xe*F,H=B.top+ve.options.top*Xe*F,k=I+ve.options.width*Xe*F,w=H+ve.options.height*Xe*F,R=I<y.x+y.w&&k>y.x&&H<y.y+y.h&&w>y.y,ce=I>=y.x&&k<=y.x+y.w&&H>=y.y&&w<=y.y+y.h;(ne?ce:R)&&ie.push(ve.id)}return ie}function P(A){const B=A.clientX-U.x,F=A.clientY-U.y;y.x=B>=0?U.x:A.clientX,y.y=F>=0?U.y:A.clientY,y.w=Math.abs(B),y.h=Math.abs(F),i("preview",J())}function X(){window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",X);const A=J();i("preview",A),A.length>0?i("commit-preview"):i("clear-selection"),i("preview",[]),y.visible=!1}const re=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),le=e.ref(null),v=e.inject(Je,null);function x(A,B){if(!B&&!Y(A.target))return;B&&!v?.value.has(B)&&i("select",B,!1),re.targetId=B??null,re.visible=!0,re.x=A.clientX,re.y=A.clientY,re.flipX=0,re.flipY=0,e.nextTick(()=>{const ne=le.value;if(!ne)return;const ie=ne.getBoundingClientRect(),ve=4;A.clientX+ie.width+ve>window.innerWidth&&(re.flipX=-ie.width),A.clientY+ie.height+ve>window.innerHeight&&(re.flipY=-ie.height)}),window.removeEventListener("mousedown",G);const F=++K;e.nextTick(()=>{F===K&&window.addEventListener("mousedown",G)})}let K=0;function G(A){const B=le.value;B&&B.contains(A.target)||C()}function C(){re.visible=!1,window.removeEventListener("mousedown",G)}function D(){C(),n.hasClipboard&&i("paste")}function j(){C(),i("select-all")}function _(){C(),i("clear-selection")}function ae(A,B){C(),A==="copy"?i("copy"):A==="cut"?i("cut"):A==="paste"?D():A==="delete"?i("delete"):A==="move-layer"&&i("move-layer",B)}e.onMounted(()=>{e.nextTick(f),r.value&&typeof ResizeObserver<"u"&&(V=new ResizeObserver(f),V.observe(r.value))}),e.watch(()=>n.scale,p),e.watch([a,s],()=>e.nextTick(f));function ge(){const A=r.value;if(!A)return;let B=0,F=0,ne=0;const ie=performance.now()+800,ve=()=>{const{scrollWidth:I,scrollHeight:H}=A;if(I===F&&H===ne?B++:B=0,F=I,ne=H,B>=2||performance.now()>ie){const k=A.scrollWidth,w=A.scrollHeight,R=A.clientWidth,ce=A.clientHeight;A.scrollLeft=Math.max(0,(k-R)/2),A.scrollTop=Math.max(0,(w-ce)/2);return}requestAnimationFrame(ve)};requestAnimationFrame(ve)}return l({centerScroll:ge,fitToWindow:M,zoomByStep:$}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",X),window.removeEventListener("mousedown",G),V?.disconnect(),cancelAnimationFrame(N)}),(A,B)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:r,class:"canvas-area",onDragover:B[23]||(B[23]=e.withModifiers(()=>{},["prevent"])),onDrop:Z,onMousedown:L,onMousemove:q,onMouseleave:E,onWheel:b,onScroll:z,onContextmenu:e.withModifiers(x,["prevent"])},[e.createElementVNode("div",Xa,[e.createVNode(ja,{"template-data":t.templateData,"runtime-elements":t.elements,"design-mode":!0,"print-data":[],scale:t.scale,"show-grid":t.showGrid,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,guides:t.guides,onSelect:c,onGuideMove:B[0]||(B[0]=(F,ne)=>A.$emit("guide-move",F,ne)),onGuideRemove:B[1]||(B[1]=F=>A.$emit("guide-remove",F)),onDragStart:B[2]||(B[2]=F=>A.$emit("drag-start")),onDragStop:B[3]||(B[3]=F=>A.$emit("drag-stop")),onDblclickElement:B[4]||(B[4]=F=>A.$emit("dblclick-element",F)),onDblclickCell:B[5]||(B[5]=(F,ne,ie)=>A.$emit("dblclick-cell",F,ne,ie)),onContextmenu:B[6]||(B[6]=(F,ne)=>x(ne,F)),onZoneHeightChange:B[7]||(B[7]=(F,ne)=>A.$emit("zone-height-change",F,ne)),onZoneHeightCommit:B[8]||(B[8]=F=>A.$emit("zone-height-commit",F)),onCloneElement:B[9]||(B[9]=(F,ne)=>A.$emit("clone-element",F,ne))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"])]),t.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(d.value)},[B[24]||(B[24]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Mt,{orientation:"horizontal","viewport-px":m.viewW,"origin-px":m.originX,"paper-length-m-m":a.value,scale:m.paperScale,"cursor-px":u.x,onAddGuide:B[10]||(B[10]=(F,ne)=>i("add-guide",F,ne)),onGuideDragging:B[11]||(B[11]=F=>O("vertical",F))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Mt,{orientation:"vertical","viewport-px":m.viewH,"origin-px":m.originY,"paper-length-m-m":s.value,scale:m.paperScale,"cursor-px":u.y,onAddGuide:B[12]||(B[12]=(F,ne)=>i("add-guide",F,ne)),onGuideDragging:B[13]||(B[13]=F=>O("horizontal",F))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${S.value.type}`]),style:e.normalizeStyle(oe.value)},null,6)):e.createCommentVNode("",!0),y.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:y.x+"px",top:y.y+"px",width:y.w+"px",height:y.h+"px"})},null,4)):e.createCommentVNode("",!0),re.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:le,class:"context-menu",onMousedown:B[22]||(B[22]=e.withModifiers(()=>{},["stop"])),style:e.normalizeStyle({left:re.x+re.flipX+"px",top:re.y+re.flipY+"px"})},[re.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:B[14]||(B[14]=F=>ae("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[15]||(B[15]=F=>ae("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:B[16]||(B[16]=F=>ae("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:B[17]||(B[17]=F=>ae("delete"))},"删除"),B[25]||(B[25]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:B[18]||(B[18]=F=>ae("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[19]||(B[19]=F=>ae("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[20]||(B[20]=F=>ae("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[21]||(B[21]=F=>ae("move-layer","bottom"))},"置底")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:D},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:j},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:_},"取消选择")],64))],36)):e.createCommentVNode("",!0)],544))}}),Ja=pe(Za,[["__scopeId","data-v-427d3548"]]),Qa={class:"property-search"},_a=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(t,{emit:l}){const o=e.ref(""),n=l;function i(){n("search",o.value)}return(c,r)=>(e.openBlock(),e.createElementBlock("div",Qa,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[0]||(r[0]=a=>o.value=a),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:i},null,544),[[e.vModelText,o.value]])]))}}),ei=pe(_a,[["__scopeId","data-v-10ab6c84"]]),ti={class:"group-icon"},oi={class:"group-title"},ni={class:"expand-icon"},li={class:"group-content"},ai=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(t){const l=t,o=e.ref(l.defaultExpanded??!0),i={Document:"≡",Brush:"◧",Setting:"⚙"}[l.icon]||"•";function c(){o.value=!o.value,r()}function r(){const s=`property-group-${l.groupKey}`;try{localStorage.setItem(s,String(o.value))}catch{}}function a(){const s=`property-group-${l.groupKey}`;try{const m=localStorage.getItem(s);m!==null&&(o.value=m==="true")}catch{}}return e.onMounted(()=>{a()}),(s,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":o.value}])},[e.createElementVNode("div",{class:"group-header",onClick:c},[e.createElementVNode("span",ti,e.toDisplayString(e.unref(i)),1),e.createElementVNode("span",oi,e.toDisplayString(t.title),1),e.createElementVNode("span",ni,e.toDisplayString(o.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",li,[e.renderSlot(s.$slots,"default",{},void 0,!0)],512),[[e.vShow,o.value]])],2))}}),Be=pe(ai,[["__scopeId","data-v-2ba57031"]]),ii={class:"position-grid"},ri={class:"pd-field"},si={class:"pd-field"},di={class:"pd-field"},ci={class:"pd-field"},ui=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ii,[e.withDirectives(e.createElementVNode("div",ri,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(de,{modelValue:t.element.options.left,"onUpdate:modelValue":i[0]||(i[0]=c=>t.element.options.left=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-left")]]),e.withDirectives(e.createElementVNode("div",si,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(de,{modelValue:t.element.options.top,"onUpdate:modelValue":i[1]||(i[1]=c=>t.element.options.top=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-top")]]),e.withDirectives(e.createElementVNode("div",di,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(de,{modelValue:t.element.options.width,"onUpdate:modelValue":i[2]||(i[2]=c=>t.element.options.width=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-width")]]),e.withDirectives(e.createElementVNode("div",ci,[i[8]||(i[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(de,{modelValue:t.element.options.height,"onUpdate:modelValue":i[3]||(i[3]=c=>t.element.options.height=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-height")]])])],32)]),_:1}))}}),mi=pe(ui,[["__scopeId","data-v-bc364679"]]),pi=["data-field"],vi={class:"pd-label"},fi=["data-tip"],gi=["value"],hi=["value"],bi={key:0,value:"custom"},Ei={class:"pd-field","data-field":"ap-img-fit-scale"},yi={class:"pd-label"},ki=["data-tip"],Vi=["data-field"],Ni={class:"pd-label"},wi={key:0,class:"pd-crop-note"},Ci={key:1,class:"pd-crop-note"},Si={class:"pd-crop-preview"},xi=["src","alt"],Bi=e.defineComponent({__name:"CropAnchorField",props:{fieldKey:{},label:{},src:{default:""},modelValue:{default:void 0},widthMm:{},heightMm:{},fit:{default:void 0},scale:{default:void 0}},emits:["update:modelValue","update:scale"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>h.propertyTip(o.fieldKey)),c=h.propertyTip("ap-img-fit-scale"),r=e.computed(()=>h.resolveCropPreview(o.src)),a=e.ref(void 0);function s(E){const T=E.target;T.naturalWidth>0&&T.naturalHeight>0&&(a.value={width:T.naturalWidth,height:T.naturalHeight})}function m(){a.value=void 0}e.watch(()=>r.value.src,m);const u=e.computed(()=>h.parseCropAnchor(o.modelValue)),g=e.computed(()=>u.value.kind==="custom"),d=e.computed(()=>u.value.kind==="axes"?u.value.x:50),f=e.computed(()=>u.value.kind==="axes"?u.value.y:50),z=e.computed(()=>({widthMm:o.widthMm,heightMm:o.heightMm,naturalWidth:a.value?.width,naturalHeight:a.value?.height,fit:o.fit,scalePct:o.scale})),V=e.computed(()=>h.resolveCropTravel(z.value)),N=e.computed(()=>h.cropPresetOptions(V.value,d.value,f.value)),p=e.computed(()=>g.value?"custom":`${d.value},${f.value}`),S=e.computed(()=>h.cropAxisFields(V.value,d.value,f.value)),O=e.computed(()=>h.cropAxisNote(V.value,g.value));function oe(E,T){n("update:modelValue",h.buildCropAnchor(E,T))}function ee(E){const T=E.target.value;if(T==="custom")return;const[b,$]=T.split(",").map(Number);oe(b,$)}function Z(E,T){T!==void 0&&(E==="horizontal"?oe(T,f.value):oe(d.value,T))}function y(E){n("update:scale",E!==void 0&&E>h.CROP_SCALE_MIN?E:void 0)}const U=e.computed(()=>h.cropWindow(z.value,d.value,f.value));function Y(E){return`${Math.round(E*1e4)/1e4}%`}const q=e.computed(()=>U.value&&{left:Y(U.value.leftPct),top:Y(U.value.topPct),width:Y(U.value.widthPct),height:Y(U.value.heightPct)});return(E,T)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:"pd-field","data-field":t.fieldKey},[e.createElementVNode("span",vi,[e.createTextVNode(e.toDisplayString(t.label),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":i.value,"aria-label":"字段说明"},null,8,fi)]),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:p.value,onChange:ee},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,b=>(e.openBlock(),e.createElementBlock("option",{key:b.value,value:b.value},e.toDisplayString(b.label),9,hi))),128)),g.value?(e.openBlock(),e.createElementBlock("option",bi,"自定义(保留原值)")):e.createCommentVNode("",!0)],40,gi)],8,pi),e.createElementVNode("div",Ei,[e.createElementVNode("span",yi,[e.createTextVNode(e.toDisplayString(e.unref(h.CROP_SCALE_LABEL)),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(c),"aria-label":"字段说明"},null,8,ki)]),e.createVNode(de,{"model-value":t.scale,min:e.unref(h.CROP_SCALE_MIN),max:e.unref(h.CROP_SCALE_MAX),step:5,placeholder:"默认 100","onUpdate:modelValue":y},null,8,["model-value","min","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,b=>(e.openBlock(),e.createElementBlock("div",{class:"pd-field",key:b.name,"data-field":t.fieldKey},[e.createElementVNode("span",Ni,e.toDisplayString(b.label),1),e.createVNode(de,{"model-value":b.value,min:0,max:100,step:1,"onUpdate:modelValue":$=>Z(b.name,$)},null,8,["model-value","onUpdate:modelValue"])],8,Vi))),128)),O.value?(e.openBlock(),e.createElementBlock("p",wi,e.toDisplayString(O.value),1)):e.createCommentVNode("",!0),r.value.isSample?(e.openBlock(),e.createElementBlock("p",Ci,e.toDisplayString(e.unref(h.CROP_SAMPLE_NOTE)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Si,[(e.openBlock(),e.createElementBlock("img",{class:"pd-crop-thumb",key:r.value.src,src:r.value.src,alt:r.value.isSample?"示例图":"原图",onLoad:s,onError:m},null,40,xi)),U.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-crop-win",style:e.normalizeStyle(q.value)},null,4)):e.createCommentVNode("",!0)])],64))}}),Ot=pe(Bi,[["__scopeId","data-v-e9ea4c5a"]]),$i={class:"pd-field"},Di={class:"pd-field"},Ti={class:"pd-field"},Mi={class:"pd-field"},zi={class:"pd-radio-group",role:"radiogroup"},Ai={class:"pd-radio"},Pi={class:"pd-radio"},Ri={class:"pd-radio"},Li={class:"pd-radio"},Ii={class:"pd-field"},Ui={class:"pd-radio-group",role:"radiogroup"},Fi={class:"pd-radio"},Oi={class:"pd-radio"},Hi={class:"pd-radio"},Wi={class:"color-row"},Gi={class:"pd-field"},qi={class:"pd-field"},Ki={class:"pd-field"},ji={class:"pd-field"},Yi={class:"pd-field"},Xi=["value"],Zi={key:0,class:"pd-field"},Ji={key:1,class:"pd-field"},Qi={class:"pd-label"},_i=["data-tip"],er={class:"pd-field"},tr=["checked"],or={class:"pd-field"},nr={class:"pd-label"},lr=["data-tip"],ar=["value"],ir={key:0},rr={key:2,class:"pd-empty"},sr=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(g){return l.searching?l.matchedKeys?.has(g)??!0:!0}const n=e.computed(()=>l.element.printElementType.type==="table"),i=e.computed(()=>l.element.printElementType.type==="longText"),c=e.computed(()=>l.element.printElementType.type==="image"),r=h.propertyTip("ap-long-text-indent"),a=h.propertyTip("ap-img-fit"),s=e.computed(()=>{const g=String(l.element.options.src??"");return g.includes("{")?String(h.evaluateTemplate(g,h.DEFAULT_DEMO_DATA)):g}),m=e.computed(()=>h.resolveElementTextFit(l.element.printElementType.type||"text",l.element.options));function u(g){l.element.options.textFit=g.target.value}return(g,d)=>(e.openBlock(),e.createBlock(Be,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:d[20]||(d[20]=e.withModifiers(()=>{},["prevent"]))},[t.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",$i,[d[21]||(d[21]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(kt,{modelValue:t.element.options.fontFamily,"onUpdate:modelValue":d[0]||(d[0]=f=>t.element.options.fontFamily=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",Di,[d[22]||(d[22]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(de,{modelValue:t.element.options.fontSize,"onUpdate:modelValue":d[1]||(d[1]=f=>t.element.options.fontSize=f),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",Ti,[d[24]||(d[24]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":d[2]||(d[2]=f=>t.element.options.fontWeight=f),style:{width:"100%"}},[...d[23]||(d[23]=[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,t.element.options.fontWeight]])],512),[[e.vShow,o("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",Mi,[d[29]||(d[29]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",zi,[e.createElementVNode("label",Ai,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[3]||(d[3]=f=>t.element.options.textAlign=f),value:"left"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[25]||(d[25]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Pi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[4]||(d[4]=f=>t.element.options.textAlign=f),value:"center"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[26]||(d[26]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ri,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[5]||(d[5]=f=>t.element.options.textAlign=f),value:"right"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[27]||(d[27]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Li,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[6]||(d[6]=f=>t.element.options.textAlign=f),value:"justify"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[28]||(d[28]=e.createElementVNode("span",null,"两端",-1))])])],512),[[e.vShow,o("ap-align")]]),e.withDirectives(e.createElementVNode("div",Ii,[d[33]||(d[33]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",Ui,[e.createElementVNode("label",Fi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[7]||(d[7]=f=>t.element.options.verticalAlign=f),value:"top"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[30]||(d[30]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",Oi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[8]||(d[8]=f=>t.element.options.verticalAlign=f),value:"middle"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[31]||(d[31]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Hi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[9]||(d[9]=f=>t.element.options.verticalAlign=f),value:"bottom"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[32]||(d[32]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,o("ap-vertical-align")]]),e.createElementVNode("div",Wi,[e.withDirectives(e.createElementVNode("div",Gi,[d[34]||(d[34]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.color,"onUpdate:modelValue":d[10]||(d[10]=f=>t.element.options.color=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-color")]]),e.withDirectives(e.createElementVNode("div",qi,[d[35]||(d[35]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":d[11]||(d[11]=f=>t.element.options.backgroundColor=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",Ki,[d[36]||(d[36]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(de,{modelValue:t.element.options.lineHeight,"onUpdate:modelValue":d[12]||(d[12]=f=>t.element.options.lineHeight=f),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,o("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",ji,[d[37]||(d[37]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(de,{modelValue:t.element.options.letterSpacing,"onUpdate:modelValue":d[13]||(d[13]=f=>t.element.options.letterSpacing=f),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,o("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",Yi,[d[39]||(d[39]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:m.value,style:{width:"100%"},onChange:u},[...d[38]||(d[38]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Xi)],512),[[e.vShow,o("ap-text-fit")]]),m.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",Zi,[d[40]||(d[40]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(de,{"model-value":t.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":d[14]||(d[14]=f=>t.element.options.shrinkMinFontSize=f??void 0)},null,8,["model-value"])],512)),[[e.vShow,o("ap-shrink-min")]]):e.createCommentVNode("",!0),i.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ji,[e.createElementVNode("span",Qi,[d[41]||(d[41]=e.createTextVNode("首行缩进 (字符)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(r),"aria-label":"字段说明"},null,8,_i)]),e.createVNode(de,{modelValue:t.element.options.longTextIndent,"onUpdate:modelValue":d[15]||(d[15]=f=>t.element.options.longTextIndent=f),min:0,max:10,placeholder:"默认 0"},null,8,["modelValue"])],512)),[[e.vShow,o("ap-long-text-indent")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",er,[d[42]||(d[42]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:t.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:d[16]||(d[16]=f=>t.element.options.wordWrap=f.target.checked?void 0:!1)},null,40,tr)],512),[[e.vShow,o("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",or,[e.createElementVNode("span",nr,[d[43]||(d[43]=e.createTextVNode("缩放模式",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(a),"aria-label":"字段说明"},null,8,lr)]),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":d[17]||(d[17]=f=>t.element.options.fit=f),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.IMAGE_FIT_OPTIONS),f=>(e.openBlock(),e.createElementBlock("option",{key:f.value,value:f.value},e.toDisplayString(f.label),9,ar))),128))],512),[[e.vModelSelect,t.element.options.fit]])],512),[[e.vShow,o("ap-img-fit")]]),t.element.options.fit==="cover"?e.withDirectives((e.openBlock(),e.createElementBlock("div",ir,[e.createVNode(Ot,{"field-key":"ap-img-object-position",label:"裁剪锚点",src:s.value,fit:t.element.options.fit,"width-mm":t.element.options.width||0,"height-mm":t.element.options.height||0,scale:t.element.options.fitScale,"model-value":t.element.options.objectPosition,"onUpdate:modelValue":d[18]||(d[18]=f=>t.element.options.objectPosition=f),"onUpdate:scale":d[19]||(d[19]=f=>t.element.options.fitScale=f)},null,8,["src","fit","width-mm","height-mm","scale","model-value"])],512)),[[e.vShow,o("ap-img-object-position")]]):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),!t.isTextType&&!c.value&&!n.value?(e.openBlock(),e.createElementBlock("p",rr,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),dr=pe(sr,[["__scopeId","data-v-0e474454"]]),cr={class:"pd-field"},ur=["value"],mr={class:"pd-field"},pr=["value"],vr={class:"pd-hint"},fr={class:"pd-field"},gr={class:"pd-field"},hr=["checked"],br={class:"pd-field"},Er={class:"pd-field"},yr=["value"],kr={class:"pd-field"},Vr={class:"pd-label"},Nr=["data-tip"],wr={key:2,class:"pd-hint"},Cr={key:3,class:"pd-field"},Sr=["value"],xr=["value"],Br={class:"pd-field"},$r={class:"pd-field"},Dr=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=h.propertyTip("cd-quiet-zone"),n=t,i=l,c=e.computed(()=>n.element.printElementType.type==="barcode"),r=e.computed(()=>n.element.printElementType.type==="qrcode"),a=e.computed(()=>(n.element.options.barcodeType||"CODE128").toUpperCase()),s=e.computed(()=>n.element.options.printerDpi?String(n.element.options.printerDpi):""),m=e.computed(()=>!!n.element.options.printerDpi),u=e.computed(()=>c.value&&m.value);function g(N){const p=Number(N.target.value);n.element.options.printerDpi=p>0?p:void 0,V()}function d(N){const p=N.target.value;n.element.options.barcodeType=p==="CODE128"?void 0:p,V()}function f(N){n.element.options.fit=N.target.value||void 0,V()}function z(N){return n.searching?n.matchedKeys?.has(N)??!0:!0}function V(){i("change")}return(N,p)=>(e.openBlock(),e.createBlock(Be,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:p[7]||(p[7]=e.withModifiers(()=>{},["prevent"]))},[c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",cr,[p[9]||(p[9]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:a.value,onChange:d},[...p[8]||(p[8]=[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,ur)],512),[[e.vShow,z("cd-type")]]),e.withDirectives(e.createElementVNode("div",mr,[p[11]||(p[11]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:s.value,onChange:g},[...p[10]||(p[10]=[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,pr)],512),[[e.vShow,z("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",vr,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,z("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",fr,[p[12]||(p[12]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(de,{"model-value":t.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":p[0]||(p[0]=S=>{t.element.options.barWidth=S,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(u.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,z("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",gr,[p[13]||(p[13]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:t.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:p[1]||(p[1]=S=>{t.element.options.hideTitle=S.target.checked?void 0:!0,V()})},null,40,hr)],512),[[e.vShow,z("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",br,[p[14]||(p[14]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(de,{"model-value":t.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":p[2]||(p[2]=S=>{t.element.options.fontSize=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-font-size")]])],64)):r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Er,[p[16]||(p[16]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(t.element.options.qrCodeLevel??"M"),onChange:p[3]||(p[3]=S=>{t.element.options.qrCodeLevel=S.target.value,V()})},[...p[15]||(p[15]=[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,yr)],512),[[e.vShow,z("cd-ec-level")]]),e.withDirectives(e.createElementVNode("div",kr,[e.createElementVNode("span",Vr,[p[17]||(p[17]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,Nr)]),e.createVNode(de,{"model-value":t.element.options.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":p[4]||(p[4]=S=>{t.element.options.qrQuietZone=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-quiet-zone")]])],64)):e.createCommentVNode("",!0),p[21]||(p[21]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),c.value?(e.openBlock(),e.createElementBlock("p",wr,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),c.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",Cr,[p[18]||(p[18]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:t.element.options.fit||"contain",onChange:f},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.IMAGE_FIT_OPTIONS),S=>(e.openBlock(),e.createElementBlock("option",{key:S.value,value:S.value},e.toDisplayString(S.label),9,xr))),128))],40,Sr)],512)),[[e.vShow,z("cd-fit")]]),e.withDirectives(e.createElementVNode("div",Br,[p[19]||(p[19]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":p[5]||(p[5]=S=>{t.element.options.maxWidth=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",$r,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":p[6]||(p[6]=S=>{t.element.options.maxHeight=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-max-height")]])],32)]),_:1}))}}),Tr={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},Mr={class:"pd-dialog-header"},zr={class:"expression-editor"},Ar={class:"ee-nav"},Pr={class:"ee-nav-tabs"},Rr={class:"ee-content"},Lr={class:"ee-content-search"},Ir=["placeholder"],Ur={class:"ee-content-list"},Fr={class:"ee-field-group-icon"},Or=["onDblclick"],Hr={class:"ee-field-info"},Wr={class:"ee-item-label"},Gr={class:"ee-item-key"},qr={key:0,class:"pd-empty"},Kr=["onDblclick"],jr={class:"ee-field-info"},Yr={class:"ee-item-label"},Xr={class:"ee-item-key"},Zr={class:"ee-func-group"},Jr=["onDblclick"],Qr={class:"ee-field-info"},_r={class:"ee-item-label"},es={class:"ee-item-key"},ts={class:"ee-func-group"},os=["onDblclick"],ns={class:"ee-field-info"},ls={class:"ee-item-label"},as={class:"ee-item-key"},is={class:"ee-func-group"},rs=["onDblclick"],ss={class:"ee-field-info"},ds={class:"ee-item-label"},cs={class:"ee-item-key"},us={class:"ee-editor"},ms={class:"ee-editor-section"},ps={class:"ee-editor-section"},vs={class:"pd-dialog-footer"},fs=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(t,{emit:l}){const o=t,n=l,i=e.computed({get:()=>o.modelValue,set:q=>n("update:modelValue",q)}),c=e.ref("field"),r=e.computed(()=>{switch(c.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),a=e.ref(""),s=e.computed(()=>h.filterGroups(h.groupFields(o.fields??[]),a.value));e.watch(i,q=>{q&&(p.value=o.expression||"")});function m(q){const{insideParens:E}=d();U(E?q.fieldKey:`{${q.fieldKey}}`)}function u(q){const{insideParens:E}=d();U(E?q.template.replace(/^\{|\}$/g,""):q.template)}function g(q){const{insideBlock:E}=d(),T=E?q.template:`{${q.template}}`,b=T.indexOf("(")+1;U(T,b)}function d(){const E=S.value?.selectionStart??p.value.length,T=p.value.substring(0,E);let b=!1;const $=T.lastIndexOf("{");$!==-1&&!T.slice($+1).includes("}")&&(b=!0);let M=!1;const L=T.lastIndexOf("(");return L!==-1&&!T.slice(L+1).includes(")")&&(M=!0),{insideBlock:b,insideParens:M}}const f=e.computed(()=>{if(!a.value.trim())return Z;const q=a.value.trim().toLowerCase();return Z.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),z=e.computed(()=>{if(!a.value.trim())return O;const q=a.value.trim().toLowerCase();return O.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),V=e.computed(()=>{if(!a.value.trim())return oe;const q=a.value.trim().toLowerCase();return oe.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),N=e.computed(()=>{if(!a.value.trim())return ee;const q=a.value.trim().toLowerCase();return ee.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),p=e.ref(o.expression||""),S=e.ref(null);e.watch(()=>o.expression,q=>{p.value=q||""});const O=[{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()"}],oe=[{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()"}],ee=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],Z=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],y=e.computed(()=>{if(!p.value.trim())return"(输入表达式后预览)";try{const q={...h.DEFAULT_DEMO_DATA,...be.resolveSystemVariables()},E=h.evaluateTemplate(p.value,q);return E==null?"(无法计算)":String(E)}catch{return"(表达式错误)"}});function U(q,E=q.length){const T=S.value;if(!T){p.value+=q;return}const b=T.selectionStart,$=T.selectionEnd,M=p.value.substring(0,b),L=p.value.substring($);p.value=M+q+L;const J=b+E;e.nextTick(()=>{T.focus(),T.selectionStart=T.selectionEnd=J})}function Y(){n("update:expression",p.value),i.value=!1}return(q,E)=>i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:E[7]||(E[7]=e.withKeys(T=>i.value=!1,["esc"]))},[e.createElementVNode("section",Tr,[e.createElementVNode("header",Mr,[E[8]||(E[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:E[0]||(E[0]=T=>i.value=!1)},"×")]),e.createElementVNode("div",zr,[e.createElementVNode("div",Ar,[E[9]||(E[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",Pr,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="field"}]),onClick:E[1]||(E[1]=T=>c.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="variable"}]),onClick:E[2]||(E[2]=T=>c.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="function"}]),onClick:E[3]||(E[3]=T=>c.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",Rr,[e.createElementVNode("div",Lr,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":E[4]||(E[4]=T=>a.value=T),placeholder:r.value},null,8,Ir),[[e.vModelText,a.value]])]),e.createElementVNode("div",Ur,[c.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.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",Fr,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,b=>(e.openBlock(),e.createElementBlock("div",{key:b.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:T.key?"22px":"10px"}),onDblclick:$=>m(b)},[e.createElementVNode("div",Hr,[e.createElementVNode("span",Wr,e.toDisplayString(b.fieldLabel),1),e.createElementVNode("span",Gr,e.toDisplayString(b.fieldKey),1)])],44,Or))),128))],64))),128)),s.value.length===0?(e.openBlock(),e.createElementBlock("p",qr,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),c.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(f.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>u(T)},[e.createElementVNode("div",jr,[e.createElementVNode("span",Yr,e.toDisplayString(T.label),1),e.createElementVNode("span",Xr,e.toDisplayString(T.template),1)])],40,Kr))),128)):e.createCommentVNode("",!0),c.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Zr,[E[10]||(E[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",Qr,[e.createElementVNode("span",_r,e.toDisplayString(T.label),1),e.createElementVNode("span",es,e.toDisplayString(T.name)+"()",1)])],40,Jr))),128))]),e.createElementVNode("div",ts,[E[11]||(E[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",ns,[e.createElementVNode("span",ls,e.toDisplayString(T.label),1),e.createElementVNode("span",as,e.toDisplayString(T.name)+"()",1)])],40,os))),128))]),e.createElementVNode("div",is,[E[12]||(E[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",ss,[e.createElementVNode("span",ds,e.toDisplayString(T.label),1),e.createElementVNode("span",cs,e.toDisplayString(T.name)+"()",1)])],40,rs))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",us,[e.createElementVNode("div",ms,[E[13]||(E[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:S,"onUpdate:modelValue":E[5]||(E[5]=T=>p.value=T),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,p.value]])]),e.createElementVNode("div",ps,[E[14]||(E[14]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":y.value==="(表达式错误)"}])},e.toDisplayString(y.value),3)]),E[15]||(E[15]=e.createStaticVNode('<div class="ee-help-section" data-v-f3837718><div class="ee-help-title" data-v-f3837718>帮助信息</div><div class="ee-help-grid" data-v-f3837718><div class="ee-help-card ee-help-field" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>输入方式</div><div class="ee-help-card-content" data-v-f3837718> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-f3837718> 静态数据直接输入即可,如:供应商名称<br data-v-f3837718> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-f3837718> 示例:{SUM(supplier.name)}<br data-v-f3837718> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>函数使用</div><div class="ee-help-card-content" data-v-f3837718> SUM(字段) - 求和<br data-v-f3837718> AVG(字段) - 平均值<br data-v-f3837718> COUNT(字段) - 计数<br data-v-f3837718> IF(条件, 真值, 假值) - 条件判断<br data-v-f3837718> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-f3837718> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>系统变量</div><div class="ee-help-card-content" data-v-f3837718> {pageIndex} - 当前页码<br data-v-f3837718> {totalPages} - 总页数<br data-v-f3837718> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>示例</div><div class="ee-help-card-content" data-v-f3837718> 静态文本:供应商名称<br data-v-f3837718> 动态字段:{supplier.name}<br data-v-f3837718> 函数调用:{SUM(amount)}<br data-v-f3837718> 条件判断:{IF(amount>1000, "大单", "小单")}<br data-v-f3837718> 运算并修约:{ROUND(qty * price, 2)} </div></div></div></div>',1))])]),e.createElementVNode("footer",vs,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:E[6]||(E[6]=T=>i.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:Y},"确定")])])],32)):e.createCommentVNode("",!0)}}),Qe=pe(fs,[["__scopeId","data-v-f3837718"]]),gs={class:"pd-field"},hs={class:"pd-label"},bs=["value","placeholder"],Es=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=l,n=e.ref(!1);function i(){n.value=!0}return(c,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",gs,[e.createElementVNode("span",hs,e.toDisplayString(t.descriptor.label),1),e.createElementVNode("input",{value:t.modelValue,class:"pd-input",placeholder:t.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:r[0]||(r[0]=a=>o("update:modelValue",a.target.value)),onDblclick:i},null,40,bs)]),e.createVNode(Qe,{modelValue:n.value,"onUpdate:modelValue":r[1]||(r[1]=a=>n.value=a),fields:t.fields,expression:t.modelValue,"onUpdate:expression":r[2]||(r[2]=a=>o("update:modelValue",a))},null,8,["modelValue","fields","expression"])],64))}}),ys={class:"pd-field"},ks=["value"],Vs=["value"],Ns={class:"pd-field"},ws={class:"pd-field"},Cs={class:"pd-field"},Ss={class:"pd-field"},xs={style:{width:"60px"}},Bs=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(t){const l=t,o=e.inject(He,null),n=e.computed(()=>l.fields.filter(r=>r.fieldType==="list").map(r=>({label:r.fieldLabel,value:r.fieldKey})));function i(r){l.element.options.dataSource=r||void 0,o?.recordHistory()}function c(r,a){if(a===void 0)return;const s=l.element.options.tableColWidths,m=o?.maxTableWidth.value??1/0,u=s.reduce((g,d,f)=>f===r?g:g+d,0);if(u+a>m){const g=Math.max(5,Math.round((m-u)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${m}mm,列${r+1} 已调整为 ${g}mm`),s[r]=g}else s[r]=a;h.syncTableElementSize(l.element.options),o?.recordHistory()}return(r,a)=>(e.openBlock(),e.createBlock(Be,{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",ys,[a[5]||(a[5]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:t.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:a[0]||(a[0]=s=>i(s.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,s=>(e.openBlock(),e.createElementBlock("option",{key:s.value,value:s.value},e.toDisplayString(s.label),9,Vs))),128))],40,ks)]),e.createElementVNode("div",Ns,[a[6]||(a[6]=e.createElementVNode("span",{class:"pd-label"},"默认字号 (pt)",-1)),e.createVNode(de,{modelValue:t.element.options.tableDefaultFontSize,"onUpdate:modelValue":a[1]||(a[1]=s=>t.element.options.tableDefaultFontSize=s),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",ws,[a[7]||(a[7]=e.createElementVNode("span",{class:"pd-label"},"默认文字颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.tableDefaultColor,"onUpdate:modelValue":a[2]||(a[2]=s=>t.element.options.tableDefaultColor=s)},null,8,["modelValue"])]),e.createElementVNode("div",Cs,[a[8]||(a[8]=e.createElementVNode("span",{class:"pd-label"},"默认内边距 (mm)",-1)),e.createVNode(de,{modelValue:t.element.options.tableDefaultPadding,"onUpdate:modelValue":a[3]||(a[3]=s=>t.element.options.tableDefaultPadding=s),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",Ss,[a[9]||(a[9]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.element.options.tableColWidths,(s,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:"col-width-row"},[e.createElementVNode("span",xs,"列"+e.toDisplayString(m+1),1),e.createVNode(de,{"model-value":s,min:5,max:200,"onUpdate:modelValue":u=>c(m,u)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),$s=pe(Bs,[["__scopeId","data-v-b5fdc7ff"]]),Ds={class:"border-row"},Ts={class:"pd-field"},Ms={class:"pd-field"},zs={class:"pd-field"},As=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[3]||(i[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Ds,[e.withDirectives(e.createElementVNode("div",Ts,[i[4]||(i[4]=e.createElementVNode("span",{class:"pd-label"},"边框宽度",-1)),e.createVNode(de,{modelValue:t.element.options.borderWidth,"onUpdate:modelValue":i[0]||(i[0]=c=>t.element.options.borderWidth=c),min:0,max:20,step:.25},null,8,["modelValue"])],512),[[e.vShow,o("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",Ms,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"边框颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.borderColor,"onUpdate:modelValue":i[1]||(i[1]=c=>t.element.options.borderColor=c)},null,8,["modelValue"])],512),[[e.vShow,o("bb-border-color")]])]),e.withDirectives(e.createElementVNode("div",zs,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":i[2]||(i[2]=c=>t.element.options.backgroundColor=c)},null,8,["modelValue"])],512),[[e.vShow,o("bb-bg-color")]])],32)]),_:1}))}}),Ps=pe(As,[["__scopeId","data-v-e0e6d714"]]),Rs={class:"advanced-row"},Ls={class:"pd-field"},Is={class:"pd-field"},Us={class:"pd-field"},Fs={class:"pd-field"},Os=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Rs,[e.withDirectives(e.createElementVNode("div",Ls,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"锁定",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":i[0]||(i[0]=c=>t.element.options.locked=c)},null,512),[[e.vModelCheckbox,t.element.options.locked]])],512),[[e.vShow,o("ad-locked")]]),e.withDirectives(e.createElementVNode("div",Is,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"每页重复",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":i[1]||(i[1]=c=>t.element.options.fixed=c)},null,512),[[e.vModelCheckbox,t.element.options.fixed]])],512),[[e.vShow,o("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",Us,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"层级",-1)),e.createVNode(de,{modelValue:t.element.options.zIndex,"onUpdate:modelValue":i[2]||(i[2]=c=>t.element.options.zIndex=c),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,o("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",Fs,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:i[3]||(i[3]=c=>n.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,o("ad-delete")]])],32)]),_:1}))}}),Hs=pe(Os,[["__scopeId","data-v-14924be2"]]),Ws={key:0,class:"pd-field"},Gs=["checked"],qs={class:"pd-field"},Ks=["checked"],js={class:"pd-field"},Ys=["checked"],zt=e.defineComponent({__name:"PaginationGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="table"),n=e.computed({get:()=>l.element.options.tablePagination?.enabled??!0,set:()=>{}});function i(u){l.element.options.tablePagination={enabled:u}}const c=e.computed({get:()=>l.element.options.pagination?.pageable??!0,set:()=>{}}),r=e.computed({get:()=>l.element.options.pagination?.keepWithNext??!1,set:()=>{}});function a(u){l.element.options.pagination={pageable:u,keepWithNext:r.value}}function s(u){l.element.options.pagination={pageable:c.value,keepWithNext:u}}function m(u){return l.searching?l.matchedKeys?.has(u)??!0:!0}return(u,g)=>(e.openBlock(),e.createBlock(Be,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:g[3]||(g[3]=e.withModifiers(()=>{},["prevent"]))},[o.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ws,[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]=d=>i(d.target.checked))},null,40,Gs)],512)),[[e.vShow,m("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",qs,[g[5]||(g[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:c.value,onChange:g[1]||(g[1]=d=>a(d.target.checked))},null,40,Ks)],512),[[e.vShow,m("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",js,[g[6]||(g[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:r.value,onChange:g[2]||(g[2]=d=>s(d.target.checked))},null,40,Ys)],512),[[e.vShow,m("pg-keep-with-next")]])],64))],32)]),_:1}))}}),Xs={class:"image-content-upload"},Zs=["disabled"],Js=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),c=e.inject(ft,e.computed(()=>{})),r=e.computed(()=>o.disabled||i.value||!c.value);async function a(s){const m=s.target,u=m.files?.[0];if(u){if(!u.type.startsWith("image/")){alert("仅支持上传图片文件"),m.value="";return}if(!c.value){alert("图片上传能力未配置"),m.value="";return}i.value=!0;try{const g=await c.value(u);g?n("success",g):alert("图片上传失败")}catch(g){alert(g instanceof Error?g.message:"图片上传失败")}finally{i.value=!1,m.value=""}}}return(s,m)=>(e.openBlock(),e.createElementBlock("div",Xs,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:r.value}])},[m[0]||(m[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(i.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:r.value,onChange:a},null,40,Zs)],2),m[1]||(m[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),Qs=pe(Js,[["__scopeId","data-v-b730e8e6"]]),_s={class:"pd-field"},ed=["value"],td={class:"pd-field"},od={key:0,class:"pd-field"},nd=["checked"],ld=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(t){const l=t,o=e.inject(He),n=e.computed(()=>l.element.options.tableRows[l.selection.r1]);function i(a){const s=h.setRowType(l.element.options.tableRows,l.selection.r1,a);if(s){alert(s);return}o.recordHistory()}function c(a){a!==void 0&&(n.value.height=a,h.syncTableElementSize(l.element.options),o.recordHistory())}function r(a){h.setHeaderRepeat(l.element.options.tableRows,a),o.recordHistory()}return(a,s)=>(e.openBlock(),e.createBlock(Be,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:s[2]||(s[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",_s,[s[4]||(s[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:n.value.type,class:"pd-select",style:{width:"100%"},onChange:s[0]||(s[0]=m=>i(m.target.value))},[...s[3]||(s[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,ed)]),e.createElementVNode("div",td,[s[5]||(s[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(de,{"model-value":n.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":c},null,8,["model-value"])]),n.value.type==="header"?(e.openBlock(),e.createElementBlock("div",od,[s[6]||(s[6]=e.createElementVNode("span",{class:"pd-label",title:"多级表头作为一个结构整体重复,勾选后表头区所有行都会在每页顶部重复"},"表头每页重复",-1)),e.createElementVNode("input",{checked:n.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:s[1]||(s[1]=m=>r(!!m.target.checked))},null,40,nd)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),ad={class:"pd-field"},id={class:"pd-radio-group",role:"radiogroup"},rd={class:"pd-radio"},sd=["checked"],dd={class:"pd-radio"},cd=["checked"],ud={class:"pd-radio"},md=["checked"],pd={class:"pd-radio"},vd=["checked"],fd={key:0,class:"pd-field"},gd=["value"],hd={key:1,class:"pd-field"},bd=["checked"],Ed={key:2,class:"pd-field"},yd={key:3,class:"pd-hint"},kd={key:4,class:"pd-field"},Vd={key:5,class:"pd-field"},Nd=["value"],wd={key:6,class:"pd-hint"},Cd={key:7,class:"pd-field"},Sd=["value"],xd={key:8,class:"pd-field"},Bd={class:"pd-label"},$d=["data-tip"],Dd={key:9,class:"pd-hint"},Td={key:10,class:"pd-field"},Md=["value"],zd=["value"],Ad={key:11,class:"pd-cell-anchor"},Pd={key:12,class:"pd-field"},Rd={key:13,class:"pd-field"},Ld={class:"pd-field"},Id=["value"],Ud={class:"pd-field"},Fd={class:"pd-radio-group",role:"radiogroup"},Od={class:"pd-radio"},Hd=["checked"],Wd={class:"pd-radio"},Gd=["checked"],qd={class:"pd-radio"},Kd=["checked"],jd={class:"pd-radio"},Yd=["checked"],Xd={class:"pd-field"},Zd={class:"pd-radio-group",role:"radiogroup"},Jd={class:"pd-radio"},Qd=["checked"],_d={class:"pd-radio"},ec=["checked"],tc={class:"pd-radio"},oc=["checked"],nc={class:"cell-style-grid"},lc={class:"pd-field cell-font-field"},ac={class:"pd-field"},ic={class:"pd-field"},rc=["checked"],sc={class:"pd-field"},dc={class:"pd-field"},cc={class:"border-style-row"},uc={style:{width:"112px","flex-shrink":"0"}},mc={class:"pd-button-group border-presets"},pc={class:"pd-checkbox-group"},vc={class:"pd-checkbox"},fc={class:"pd-checkbox"},gc={class:"pd-checkbox"},hc={class:"pd-checkbox"},bc={class:"pd-field"},Ec={class:"pd-field"},yc=["checked"],kc={key:14,class:"pd-field"},Vc=["value"],Nc={key:15,class:"pd-field"},wc={class:"merge-btns"},Cc=["disabled","title"],Sc=["disabled"],xc=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(t,{expose:l}){const o=h.propertyTip("cd-quiet-zone"),n=t,i=e.inject(He),c=e.computed(()=>n.element.options.tableRows),r=e.computed(()=>h.findMainCell(c.value,n.selection.r1,n.selection.c1)),a=e.computed(()=>c.value[r.value.r].cells[r.value.c]),s=e.computed(()=>{const le=a.value,v=n.element.options.tableColWidths??[],x=n.element.options.tableDefaultPadding??1;return{width:h.cellFitWidthMm(v,r.value.c,le,x),height:h.cellFitCapMm(c.value,r.value.r,le,x)}}),m=e.computed(()=>{const le=String(a.value.formatter??"");return le.includes("{")?String(h.evaluateTemplate(le,h.DEFAULT_DEMO_DATA)):le}),u=e.ref(!1),g=e.ref(""),d=e.computed(()=>a.value.cellType==="barcode"),f=e.computed(()=>a.value.cellType==="qrcode"),z=e.computed(()=>a.value.cellType==="image"),V=e.computed(()=>d.value&&!!a.value.printerDpi),N=e.computed(()=>!d.value&&!f.value&&!z.value),p=e.computed(()=>h.resolveCellTextFit(a.value));function S(le){const v=le.target.value;Y(x=>{x.textFit=v})}function O(le){Y(v=>{v.align=le})}function oe(le){Y(v=>{v.valign=le})}function ee(le){const v=Number(le);Y(x=>{x.printerDpi=v>0?v:void 0})}function Z(le){Y(v=>{v.cellType=le==="text"?void 0:le,le!=="barcode"&&(v.barcodeType=void 0,v.showBarcodeText=void 0,v.printerDpi=void 0),le!=="qrcode"&&(v.qrCodeLevel=void 0,v.qrQuietZone=void 0)})}function y(){g.value=a.value.formatter||"",u.value=!0}function U(le){Y(v=>{v.formatter=le||void 0})}function Y(le){const v=n.selection;for(let x=v.r1;x<=v.r2;x++)for(let K=v.c1;K<=v.c2;K++){const G=c.value[x].cells[K];G.merged||le(G)}i.recordHistory()}const q=e.ref("solid"),E=e.ref(.75),T=e.ref("#333333"),b=e.ref([]);function $(){return{width:E.value,style:q.value,color:T.value}}function M(le){h.applyBorderPreset(c.value,n.selection,le,$()),i.recordHistory()}function L(le){const v=le.target,x=new Set(b.value);v.checked?x.add(v.value):x.delete(v.value),b.value=[...x];const K=$();Y(G=>{const C={...G.borders??{}};for(const D of["top","right","bottom","left"])x.has(D)?C[D]={...K}:delete C[D];G.borders=C})}const J=e.computed(()=>h.canMergeReason(c.value,n.selection)),P=e.computed(()=>{const le=n.selection;for(let v=le.r1;v<=le.r2;v++)for(let x=le.c1;x<=le.c2;x++){const K=c.value[v].cells[x];if(!K.merged&&((K.rowspan??1)>1||(K.colspan??1)>1))return!0}return!1});function X(){h.mergeCells(c.value,n.selection),i.recordHistory()}function re(){h.splitCells(c.value,n.selection),i.recordHistory()}return l({openFormatterEditor:y}),(le,v)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Be,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:v[47]||(v[47]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ad,[v[53]||(v[53]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",id,[e.createElementVNode("label",rd,[e.createElementVNode("input",{type:"radio",value:"text",checked:(a.value.cellType||"text")==="text",onChange:v[0]||(v[0]=x=>Z(x.target.value))},null,40,sd),v[49]||(v[49]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",dd,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:a.value.cellType==="barcode",onChange:v[1]||(v[1]=x=>Z(x.target.value))},null,40,cd),v[50]||(v[50]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",ud,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:a.value.cellType==="qrcode",onChange:v[2]||(v[2]=x=>Z(x.target.value))},null,40,md),v[51]||(v[51]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",pd,[e.createElementVNode("input",{type:"radio",value:"image",checked:a.value.cellType==="image",onChange:v[3]||(v[3]=x=>Z(x.target.value))},null,40,vd),v[52]||(v[52]=e.createElementVNode("span",null,"图片",-1))])])]),d.value?(e.openBlock(),e.createElementBlock("div",fd,[v[55]||(v[55]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:a.value.barcodeType||"CODE128",class:"pd-select",onChange:v[4]||(v[4]=x=>Y(K=>{K.barcodeType=x.target.value||void 0}))},[...v[54]||(v[54]=[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,gd)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",hd,[v[56]||(v[56]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:a.value.showBarcodeText!==!1,type:"checkbox",class:"pd-switch",onInput:v[5]||(v[5]=x=>Y(K=>{K.showBarcodeText=!!x.target.checked}))},null,40,bd)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Ed,[v[57]||(v[57]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(de,{"model-value":a.value.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":v[6]||(v[6]=x=>Y(K=>{K.barWidth=x}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",yd,e.toDisplayString(V.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",kd,[v[58]||(v[58]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(de,{"model-value":a.value.barFontSize??10,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":v[7]||(v[7]=x=>Y(K=>{K.barFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Vd,[v[60]||(v[60]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{value:a.value.printerDpi?String(a.value.printerDpi):"",class:"pd-select",onChange:v[8]||(v[8]=x=>ee(x.target.value))},[...v[59]||(v[59]=[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,Nd)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",wd,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("div",Cd,[v[62]||(v[62]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{value:a.value.qrCodeLevel||"M",class:"pd-select",onChange:v[9]||(v[9]=x=>Y(K=>{K.qrCodeLevel=x.target.value||void 0}))},[...v[61]||(v[61]=[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,Sd)])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("div",xd,[e.createElementVNode("span",Bd,[v[63]||(v[63]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,$d)]),e.createVNode(de,{"model-value":a.value.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":v[10]||(v[10]=x=>Y(K=>{K.qrQuietZone=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",Dd,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),f.value||z.value?(e.openBlock(),e.createElementBlock("div",Td,[v[64]||(v[64]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{value:a.value.fit||"contain",class:"pd-select",onChange:v[11]||(v[11]=x=>Y(K=>{K.fit=x.target.value}))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.IMAGE_FIT_OPTIONS),x=>(e.openBlock(),e.createElementBlock("option",{key:x.value,value:x.value},e.toDisplayString(x.label),9,zd))),128))],40,Md)])):e.createCommentVNode("",!0),z.value&&a.value.fit==="cover"?(e.openBlock(),e.createElementBlock("div",Ad,[e.createVNode(Ot,{"field-key":"ap-img-object-position",label:"裁剪锚点",src:m.value,fit:a.value.fit,"width-mm":s.value.width,"height-mm":s.value.height,scale:a.value.fitScale,"model-value":a.value.objectPosition,"onUpdate:modelValue":v[12]||(v[12]=x=>Y(K=>{K.objectPosition=x})),"onUpdate:scale":v[13]||(v[13]=x=>Y(K=>{K.fitScale=x}))},null,8,["src","fit","width-mm","height-mm","scale","model-value"])])):e.createCommentVNode("",!0),d.value||f.value||z.value?(e.openBlock(),e.createElementBlock("div",Pd,[v[65]||(v[65]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(de,{"model-value":a.value.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[14]||(v[14]=x=>Y(K=>{K.maxWidth=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value||f.value||z.value?(e.openBlock(),e.createElementBlock("div",Rd,[v[66]||(v[66]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(de,{"model-value":a.value.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[15]||(v[15]=x=>Y(K=>{K.maxHeight=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Ld,[v[67]||(v[67]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:a.value.formatter||"",class:"pd-input",placeholder:"输入内容,支持 {字段} 表达式",onInput:v[16]||(v[16]=x=>Y(K=>{K.formatter=x.target.value||void 0})),onDblclick:y},null,40,Id)]),e.createElementVNode("div",Ud,[v[72]||(v[72]=e.createElementVNode("span",{class:"pd-label"},"水平对齐",-1)),e.createElementVNode("div",Fd,[e.createElementVNode("label",Od,[e.createElementVNode("input",{type:"radio",value:"left",checked:a.value.align==="left",onChange:v[17]||(v[17]=x=>O(x.target.value))},null,40,Hd),v[68]||(v[68]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Wd,[e.createElementVNode("input",{type:"radio",value:"center",checked:a.value.align==="center",onChange:v[18]||(v[18]=x=>O(x.target.value))},null,40,Gd),v[69]||(v[69]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",qd,[e.createElementVNode("input",{type:"radio",value:"right",checked:a.value.align==="right",onChange:v[19]||(v[19]=x=>O(x.target.value))},null,40,Kd),v[70]||(v[70]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",jd,[e.createElementVNode("input",{type:"radio",value:"justify",checked:a.value.align==="justify",onChange:v[20]||(v[20]=x=>O(x.target.value))},null,40,Yd),v[71]||(v[71]=e.createElementVNode("span",null,"两端",-1))])])]),e.createElementVNode("div",Xd,[v[76]||(v[76]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",Zd,[e.createElementVNode("label",Jd,[e.createElementVNode("input",{type:"radio",value:"top",checked:a.value.valign==="top",onChange:v[21]||(v[21]=x=>oe(x.target.value))},null,40,Qd),v[73]||(v[73]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",_d,[e.createElementVNode("input",{type:"radio",value:"middle",checked:a.value.valign==="middle",onChange:v[22]||(v[22]=x=>oe(x.target.value))},null,40,ec),v[74]||(v[74]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",tc,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:a.value.valign==="bottom",onChange:v[23]||(v[23]=x=>oe(x.target.value))},null,40,oc),v[75]||(v[75]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",nc,[e.createElementVNode("div",lc,[v[77]||(v[77]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(kt,{"model-value":a.value.fontFamily,placeholder:"继承默认","onUpdate:modelValue":v[24]||(v[24]=x=>Y(K=>{K.fontFamily=x}))},null,8,["model-value"])]),e.createElementVNode("div",ac,[v[78]||(v[78]=e.createElementVNode("span",{class:"pd-label"},"字号 (pt)",-1)),e.createVNode(de,{"model-value":a.value.fontSize,min:5,max:72,placeholder:"默认","onUpdate:modelValue":v[25]||(v[25]=x=>Y(K=>{K.fontSize=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",ic,[v[79]||(v[79]=e.createElementVNode("span",{class:"pd-label"},"加粗",-1)),e.createElementVNode("input",{checked:a.value.fontWeight==="bold",type:"checkbox",class:"pd-switch",onInput:v[26]||(v[26]=x=>Y(K=>{K.fontWeight=x.target.checked?"bold":void 0}))},null,40,rc)]),e.createElementVNode("div",sc,[v[80]||(v[80]=e.createElementVNode("span",{class:"pd-label"},"文字颜色",-1)),e.createVNode(Ne,{"model-value":a.value.color,"onUpdate:modelValue":v[27]||(v[27]=x=>Y(K=>{K.color=x}))},null,8,["model-value"])]),e.createElementVNode("div",dc,[v[81]||(v[81]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{"model-value":a.value.backgroundColor,"onUpdate:modelValue":v[28]||(v[28]=x=>Y(K=>{K.backgroundColor=x}))},null,8,["model-value"])])]),v[92]||(v[92]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",cc,[e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":v[29]||(v[29]=x=>q.value=x),style:{width:"90px"}},[...v[82]||(v[82]=[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,q.value]]),e.createElementVNode("div",uc,[e.createVNode(de,{modelValue:E.value,"onUpdate:modelValue":v[30]||(v[30]=x=>E.value=x),min:.25,max:5,step:.25},null,8,["modelValue"])]),e.createVNode(Ne,{modelValue:T.value,"onUpdate:modelValue":v[31]||(v[31]=x=>T.value=x),clearable:!1},null,8,["modelValue"])]),e.createElementVNode("div",mc,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:v[32]||(v[32]=x=>M("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:v[33]||(v[33]=x=>M("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:v[34]||(v[34]=x=>M("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:v[35]||(v[35]=x=>M("none"))},"无")]),e.createElementVNode("div",pc,[e.createElementVNode("label",vc,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":v[36]||(v[36]=x=>b.value=x),value:"top",onChange:v[37]||(v[37]=x=>L(x))},null,544),[[e.vModelCheckbox,b.value]]),v[83]||(v[83]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",fc,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":v[38]||(v[38]=x=>b.value=x),value:"right",onChange:v[39]||(v[39]=x=>L(x))},null,544),[[e.vModelCheckbox,b.value]]),v[84]||(v[84]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",gc,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":v[40]||(v[40]=x=>b.value=x),value:"bottom",onChange:v[41]||(v[41]=x=>L(x))},null,544),[[e.vModelCheckbox,b.value]]),v[85]||(v[85]=e.createElementVNode("span",null,"下",-1))]),e.createElementVNode("label",hc,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":v[42]||(v[42]=x=>b.value=x),value:"left",onChange:v[43]||(v[43]=x=>L(x))},null,544),[[e.vModelCheckbox,b.value]]),v[86]||(v[86]=e.createElementVNode("span",null,"左",-1))])]),e.createElementVNode("div",bc,[v[87]||(v[87]=e.createElementVNode("span",{class:"pd-label"},"内边距 (mm)",-1)),e.createVNode(de,{"model-value":a.value.padding,min:0,max:10,step:.5,placeholder:"默认","onUpdate:modelValue":v[44]||(v[44]=x=>Y(K=>{K.padding=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",Ec,[v[88]||(v[88]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:a.value.wordWrap??!0,type:"checkbox",class:"pd-switch",onInput:v[45]||(v[45]=x=>Y(K=>{K.wordWrap=!!x.target.checked}))},null,40,yc)]),N.value?(e.openBlock(),e.createElementBlock("div",kc,[v[90]||(v[90]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:p.value,style:{width:"100%"},onChange:S},[...v[89]||(v[89]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Vc)])):e.createCommentVNode("",!0),N.value&&p.value==="shrink"?(e.openBlock(),e.createElementBlock("div",Nc,[v[91]||(v[91]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(de,{"model-value":a.value.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":v[46]||(v[46]=x=>Y(K=>{K.shrinkMinFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",wc,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!J.value,title:J.value||"",onClick:X}," 合并单元格 ",8,Cc),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!P.value,onClick:re},"拆分单元格",8,Sc)])],32)]),_:1}),e.createVNode(Qe,{modelValue:u.value,"onUpdate:modelValue":v[48]||(v[48]=x=>u.value=x),fields:t.fields,expression:g.value,"onUpdate:expression":U},null,8,["modelValue","fields","expression"])],64))}}),Bc=pe(xc,[["__scopeId","data-v-14cdc9e9"]]),$c={class:"watermark-config"},Dc={class:"pd-field"},Tc={key:0,class:"pd-field"},Mc={class:"pd-field"},zc={class:"pd-hint"},Ac={class:"pd-field"},Pc={class:"pd-field"},Rc={class:"pd-hint"},Lc={class:"pd-field"},Ic=["value"],Uc={class:"pd-field"},Fc=["min"],Oc={class:"pd-field"},Hc=["min"],Wc=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=be.WATERMARK_DENSITY_PRESETS,c=be.WATERMARK_DEFAULTS.minTileWidth,r=be.WATERMARK_DEFAULTS.minTileHeight;function a(Z){const y=Z.trim();return y?/[{}]/.test(y)||/^[A-Za-z_$][\w$]*\s*\(/.test(y)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(y):!1}function s(Z){return Z?Z.mode==="binding"?Z.binding??"":Z.content??"":""}const m=e.ref(s(o.modelValue)),u=e.ref(o.modelValue?.testData||""),g=e.ref(!1),d=e.ref(o.modelValue?.mode==="binding"?"binding":"fixed"),f=e.reactive({rotate:o.modelValue?.rotate??be.WATERMARK_DEFAULTS.rotate,color:o.modelValue?.color||be.WATERMARK_DEFAULTS.color,opacity:o.modelValue?.opacity??be.WATERMARK_DEFAULTS.opacity,tileWidth:o.modelValue?.tileWidth??be.WATERMARK_DEFAULTS.tileWidth,tileHeight:o.modelValue?.tileHeight??be.WATERMARK_DEFAULTS.tileHeight}),z=e.computed(()=>d.value==="binding");e.watch(()=>o.modelValue,Z=>{Z&&(m.value=s(Z),d.value=Z.mode==="binding"?"binding":"fixed",u.value=Z.testData||"",f.rotate=Z.rotate??be.WATERMARK_DEFAULTS.rotate,f.color=Z.color||be.WATERMARK_DEFAULTS.color,f.opacity=Z.opacity??be.WATERMARK_DEFAULTS.opacity,f.tileWidth=Z.tileWidth??be.WATERMARK_DEFAULTS.tileWidth,f.tileHeight=Z.tileHeight??be.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const V=e.computed({get(){const{tileWidth:Z,tileHeight:y}=f;for(const[U,Y]of Object.entries(i))if(Z===Y.width&&y===Y.height)return U;return"custom"},set(Z){const y=i[Z];y&&(f.tileWidth=y.width,f.tileHeight=y.height)}});function N(){d.value=a(m.value)?"binding":"fixed",ee()}function p(){N()}function S(){g.value=!0}function O(Z){m.value=Z,N()}function oe(Z){f.color=Z,ee()}function ee(){const Z={testData:u.value,rotate:f.rotate,color:f.color,opacity:f.opacity,tileWidth:f.tileWidth,tileHeight:f.tileHeight};n("update:modelValue",d.value==="binding"?{...Z,mode:"binding",binding:m.value,content:""}:{...Z,mode:"fixed",content:m.value,binding:""})}return(Z,y)=>(e.openBlock(),e.createElementBlock("div",$c,[y[18]||(y[18]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:y[8]||(y[8]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Dc,[y[9]||(y[9]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":y[0]||(y[0]=U=>m.value=U),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:p,onDblclick:S},null,544),[[e.vModelText,m.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:S},"编辑表达式")]),z.value?(e.openBlock(),e.createElementBlock("div",Tc,[y[10]||(y[10]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":y[1]||(y[1]=U=>u.value=U),placeholder:"表达式取不到值时预览显示",onInput:ee},null,544),[[e.vModelText,u.value]])])):e.createCommentVNode("",!0),e.createVNode(Qe,{modelValue:g.value,"onUpdate:modelValue":y[2]||(y[2]=U=>g.value=U),fields:t.fields,expression:m.value,"onUpdate:expression":O},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",Mc,[y[11]||(y[11]=e.createElementVNode("span",{class:"pd-label"},"旋转角度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":y[3]||(y[3]=U=>f.rotate=U),min:-90,max:90,step:5,onChange:ee},null,544),[[e.vModelText,f.rotate,void 0,{number:!0}]]),e.createElementVNode("span",zc,e.toDisplayString(f.rotate)+"°",1)]),e.createElementVNode("div",Ac,[y[12]||(y[12]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{"model-value":f.color,"onUpdate:modelValue":oe},null,8,["model-value"])]),e.createElementVNode("div",Pc,[y[13]||(y[13]=e.createElementVNode("span",{class:"pd-label"},"透明度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":y[4]||(y[4]=U=>f.opacity=U),min:.05,max:.5,step:.05,onChange:ee},null,544),[[e.vModelText,f.opacity,void 0,{number:!0}]]),e.createElementVNode("span",Rc,e.toDisplayString(f.opacity.toFixed(2)),1)]),e.createElementVNode("div",Lc,[y[15]||(y[15]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":y[5]||(y[5]=U=>V.value=U),style:{width:"100%"},onChange:ee},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),(U,Y)=>(e.openBlock(),e.createElementBlock("option",{key:Y,value:Y},e.toDisplayString(U.label)+"("+e.toDisplayString(U.width)+"×"+e.toDisplayString(U.height)+")",9,Ic))),128)),y[14]||(y[14]=e.createElementVNode("option",{value:"custom"},"自定义",-1))],544),[[e.vModelSelect,V.value]])]),V.value==="custom"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Uc,[y[16]||(y[16]=e.createElementVNode("span",{class:"pd-label"},"瓦片宽",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":y[6]||(y[6]=U=>f.tileWidth=U),min:e.unref(c),step:10,onChange:ee},null,40,Fc),[[e.vModelText,f.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",Oc,[y[17]||(y[17]=e.createElementVNode("span",{class:"pd-label"},"瓦片高",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":y[7]||(y[7]=U=>f.tileHeight=U),min:e.unref(r),step:10,onChange:ee},null,40,Hc),[[e.vModelText,f.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),Gc=pe(Wc,[["__scopeId","data-v-b55bfc50"]]),qc={class:"design-background-config"},Kc=["title"],jc={class:"design-background-actions"},Yc=["disabled"],Xc=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),c=e.inject(gt,e.computed(()=>{})),r=e.computed(()=>i.value||!c.value),a=e.computed(()=>o.modelValue?.rotation??0);async function s(g){const d=g.target,f=d.files?.[0];if(f){if(!f.type.startsWith("image/")){alert("仅支持上传图片文件"),d.value="";return}if(!c.value){alert("设计背景上传能力未配置"),d.value="";return}i.value=!0;try{const z=await c.value(f);z?n("update:modelValue",{src:z,rotation:0}):alert("设计背景上传失败")}catch(z){alert(z instanceof Error?z.message:"设计背景上传失败")}finally{i.value=!1,d.value=""}}}function m(){if(!o.modelValue?.src)return;const g=(a.value+90)%360;n("update:modelValue",{src:o.modelValue.src,rotation:g})}function u(){n("update:modelValue",void 0)}return(g,d)=>(e.openBlock(),e.createElementBlock("div",qc,[d[0]||(d[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),d[1]||(d[1]=e.createElementVNode("p",{class:"design-background-tip"},"仅设计器显示,用于套打定位,不会出现在预览和打印中",-1)),t.modelValue?.src?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"design-background-path",title:t.modelValue.src},e.toDisplayString(t.modelValue.src),9,Kc),e.createElementVNode("div",jc,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:m}," 旋转("+e.toDisplayString(a.value)+"°) ",1),e.createElementVNode("button",{type:"button",class:"pd-button small remove-btn",onClick:u},"移除")])],64)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(["pd-button small upload-label",{disabled:r.value}])},[e.createTextVNode(e.toDisplayString(i.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:r.value,onChange:s},null,40,Yc)],2))]))}}),Zc=pe(Xc,[["__scopeId","data-v-3f4d2e32"]]),Jc={class:"tiling-config","data-test":"tiling-config"},Qc={class:"pd-field"},_c={class:"tiling-switch"},eu=["checked","disabled"],tu={key:0,class:"pd-hint tiling-error"},ou={class:"pd-field"},nu=["value"],lu=["value"],au={key:0,class:"pd-field"},iu={class:"custom-size-grid"},ru={key:1,class:"pd-field"},su={class:"pd-radio-group",role:"radiogroup"},du={class:"pd-radio"},cu=["checked"],uu={class:"pd-radio"},mu=["checked"],pu={class:"margin-grid"},vu={class:"pd-field"},fu={class:"pd-field"},gu={class:"pd-field"},hu={class:"pd-field"},bu={class:"pd-field"},Eu={class:"pd-field"},yu={class:"pd-field"},ku={key:2,class:"pd-hint tiling-summary"},Vu=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=Object.keys(h.PAPER_PRESETS).filter(N=>N!=="CUSTOM"&&!h.PAPER_PRESETS[N]?.continuous),c=e.computed(()=>h.isContinuousPaperSize(o.templateData?.paperSize)),r=e.computed(()=>({...be.TILE_DEFAULTS,...o.modelValue??{},enabled:o.modelValue?.enabled??!1,sheetMargin:{...be.TILE_DEFAULTS.sheetMargin,...o.modelValue?.sheetMargin??{}}})),a=e.computed(()=>o.templateData?{...o.templateData,tiling:r.value}:void 0),s=e.computed(()=>a.value?be.validateTiling(a.value):[]),m=e.computed(()=>{const N=a.value;return N?Math.max(be.computeMaxColumns(N),1):1}),u=e.computed(()=>{const N=a.value;if(!(!N||s.value.length))try{return be.computeTileLayout(N)}catch{return}}),g=e.computed(()=>{const N=u.value,p=a.value;if(!N||!p)return"";const S=be.resolveSheetMm(p),O=r.value.sheetPaperSize==="CUSTOM"?"自定义":r.value.sheetPaperSize??"A4",oe=r.value.sheetPaperSize==="CUSTOM"?"":r.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${O}${oe} ${S.width}×${S.height}mm · ${N.columns} 列 × ${N.rows} 行 = 每张 ${N.perSheet} 格`});function d(N){n("update:modelValue",{...r.value,...N})}function f(N,p){d({sheetMargin:{...r.value.sheetMargin,[N]:p??0}})}function z(N){if(N!=="CUSTOM"){d({sheetPaperSize:N});return}const p=a.value,S=p?be.resolveSheetMm(p):{width:210,height:297};d({sheetPaperSize:"CUSTOM",sheetCustomWidth:r.value.sheetCustomWidth??S.width,sheetCustomHeight:r.value.sheetCustomHeight??S.height})}function V(N){if(!N){d({enabled:!1});return}const p=m.value,S=p>=1?Math.min(be.TILE_DEFAULTS.columns,p):1;d({...be.TILE_DEFAULTS,columns:S})}return(N,p)=>(e.openBlock(),e.createElementBlock("div",Jc,[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",Qc,[e.createElementVNode("label",_c,[e.createElementVNode("input",{type:"checkbox",checked:r.value.enabled,disabled:c.value,onChange:p[0]||(p[0]=S=>V(S.target.checked))},null,40,eu),p[13]||(p[13]=e.createElementVNode("span",null,"启用拼版",-1))]),c.value?(e.openBlock(),e.createElementBlock("p",tu,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),r.value.enabled&&!c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ou,[p[15]||(p[15]=e.createElementVNode("span",{class:"pd-label"},"目标纸张",-1)),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:r.value.sheetPaperSize??"A4",onChange:p[1]||(p[1]=S=>z(S.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),S=>(e.openBlock(),e.createElementBlock("option",{key:S,value:S},e.toDisplayString(e.unref(h.PAPER_PRESETS)[S]?.label??S),9,lu))),128)),p[14]||(p[14]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,nu)]),r.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",au,[p[17]||(p[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",iu,[e.createVNode(de,{"model-value":r.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":p[2]||(p[2]=S=>d({sheetCustomWidth:S}))},null,8,["model-value"]),p[16]||(p[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":r.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":p[3]||(p[3]=S=>d({sheetCustomHeight:S}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",ru,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"目标纸方向",-1)),e.createElementVNode("div",su,[e.createElementVNode("label",du,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(r.value.sheetOrientation??"portrait")==="portrait",onChange:p[4]||(p[4]=S=>d({sheetOrientation:"portrait"}))},null,40,cu),p[18]||(p[18]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",uu,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:r.value.sheetOrientation==="landscape",onChange:p[5]||(p[5]=S=>d({sheetOrientation:"landscape"}))},null,40,mu),p[19]||(p[19]=e.createElementVNode("span",null,"横向",-1))])])])),p[28]||(p[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",pu,[e.createElementVNode("div",vu,[p[21]||(p[21]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(de,{"model-value":r.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":p[6]||(p[6]=S=>f("top",S))},null,8,["model-value"])]),e.createElementVNode("div",fu,[p[22]||(p[22]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(de,{"model-value":r.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":p[7]||(p[7]=S=>f("bottom",S))},null,8,["model-value"])]),e.createElementVNode("div",gu,[p[23]||(p[23]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(de,{"model-value":r.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":p[8]||(p[8]=S=>f("left",S))},null,8,["model-value"])]),e.createElementVNode("div",hu,[p[24]||(p[24]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(de,{"model-value":r.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":p[9]||(p[9]=S=>f("right",S))},null,8,["model-value"])])]),p[29]||(p[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",bu,[p[25]||(p[25]=e.createElementVNode("span",{class:"pd-label"},"横向间距",-1)),e.createVNode(de,{"model-value":r.value.gapX,min:0,max:50,"onUpdate:modelValue":p[10]||(p[10]=S=>d({gapX:S??0}))},null,8,["model-value"])]),e.createElementVNode("div",Eu,[p[26]||(p[26]=e.createElementVNode("span",{class:"pd-label"},"纵向间距",-1)),e.createVNode(de,{"model-value":r.value.gapY,min:0,max:50,"onUpdate:modelValue":p[11]||(p[11]=S=>d({gapY:S??0}))},null,8,["model-value"])]),e.createElementVNode("div",yu,[p[27]||(p[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(de,{"model-value":r.value.columns,min:1,max:m.value,"onUpdate:modelValue":p[12]||(p[12]=S=>d({columns:S??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,S=>(e.openBlock(),e.createElementBlock("p",{key:S.code,class:"pd-hint tiling-error"},e.toDisplayString(S.message),1))),128)),!s.value.length&&g.value?(e.openBlock(),e.createElementBlock("p",ku,e.toDisplayString(g.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),Nu=pe(Vu,[["__scopeId","data-v-aa278268"]]),wu={key:0,class:"prop-collapsed"},Cu={class:"prop-head"},Su={class:"pd-tabs prop-tabs"},xu={class:"pd-tab-bar",role:"tablist"},Bu={class:"pd-tab-pane",role:"tabpanel"},$u={class:"property-content"},Du={key:1,class:"pd-empty"},Tu={class:"pd-tab-pane",role:"tabpanel"},Mu={class:"pd-field"},zu=["value"],Au=["label"],Pu=["value"],Ru={key:0,class:"pd-hint"},Lu={key:1,class:"pd-field"},Iu={class:"pd-label"},Uu={class:"custom-size-grid"},Fu={key:2,class:"pd-field"},Ou={class:"pd-radio-group",role:"radiogroup"},Hu={class:"pd-radio"},Wu=["checked"],Gu={class:"pd-radio"},qu=["checked"],Ku={key:3,class:"pd-field"},ju={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},Yu={class:"pd-radio"},Xu=["checked"],Zu={class:"pd-radio"},Ju=["checked"],Qu={class:"pd-radio"},_u=["checked"],em={class:"pd-radio"},tm=["checked"],om={class:"pd-field"},nm={class:"page-bg-row"},lm={class:"page-bg-picker"},am={key:5,class:"pd-hint"},im={class:"margin-grid"},rm={class:"pd-field"},sm={class:"pd-field"},dm={class:"pd-field"},cm={class:"pd-field"},um={class:"pd-field"},mm={class:"pd-field"},pm=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(t,{emit:l}){const o=t,n=l,i=e.computed(()=>{const k=[];for(const[w,R]of Object.entries(h.PAPER_PRESETS)){if(o.multiPage&&h.isContinuousPaperSize(w))continue;const ce=R.group??"其他";let fe=k.find(ye=>ye.group===ce);fe||(fe={group:ce,items:[]},k.push(fe)),fe.items.push({key:w,label:R.label??w})}return k}),c=e.ref(""),r=e.computed(()=>o.element?["text","longText"].includes(o.element.printElementType.type):!1),a=e.computed(()=>o.element?o.element.printElementType.type==="image":!1),s=e.computed(()=>o.element?["barcode","qrcode"].includes(o.element.printElementType.type):!1),m=e.computed(()=>!o.element||o.element.printElementType.type!=="table"?!1:!!o.tableSelection&&o.tableSelection.elementId===o.element.id),u=e.computed(()=>o.element?o.element.printElementType.type==="table":!1),g=e.computed(()=>h.searchProperties(c.value)),d=e.computed(()=>g.value.groups),f=e.computed(()=>g.value.itemKeys),z=e.computed(()=>!!c.value.trim()),V=e.computed(()=>{if(!o.element)return[];if(o.element.printElementType.type==="table"&&o.tableSelection){const{r1:k,c1:w}=o.tableSelection,R=o.element.options.tableRows;if(R&&R[k]){const ce=R[k],fe=o.element.options.fields?.[0]?.dataSource;return h.getTableCellBindings(ce.type,k,w,fe)}}return h.getElementBindings(o.element)});function N(k){return k.split(".").flatMap(w=>{const R=w.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!R)return[w];const ce=R[1],fe=[...R[2].matchAll(/\[(\d+)\]/g)].map(ye=>Number(ye[1]));return[ce,...fe]})}function p(k){return o.element?N(k).reduce((ce,fe)=>ce==null?"":ce[fe],o.element)??"":""}function S(k,w){if(!o.element)return;const R=N(k),ce=R.pop(),fe=R.reduce((ye,we)=>((ye[we]===void 0||ye[we]===null)&&(ye[we]={}),ye[we]),o.element);fe[ce]=w||void 0,o.recordHistory?.()}function O(k){c.value=k}function oe(k){o.element&&S("options.src",k)}const ee=e.computed(()=>o.templateData?.paperSize||"A4"),Z=e.computed(()=>!o.multiPage&&h.isContinuousPaperSize(ee.value)),y=e.computed(()=>h.isLabelPaperSize(ee.value)),U=e.computed(()=>o.templateData?.orientation||"portrait"),Y=e.computed(()=>!!o.templateData?.tiling?.enabled),q=e.computed(()=>o.templateData?.outputRotation??0),E=e.computed({get:()=>o.templateData?.pageBackground||"#ffffff",set:k=>j(k)}),T=e.computed(()=>o.templateData?.margins.top??10),b=e.computed(()=>o.templateData?.margins.bottom??10),$=e.computed(()=>o.templateData?.margins.left??10),M=e.computed(()=>o.templateData?.margins.right??10),L=e.computed(()=>o.templateData?.header.height??10),J=e.computed(()=>o.templateData?.footer.height??10),P=e.computed(()=>o.templateData?.customWidth??h.PAPER_PRESETS[ee.value]?.width??210),X=e.computed(()=>o.templateData?.customHeight??297),re=e.computed(()=>o.templateData?.designBackground);function le(k){if(o.templateData){if(!k){const w={...o.templateData};delete w.designBackground,n("update:templateData",w);return}K({designBackground:k})}}const v=e.computed(()=>o.templateData?.watermark??{});function x(k){K({watermark:k})}function K(k){if(!o.templateData)return;const w={...o.templateData,...k};n("update:templateData",w)}function G(k){if(o.templateData){if(h.isContinuousPaperSize(k)){K({paperSize:k,customWidth:k==="CONTINUOUS"?o.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...o.templateData.margins,bottom:o.templateData?.margins.bottom??0}});return}if(k==="CUSTOM"){K({paperSize:"CUSTOM"});return}if(h.PAPER_PRESETS[k]){if(h.isLabelPaperSize(k)){K({paperSize:k,...h.labelPaperDefaults(o.templateData)});return}K({paperSize:k})}}}function C(k){K({orientation:String(k)})}function D(k){K({outputRotation:Number(k)})}function j(k){const w=k&&k.toLowerCase()!=="#ffffff"&&k.toLowerCase()!=="#fff"?k:void 0;K(w===void 0?{pageBackground:void 0}:{pageBackground:w})}function _(){K({pageBackground:void 0})}function ae(k){k!==void 0&&K({customWidth:k})}function ge(k){k!==void 0&&K({customHeight:k})}function A(k){k!==void 0&&K({margins:{...o.templateData.margins,top:k}})}function B(k){k!==void 0&&K({margins:{...o.templateData.margins,bottom:k}})}function F(k){k!==void 0&&K({margins:{...o.templateData.margins,left:k}})}function ne(k){k!==void 0&&K({margins:{...o.templateData.margins,right:k}})}function ie(k){k!==void 0&&K({header:{...o.templateData.header,height:k}})}function ve(k){k!==void 0&&K({footer:{...o.templateData.footer,height:k}})}const I=e.computed(()=>o.activeTab||"page");function H(k){n("update:activeTab",k),n("toggle-collapse")}return(k,w)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",wu,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:w[0]||(w[0]=R=>H(I.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:I.value==="element"}]),title:"元素属性",onClick:w[1]||(w[1]=R=>H("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:I.value==="page"}]),title:"页面属性",onClick:w[2]||(w[2]=R=>H("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Cu,[w[18]||(w[18]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:w[3]||(w[3]=R=>k.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",Su,[e.createElementVNode("div",xu,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(t.activeTab||"page")==="element"}]),onClick:w[4]||(w[4]=R=>k.$emit("update:activeTab","element"))},"元素属性",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(t.activeTab||"page")==="page"}]),onClick:w[5]||(w[5]=R=>k.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",Bu,[t.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(ei,{onSearch:O}),e.createElementVNode("div",$u,[d.value.includes("position-size")&&!m.value?(e.openBlock(),e.createBlock(mi,{key:0,element:t.element,"matched-keys":f.value,searching:z.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("appearance")?(e.openBlock(),e.createBlock(dr,{key:1,element:t.element,"is-text-type":r.value,"matched-keys":f.value,searching:z.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("code")&&s.value?(e.openBlock(),e.createBlock(Dr,{key:2,element:t.element,"matched-keys":f.value,searching:z.value,onChange:w[6]||(w[6]=R=>t.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("binding")?(e.openBlock(),e.createBlock(Be,{key:3,title:"内容",icon:"Document","default-expanded":"","group-key":"binding"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,R=>(e.openBlock(),e.createBlock(Es,{key:R.targetPath,descriptor:R,fields:t.fields,"model-value":p(R.targetPath),"onUpdate:modelValue":ce=>S(R.targetPath,ce)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),a.value?(e.openBlock(),e.createBlock(Qs,{key:0,onSuccess:oe})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0),u.value&&t.tableSelection&&t.tableSelection.elementId===t.element.id?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createVNode(ld,{element:t.element,selection:t.tableSelection},null,8,["element","selection"]),e.createVNode(Bc,{element:t.element,selection:t.tableSelection,fields:t.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),u.value&&d.value.includes("content")?(e.openBlock(),e.createBlock($s,{key:5,element:t.element,fields:t.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),d.value.includes("border-bg")?(e.openBlock(),e.createBlock(Ps,{key:6,element:t.element,"matched-keys":f.value,searching:z.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("pagination")&&u.value?(e.openBlock(),e.createBlock(zt,{key:7,element:t.element,"matched-keys":f.value,searching:z.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("pagination")&&!u.value?(e.openBlock(),e.createBlock(zt,{key:8,element:t.element,"matched-keys":f.value,searching:z.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),d.value.includes("advanced")?(e.openBlock(),e.createBlock(Hs,{key:9,element:t.element,"matched-keys":f.value,searching:z.value,onDeleteElement:w[7]||(w[7]=R=>k.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",Du,"请在画布中选择一个元素"))],512),[[e.vShow,(t.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",Tu,[e.createElementVNode("form",{class:"pd-form",onSubmit:w[17]||(w[17]=e.withModifiers(()=>{},["prevent"]))},[w[39]||(w[39]=e.createElementVNode("h3",{class:"pd-divider"},"纸张设置",-1)),e.createElementVNode("div",Mu,[w[20]||(w[20]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:ee.value,class:"pd-select",onChange:w[8]||(w[8]=R=>G(R.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,R=>(e.openBlock(),e.createElementBlock("optgroup",{key:R.group,label:R.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.items,ce=>(e.openBlock(),e.createElementBlock("option",{key:ce.key,value:ce.key},e.toDisplayString(ce.label),9,Pu))),128))],8,Au))),128)),w[19]||(w[19]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,zu)]),y.value?(e.openBlock(),e.createElementBlock("p",Ru,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),Z.value||ee.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Lu,[e.createElementVNode("span",Iu,e.toDisplayString(Z.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",Uu,[e.createVNode(de,{"model-value":P.value,min:25,max:2e3,"onUpdate:modelValue":ae},null,8,["model-value"]),ee.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[w[21]||(w[21]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":X.value,min:25,max:2e3,"onUpdate:modelValue":ge},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),Z.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Fu,[w[24]||(w[24]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",Ou,[e.createElementVNode("label",Hu,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:U.value==="portrait",onChange:w[9]||(w[9]=R=>C(R.target.value))},null,40,Wu),w[22]||(w[22]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Gu,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:U.value==="landscape",onChange:w[10]||(w[10]=R=>C(R.target.value))},null,40,qu),w[23]||(w[23]=e.createElementVNode("span",null,"横向",-1))])]),w[25]||(w[25]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!Z.value&&!Y.value?(e.openBlock(),e.createElementBlock("div",Ku,[w[30]||(w[30]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",ju,[e.createElementVNode("label",Yu,[e.createElementVNode("input",{type:"radio",value:"0",checked:q.value===0,onChange:w[11]||(w[11]=R=>D(R.target.value))},null,40,Xu),w[26]||(w[26]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",Zu,[e.createElementVNode("input",{type:"radio",value:"90",checked:q.value===90,onChange:w[12]||(w[12]=R=>D(R.target.value))},null,40,Ju),w[27]||(w[27]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",Qu,[e.createElementVNode("input",{type:"radio",value:"180",checked:q.value===180,onChange:w[13]||(w[13]=R=>D(R.target.value))},null,40,_u),w[28]||(w[28]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",em,[e.createElementVNode("input",{type:"radio",value:"270",checked:q.value===270,onChange:w[14]||(w[14]=R=>D(R.target.value))},null,40,tm),w[29]||(w[29]=e.createElementVNode("span",null,"270°",-1))])]),w[31]||(w[31]=e.createElementVNode("p",{class:"pd-hint"},"整页内容旋转对应角度出纸;90°/270° 时纸张长宽互换以贴合内容,内容不变形不裁切;0° 为不旋转(默认)",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",om,[w[32]||(w[32]=e.createElementVNode("span",{class:"pd-label"},"页面背景色",-1)),e.createElementVNode("div",nm,[e.createElementVNode("div",lm,[e.createVNode(Ne,{modelValue:E.value,"onUpdate:modelValue":w[15]||(w[15]=R=>E.value=R)},null,8,["modelValue"])]),e.createElementVNode("button",{type:"button",class:"pd-reset",title:"恢复为默认白色",onClick:_},"默认")])]),e.createVNode(Zc,{"model-value":re.value,"onUpdate:modelValue":le},null,8,["model-value"]),t.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Nu,{key:4,"model-value":t.templateData?.tiling,"template-data":t.templateData,"onUpdate:modelValue":w[16]||(w[16]=R=>K({tiling:R}))},null,8,["model-value","template-data"])),w[40]||(w[40]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),Z.value?(e.openBlock(),e.createElementBlock("p",am,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",im,[e.createElementVNode("div",rm,[w[33]||(w[33]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(de,{"model-value":T.value,min:0,max:50,"onUpdate:modelValue":A},null,8,["model-value"])]),e.createElementVNode("div",sm,[w[34]||(w[34]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(de,{"model-value":b.value,min:0,max:100,"onUpdate:modelValue":B},null,8,["model-value"])]),e.createElementVNode("div",dm,[w[35]||(w[35]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(de,{"model-value":$.value,min:0,max:50,"onUpdate:modelValue":F},null,8,["model-value"])]),e.createElementVNode("div",cm,[w[36]||(w[36]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(de,{"model-value":M.value,min:0,max:50,"onUpdate:modelValue":ne},null,8,["model-value"])])]),w[41]||(w[41]=e.createElementVNode("h3",{class:"pd-divider"},"页眉/页脚高度 (mm)",-1)),e.createElementVNode("div",um,[w[37]||(w[37]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(de,{"model-value":L.value,min:0,max:100,step:.1,"onUpdate:modelValue":ie},null,8,["model-value"])]),e.createElementVNode("div",mm,[w[38]||(w[38]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(de,{"model-value":J.value,min:0,max:100,step:.1,"onUpdate:modelValue":ve},null,8,["model-value"])])],32),e.createVNode(Gc,{"model-value":v.value,fields:t.fields,"onUpdate:modelValue":x},null,8,["model-value","fields"])],512),[[e.vShow,(t.activeTab||"page")==="page"]])])],64))],2))}}),vm=pe(pm,[["__scopeId","data-v-4782ce32"]]),fm={class:"status-bar"},gm={key:0,class:"status-item coord"},hm={class:"status-item"},bm={class:"status-item"},Em={class:"status-item status-paper"},ym=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("div",fm,[t.coordinate?(e.openBlock(),e.createElementBlock("span",gm," x:"+e.toDisplayString(t.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(t.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",hm,"缩放 "+e.toDisplayString(t.scale)+"%",1),e.createElementVNode("span",bm,"元素 "+e.toDisplayString(t.elementCount)+e.toDisplayString(t.selectedCount?` (选中 ${t.selectedCount})`:""),1),e.createElementVNode("span",{class:e.normalizeClass(["status-dirty",{on:t.dirty}])},[o[0]||(o[0]=e.createElementVNode("span",{class:"dirty-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.dirty?"未保存":"已保存"),1)],2),e.createElementVNode("span",Em,e.toDisplayString(t.paper),1)]))}}),km=pe(ym,[["__scopeId","data-v-a91952ff"]]),Vm={id:"getting-started",title:"快速入门",content:`
|
|
7
7
|
<h2>界面布局</h2>
|
|
8
8
|
<p>打印模板设计器采用三栏布局:</p>
|
|
9
9
|
<ul>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<p><strong>项目名称:</strong>worm-vue3-print</p>
|
|
44
44
|
<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>
|
|
45
45
|
<p>基于 Vue 3 的可视化打印模板设计器,支持拖拽式模板编辑、表达式数据绑定和浏览器端打印预览。</p>
|
|
46
|
-
`},
|
|
46
|
+
`},Nm={id:"features",title:"功能说明",content:`
|
|
47
47
|
<h2>元素类型</h2>
|
|
48
48
|
<table>
|
|
49
49
|
<thead>
|
|
@@ -214,7 +214,7 @@
|
|
|
214
214
|
<li>支持调节水印密度(密/中/疏/自定义瓦片尺寸),以及设置水印颜色</li>
|
|
215
215
|
<li>水印在画布、浏览器预览、服务端 PDF、静默打印四端渲染一致</li>
|
|
216
216
|
</ul>
|
|
217
|
-
`},
|
|
217
|
+
`},wm={id:"shortcuts",title:"快捷键",content:`
|
|
218
218
|
<h2>常用操作</h2>
|
|
219
219
|
<table>
|
|
220
220
|
<thead>
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
<blockquote>
|
|
285
285
|
<p><strong>注意</strong>:当焦点在输入框、文本框、下拉框内时,快捷键不生效。</p>
|
|
286
286
|
</blockquote>
|
|
287
|
-
`},
|
|
287
|
+
`},Cm={id:"faq",title:"常见问题",content:`
|
|
288
288
|
<h2>如何调整纸张大小?</h2>
|
|
289
289
|
<ol>
|
|
290
290
|
<li>在右侧面板选择"页面设置"</li>
|
|
@@ -410,7 +410,29 @@
|
|
|
410
410
|
<blockquote>
|
|
411
411
|
<p><strong>提示</strong>:水印配置保存在模板 JSON 的 <code>watermark</code> 字段中,仅对当前模板生效。</p>
|
|
412
412
|
</blockquote>
|
|
413
|
-
`},
|
|
413
|
+
`},Sm={id:"changelog",title:"更新记录",content:`
|
|
414
|
+
<h2>V1.3.8<small>(2026-10-22)</small></h2>
|
|
415
|
+
|
|
416
|
+
<h3>新增</h3>
|
|
417
|
+
<ul>
|
|
418
|
+
<li><strong>图片裁剪取位可视化</strong>:属性台改为「位置档 + 数字框 + 原图示意」,红框就是最终打印出来的画面,换档或改数字时同步移动;有图时只显示真正能挪的方向,两个方向都能挪才给九宫格。缩放模式里的「覆盖」统一改叫「剪裁(等比铺满后裁边)」。</li>
|
|
419
|
+
<li><strong>裁剪放大比例</strong>:图与框比例相同时,铺满后其实没有可裁的边;填 100~400 的放大比例把画面再推大,才能裁出顶部 / 底部或左右。不填即保持原样。</li>
|
|
420
|
+
</ul>
|
|
421
|
+
|
|
422
|
+
<h3>变更</h3>
|
|
423
|
+
<ul>
|
|
424
|
+
<li><strong>锚点只在「剪裁」档出现</strong>:包含、拉伸填满、原始尺寸、缩小四档不再显示锚点与放大比例。</li>
|
|
425
|
+
<li><strong>表格图片单元格剪裁后行高会变</strong>:选「剪裁」时图片不再把行撑高,按声明行高出纸;取顶 / 取底会真的裁到画面。既有模板若用了这一档,升级后请复核行高。</li>
|
|
426
|
+
</ul>
|
|
427
|
+
|
|
428
|
+
<h3>修复</h3>
|
|
429
|
+
<ul>
|
|
430
|
+
<li><strong>大写金额的万 / 亿不再丢失</strong>:超过一万的金额会正确写出「万 / 亿」;角位为 0 而分位非 0 时补「零」,不足一元保留「元」位。</li>
|
|
431
|
+
<li><strong>字体下拉不再撑乱页面</strong>:展开候选时改为浮层,顶栏、属性台不再被撑高或错位,空间不足时向上翻。</li>
|
|
432
|
+
<li><strong>表格与横竖线不再被误拆页</strong>:单页模板不会因为竖线占用高度被拆成两页,元素回到设计位置;表格跟随区的数据驱动位移仍在处理中。</li>
|
|
433
|
+
<li><strong>裁剪示意更可信</strong>:图片未设置或表达式还没求值时显示示例图并说明;换图、加载失败不再沿用上一张图的可挪量,示意框也不再被拉成横条。</li>
|
|
434
|
+
</ul>
|
|
435
|
+
|
|
414
436
|
<h2>V1.3.7<small>(2026-10-19)</small></h2>
|
|
415
437
|
|
|
416
438
|
<h3>新增</h3>
|
|
@@ -657,4 +679,4 @@
|
|
|
657
679
|
<blockquote>
|
|
658
680
|
<p>完整更新记录请查阅仓库 <code>docs/中文/CHANGELOG.md</code> 与 <code>docs/en/CHANGELOG.en.md</code>。</p>
|
|
659
681
|
</blockquote>
|
|
660
|
-
`},cm=[am,im,rm,sm,dm],um={class:"help-modal"},mm={class:"help-modal-header"},pm={class:"help-modal-body"},vm={class:"help-modal-sidebar"},fm=["onClick"],gm={class:"help-modal-content"},hm=["innerHTML"],mt="worm-print-help-tab",bm=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(t,{emit:l}){const o=t,n=l,i=cm,u=e.ref(o.initialTab);e.onMounted(()=>{const c=localStorage.getItem(mt);c&&i.some(m=>m.id===c)&&(u.value=c)}),e.watch(()=>o.visible,c=>{if(c){const m=localStorage.getItem(mt);m&&i.some(f=>f.id===m)&&(u.value=m)}});function a(c){u.value=c,localStorage.setItem(mt,c),n("update:tab",c)}const r=e.computed(()=>i.find(m=>m.id===u.value)?.content||"");function d(c){c.key==="Escape"&&o.visible&&n("close")}return e.onMounted(()=>{document.addEventListener("keydown",d)}),e.onUnmounted(()=>{document.removeEventListener("keydown",d)}),(c,m)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"help-modal"},{default:e.withCtx(()=>[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"help-modal-overlay",onClick:m[1]||(m[1]=e.withModifiers(f=>c.$emit("close"),["self"]))},[e.createElementVNode("div",um,[e.createElementVNode("div",mm,[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=>c.$emit("close"))}," × ")]),e.createElementVNode("div",pm,[e.createElementVNode("div",vm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),f=>(e.openBlock(),e.createElementBlock("button",{key:f.id,class:e.normalizeClass(["help-tab",{active:u.value===f.id}]),onClick:g=>a(f.id)},e.toDisplayString(f.title),11,fm))),128))]),e.createElementVNode("div",gm,[e.createElementVNode("div",{class:"help-content",innerHTML:r.value},null,8,hm)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),Em=ue(bm,[["__scopeId","data-v-31115934"]]),ym={class:"page-tabs-list"},km=["onBlur","onKeydown"],Vm=["data-tip","onClick","onDblclick"],Nm={class:"page-tabs-actions"},wm=["data-tip","disabled"],Cm=["data-tip","disabled"],Sm=["data-tip","disabled"],xm=["data-tip","disabled"],Bm=["data-tip","disabled"],$m=e.defineComponent({__name:"PageTabs",props:{pages:{},activeIndex:{},multi:{type:Boolean},tilingEnabled:{type:Boolean}},emits:["select","add","duplicate","delete","rename","move"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(-1),u=e.ref(""),a=e.computed(()=>o.pages[o.activeIndex]?.name||`页面 ${o.activeIndex+1}`),r=e.computed(()=>o.tilingEnabled?pt:"新增页面(在当前页后追加空白页)"),d=e.computed(()=>o.tilingEnabled?pt:`复制当前页「${a.value}」`);function c($){i.value=$,u.value=o.pages[$]?.name??""}function m($){if(i.value!==$)return;const W=u.value.trim();W&&n("rename",$,W),i.value=-1}function f(){i.value=-1}const g=e.ref(null);let p=null;function w($){const W=$.dataset.tip;if(!W)return;const te=$.getBoundingClientRect(),J=Math.min(Math.max(te.left+te.width/2,80),window.innerWidth-80);g.value={text:W,x:J,y:te.bottom+6}}function C($){const W=$.target.closest?.("[data-tip]");W&&(p&&clearTimeout(p),p=setTimeout(()=>w(W),300))}function N($){const W=$.target.closest?.("[data-tip]");W&&$.relatedTarget?.closest?.("[data-tip]")===W||v()}function v(){p&&(clearTimeout(p),p=null),g.value=null}return e.onUnmounted(v),($,W)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:C,onMouseout:N,onMouseleave:v},[e.createElementVNode("div",ym,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.pages,(te,J)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:J},[i.value===J?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":W[0]||(W[0]=L=>u.value=L),class:"page-tab-rename","data-test":"page-rename-input",onBlur:L=>m(J),onKeydown:[e.withKeys(L=>m(J),["enter"]),e.withKeys(f,["esc"])]},null,40,km)),[[e.vModelText,u.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:J===t.activeIndex}]),"data-tip":te.name?`${te.name}(双击重命名)`:"双击重命名",onClick:L=>$.$emit("select",J),onDblclick:L=>c(J)},e.toDisplayString(te.name||`页面 ${J+1}`),43,Vm))],64))),128))]),e.createElementVNode("div",Nm,[e.createElementVNode("button",{"data-test":"add-page","data-tip":r.value,disabled:t.tilingEnabled,onClick:W[1]||(W[1]=te=>$.$emit("add"))},"+",8,wm),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":d.value,disabled:t.tilingEnabled,onClick:W[2]||(W[2]=te=>$.$emit("duplicate"))},"⧉",8,Cm),e.createElementVNode("button",{"data-test":"delete-page","data-tip":t.multi?`删除当前页「${a.value}」`:"仅多页面模板可删除页面",disabled:!t.multi,onClick:W[3]||(W[3]=te=>$.$emit("delete",t.activeIndex))},"✕",8,Sm),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${a.value}」`,disabled:t.activeIndex<=0,onClick:W[4]||(W[4]=te=>$.$emit("move",t.activeIndex,t.activeIndex-1))},"←",8,xm),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${a.value}」`,disabled:t.activeIndex>=t.pages.length-1,onClick:W[5]||(W[5]=te=>$.$emit("move",t.activeIndex,t.activeIndex+1))},"→",8,Bm)]),g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"page-tabs-tip",style:e.normalizeStyle({left:`${g.value.x}px`,top:`${g.value.y}px`})},e.toDisplayString(g.value.text),5)):e.createCommentVNode("",!0)],32))}}),Dm=ue($m,[["__scopeId","data-v-f1c7a18e"]]),At="print-studio:left",Pt="print-studio:right";function Rt(t,l){try{const o=localStorage.getItem(t);return o===null?l:o==="1"}catch{return l}}function Tm(){const t=e.ref(Rt(At,!1)),l=e.ref(Rt(Pt,!1)),o=e.ref(!1);e.watch(t,a=>{try{localStorage.setItem(At,a?"1":"0")}catch{}},{flush:"sync"}),e.watch(l,a=>{try{localStorage.setItem(Pt,a?"1":"0")}catch{}},{flush:"sync"});function n(){t.value=!t.value}function i(){l.value=!l.value}function u(){o.value=!1}return{leftCollapsed:t,rightCollapsed:l,toggleLeft:n,toggleRight:i,dirty:o,markSaved:u}}const Mm={class:"designer-body"},zm=e.defineComponent({__name:"PrintDesigner",props:{initialTemplate:{},initialElements:{},fields:{},isEdit:{type:Boolean},uploadImage:{type:Function},uploadDesignBackground:{type:Function},showHelp:{type:Boolean},fonts:{}},emits:["preview","save"],setup(t,{expose:l,emit:o}){const n=t,i=o,u=e.ref(!1);e.watch(()=>n.showHelp,X=>{X===!1&&(u.value=!1)});const{leftCollapsed:a,rightCollapsed:r,toggleLeft:d,toggleRight:c,dirty:m,markSaved:f}=Tm(),{scale:g,showRuler:p,showGrid:w,snapToGrid:C,showTableGhostBorder:N,templateData:v,elements:$,fields:W,tilingEnabled:te,selectedIds:J,selectedElement:L,selectedElements:E,select:O,selectElement:Y,clearSelection:z,selectAll:h,previewIds:A,setPreview:k,commitPreview:H,hasClipboard:G,copy:q,paste:_,cutSelected:B,canUndo:s,canRedo:x,undo:ee,redo:he,alignSelected:ge,groupSelected:se,ungroupSelected:K,deleteSelected:S,dragStart:T,dragStop:j,addElement:Z,addFieldElement:ne,moveLayer:ve,updateTemplateData:M,getTemplateJson:D,loadTemplate:U,pages:oe,activePageIndex:le,switchPage:me,addPage:R,duplicatePage:I,deletePage:y,renamePage:V,movePage:P,tableSelection:ie,setTableSelection:pe,recordHistory:ye}=Qt({initialTemplate:n.initialTemplate,initialElements:n.initialElements,initialFields:n.fields}),we=_t({elements:$,selectedIds:J,tableSelection:ie,recordHistory:ye}),xe=to({elements:$,selectedIds:J,recordHistory:ye}),Le=e.computed(()=>xe.active.value);e.watch([$,v],()=>{m.value=!0},{deep:!0});const _e=e.computed(()=>E.value.some(X=>!!X.options.groupId)),{guides:We,addGuide:et,moveGuide:tt,removeGuide:ot}=no(v,ye),nt=e.computed(()=>{const X=v.value,{width:Q}=b.getPaperDimensions(X);return Q-X.margins.left-X.margins.right});e.provide(He,{tableSelection:ie,setTableSelection:pe,recordHistory:ye,maxTableWidth:nt}),e.provide(Je,J),e.provide(Ut,A),e.provide(ft,e.computed(()=>n.uploadImage)),e.provide(gt,e.computed(()=>n.uploadDesignBackground));const{catalog:lt}=ao(e.computed(()=>n.fonts));e.provide(ht,lt),uo(e.computed(()=>be.buildFontFaceCss(n.fonts)));function Ge(){const X=D();return n.fonts?.length?Array.isArray(X.pages)?{...X,pages:X.pages.map(Q=>({...Q,fonts:[...n.fonts]}))}:{...X,fonts:[...n.fonts]}:X}e.watch(L,X=>{(!X||X.printElementType.type!=="table")&&pe(null)});const ze=e.ref(null),qe=e.ref(null);function at(X){qe.value=X}const it=e.computed(()=>{const X=v.value,Q=b.getPaperDimensions(X),fe=X.orientation==="landscape"?"横向":"纵向",De=`${b.PAPER_PRESETS[X.paperSize]?.label??X.paperSize} ${fe} ${Math.round(Q.width)}×${Math.round(Q.height)}mm`,Te=X.outputRotation;return Te?`${De}(旋转${Te}°)`:De});function Ke(){const X=ze.value?.$el;if(X){const Q=getComputedStyle(X),fe=parseFloat(Q.paddingLeft)+parseFloat(Q.paddingRight),Ve=parseFloat(Q.paddingTop)+parseFloat(Q.paddingBottom),De=b.getPaperDimensions(v.value),Te=96/25.4,Ie=b.computeFitScale(X.clientWidth-fe,X.clientHeight-Ve,De.width*Te,De.height*Te);ze.value?.fitToWindow(Ie)}}function rt(X){g.value=Math.max(b.FIT_SCALE_MIN_PERCENT,g.value+X)}function st(X){ze.value?.zoomByStep(X>0?1:-1)}function F(X){const Q=X.target.tagName;Q==="INPUT"||Q==="TEXTAREA"||Q==="SELECT"||(X.ctrlKey||X.metaKey)&&X.key==="0"&&(X.preventDefault(),Ke())}e.onMounted(()=>document.addEventListener("keydown",F)),e.onUnmounted(()=>document.removeEventListener("keydown",F));function ae(X){const Q=v.value.header.height,fe=v.value.footer.height;M(X),X.header.height<Q&&Se("header"),X.footer.height<fe&&Se("footer")}function ce(X,Q){v.value={...v.value,[X]:{...v.value[X],height:Q}}}function ke(X){M({...v.value}),Se(X)}function Se(X){const Q=b.getZoneRects(v.value)[X];$.value.some(Ve=>Ve.zone===X&&(Ve.options.top+Ve.options.height>Q.height||Ve.options.left+Ve.options.width>Q.width))&&alert(`${X==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}const Ee=Y;function $e(X){const Q=$.value.find(fe=>fe.id===X);Q&&(Q.options.visible=Q.options.visible===!1)}function Ae(X){const Q=$.value.find(fe=>fe.id===X);Q&&(Q.options.locked=!Q.options.locked)}const Pe=e.ref("page");e.watch(L,X=>{Pe.value=X?"element":"page"});const Ot={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},Ue=e.ref(!1),je=e.ref(null),dt=e.ref("");function Ht(X){const Q=$.value.find(Ve=>Ve.id===X);if(!Q||(O(X,!1),Pe.value="element",Q.options.locked))return;const fe=Ot[Q.printElementType.type];fe&&(je.value={kind:"element",element:Q,field:fe},dt.value=Q.options[fe]||"",Ue.value=!0)}function Wt(X,Q,fe){const Ve=$.value.find(jt=>jt.id===X);if(!Ve||(O(X,!1),Pe.value="element",Ve.options.locked))return;const De=Ve.options.tableRows??[],Te=b.findMainCell(De,Q,fe),Ie=De[Te.r]?.cells[Te.c];Ie&&(je.value={kind:"cell",cell:Ie},dt.value=Ie.formatter||"",Ue.value=!0)}function Gt(X){const Q=je.value;Q?.kind==="element"?Q.element.options[Q.field]=X||void 0:Q?.kind==="cell"&&(Q.cell.formatter=X||void 0),ye(),Ue.value=!1,je.value=null}function qt(X,Q){$.value.push(X),O(X.id,!1),ye()}e.watch(()=>n.initialTemplate,X=>{X&&U(X,n.initialElements)}),e.watch(()=>n.initialElements,X=>{X&&!n.initialTemplate&&(v.value={...v.value,elements:X.map(Q=>({...Q,options:{...Q.options},printElementType:{...Q.printElementType}}))})}),e.watch(()=>n.fields,X=>{W.value=X||[]});const Nt=e.computed(()=>{const X=v.value;return X?.tiling?.enabled!==!0?[]:be.validateTiling(X)});l({getTemplateJson:Ge,validateTemplate:()=>Nt.value});function Kt(){const X=Nt.value;if(X.length){alert(X[0].message),Pe.value="page";return}const Q=Ge();if(Array.isArray(Q.pages))try{be.normalizeTemplate(Q)}catch(fe){alert(fe instanceof Error?fe.message:String(fe));return}i("save",JSON.stringify(Q)),f()}return(X,Q)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["designer-container",{"format-painting":Le.value}])},[e.createVNode(sn,{"is-edit":t.isEdit,"can-undo":e.unref(s),"can-redo":e.unref(x),"has-multi-selection":e.unref(J).size>=2,"has-selection":e.unref(J).size>=1,"show-ruler":e.unref(p),"show-grid":e.unref(w),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(N),"selected-element-has-group":_e.value,"show-help":t.showHelp!==!1,"clipboard-disabled":e.unref(we).context.value!=="elements","has-clipboard":e.unref(G),scale:e.unref(g),"onUpdate:scale":Q[0]||(Q[0]=fe=>e.isRef(g)?g.value=fe:null),onPreview:Q[1]||(Q[1]=fe=>X.$emit("preview")),onSave:Kt,onUndo:e.unref(ee),onRedo:e.unref(he),onAlign:Q[2]||(Q[2]=fe=>e.unref(ge)(fe)),onMoveLayer:e.unref(ve),onToggleRuler:Q[3]||(Q[3]=fe=>p.value=!e.unref(p)),onToggleGrid:Q[4]||(Q[4]=fe=>w.value=!e.unref(w)),onToggleSnap:Q[5]||(Q[5]=fe=>C.value=!e.unref(C)),onToggleTableGhostBorder:Q[6]||(Q[6]=fe=>N.value=!e.unref(N)),onGroup:e.unref(se),onUngroup:e.unref(K),onFitWindow:Ke,onZoom:st,onHelp:Q[7]||(Q[7]=fe=>u.value=!0),onCopy:e.unref(q),onPaste:e.unref(_),onDelete:e.unref(S)},{default:e.withCtx(()=>[e.createVNode(Qn,{format:e.unref(we),painter:e.unref(xe)},null,8,["format","painter"])]),_:1},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","show-help","clipboard-disabled","has-clipboard","scale","onUndo","onRedo","onMoveLayer","onGroup","onUngroup","onCopy","onPaste","onDelete"]),e.createVNode(Dm,{pages:e.unref(oe),"active-index":e.unref(le),multi:e.unref(oe).length>1,"tiling-enabled":e.unref(te),onSelect:e.unref(me),onAdd:e.unref(R),onDuplicate:e.unref(I),onDelete:e.unref(y),onRename:e.unref(V),onMove:e.unref(P)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",Mm,[e.createVNode(Ml,{fields:e.unref(W),elements:e.unref($),"selected-ids":e.unref(J),collapsed:e.unref(a),onSelect:e.unref(Ee),onMoveLayer:e.unref(ve),onGroup:e.unref(se),onUngroup:e.unref(K),onToggleVisible:$e,onToggleLocked:Ae,onToggleCollapse:e.unref(d)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onGroup","onUngroup","onToggleCollapse"]),e.createVNode(Za,{ref_key:"canvasAreaRef",ref:ze,"template-data":e.unref(v),elements:e.unref($),scale:e.unref(g)/100,"show-ruler":e.unref(p),"show-grid":e.unref(w),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(N),"has-clipboard":e.unref(G),guides:e.unref(We),onSelect:e.unref(Ee),onDropElement:e.unref(Z),onDropField:e.unref(ne),onDragStart:e.unref(T),onDragStop:e.unref(j),onDblclickElement:Ht,onDblclickCell:Wt,onZoneHeightChange:ce,onZoneHeightCommit:ke,onSelectAll:e.unref(h),onClearSelection:e.unref(z),onPreview:e.unref(k),onCommitPreview:e.unref(H),onPaste:e.unref(_),onCopy:e.unref(q),onCut:e.unref(B),onDelete:e.unref(S),onMoveLayer:e.unref(ve),onCoordinate:at,onAddGuide:e.unref(et),onGuideMove:e.unref(tt),onGuideRemove:e.unref(ot),onZoom:rt,onCloneElement:qt},null,8,["template-data","elements","scale","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","has-clipboard","guides","onSelect","onDropElement","onDropField","onDragStart","onDragStop","onSelectAll","onClearSelection","onPreview","onCommitPreview","onPaste","onCopy","onCut","onDelete","onMoveLayer","onAddGuide","onGuideMove","onGuideRemove"]),e.createVNode(Ju,{element:e.unref(L),"template-data":e.unref(v),fields:e.unref(W),"table-selection":e.unref(ie),"record-history":e.unref(ye),collapsed:e.unref(r),"multi-page":e.unref(oe).length>1,"active-tab":Pe.value,"onUpdate:activeTab":Q[8]||(Q[8]=fe=>Pe.value=fe),onDeleteElement:e.unref(S),"onUpdate:templateData":ae,onToggleCollapse:e.unref(c)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode(lm,{coordinate:qe.value,scale:e.unref(g),"element-count":e.unref($).length,"selected-count":e.unref(J).size,paper:it.value,dirty:e.unref(m)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(Qe,{modelValue:Ue.value,"onUpdate:modelValue":Q[9]||(Q[9]=fe=>Ue.value=fe),fields:e.unref(W),expression:dt.value,"onUpdate:expression":Gt},null,8,["modelValue","fields","expression"]),e.createVNode(Em,{visible:u.value,onClose:Q[10]||(Q[10]=fe=>u.value=!1)},null,8,["visible"])],2))}}),Am=ue(zm,[["__scopeId","data-v-4c3c139f"]]),Pm={class:"print-html-preview"},Rm={key:0,class:"print-html-preview-error"},Lm={key:1,class:"print-html-preview-loading"},Um=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(t,{expose:l,emit:o}){const n=t,i=o,u=e.ref(),a=e.ref(!1),r=e.ref("");let d=0;async function c(){if(!n.templateJson){r.value="",a.value=!1;return}const f=++d;a.value=!0,r.value="";try{const{html:g,pageCount:p,copies:w}=await Me.renderHtmlPages(n.templateJson,n.printData,n.baseUrl,Me.browserCodeRenderer,{fontBaseUrl:n.fontBaseUrl});if(f!==d)return;const C=u.value?.contentWindow?.document;C&&(C.open(),C.write(g),C.close()),i("rendered",p,w)}catch(g){if(f!==d)return;r.value=g instanceof Error?g.message:"未知错误",i("error",r.value)}finally{f===d&&(a.value=!1)}}function m(){const f=u.value?.contentWindow;f&&(f.focus(),f.print())}return e.watch(()=>[n.templateJson,n.printData,n.baseUrl,n.fontBaseUrl],()=>{c()},{immediate:!0,deep:!0}),e.onBeforeUnmount(()=>{d++}),l({print:m,rerender:c}),(f,g)=>(e.openBlock(),e.createElementBlock("div",Pm,[r.value?(e.openBlock(),e.createElementBlock("div",Rm,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(r.value),1)])):a.value?(e.openBlock(),e.createElementBlock("div",Lm,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:u,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!a.value&&!r.value]])]))}}),Im=ue(Um,[["__scopeId","data-v-ff7de2b5"]]);Object.defineProperty(exports,"DEFAULT_DEMO_DATA",{enumerable:!0,get:()=>b.DEFAULT_DEMO_DATA});Object.defineProperty(exports,"getDemoData",{enumerable:!0,get:()=>b.getDemoData});Object.defineProperty(exports,"browserCodeRenderer",{enumerable:!0,get:()=>Me.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Me.renderHtmlPages});exports.FONT_CATALOG_KEY=ht;exports.PrintDesigner=Am;exports.PrintHtmlPreview=Im;exports.TOOLBAR_OVERFLOW=bt;exports.UPLOAD_DESIGN_BACKGROUND_KEY=gt;exports.UPLOAD_IMAGE_KEY=ft;exports.createDefaultTemplate=Re;exports.createOverflowUnitDirective=yt;exports.emptyToolbarOverflow=Ft;exports.provideToolbarOverflow=It;exports.toRuntimePool=Ze;exports.useToolbarOverflow=Et;
|
|
682
|
+
`},xm=[Vm,Nm,wm,Cm,Sm],Bm={class:"help-modal"},$m={class:"help-modal-header"},Dm={class:"help-modal-body"},Tm={class:"help-modal-sidebar"},Mm=["onClick"],zm={class:"help-modal-content"},Am=["innerHTML"],mt="worm-print-help-tab",Pm=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(t,{emit:l}){const o=t,n=l,i=xm,c=e.ref(o.initialTab);e.onMounted(()=>{const m=localStorage.getItem(mt);m&&i.some(u=>u.id===m)&&(c.value=m)}),e.watch(()=>o.visible,m=>{if(m){const u=localStorage.getItem(mt);u&&i.some(g=>g.id===u)&&(c.value=u)}});function r(m){c.value=m,localStorage.setItem(mt,m),n("update:tab",m)}const a=e.computed(()=>i.find(u=>u.id===c.value)?.content||"");function s(m){m.key==="Escape"&&o.visible&&n("close")}return e.onMounted(()=>{document.addEventListener("keydown",s)}),e.onUnmounted(()=>{document.removeEventListener("keydown",s)}),(m,u)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"help-modal"},{default:e.withCtx(()=>[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"help-modal-overlay",onClick:u[1]||(u[1]=e.withModifiers(g=>m.$emit("close"),["self"]))},[e.createElementVNode("div",Bm,[e.createElementVNode("div",$m,[u[2]||(u[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:u[0]||(u[0]=g=>m.$emit("close"))}," × ")]),e.createElementVNode("div",Dm,[e.createElementVNode("div",Tm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),g=>(e.openBlock(),e.createElementBlock("button",{key:g.id,class:e.normalizeClass(["help-tab",{active:c.value===g.id}]),onClick:d=>r(g.id)},e.toDisplayString(g.title),11,Mm))),128))]),e.createElementVNode("div",zm,[e.createElementVNode("div",{class:"help-content",innerHTML:a.value},null,8,Am)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),Rm=pe(Pm,[["__scopeId","data-v-31115934"]]),Lm={class:"page-tabs-list"},Im=["onBlur","onKeydown"],Um=["data-tip","onClick","onDblclick"],Fm={class:"page-tabs-actions"},Om=["data-tip","disabled"],Hm=["data-tip","disabled"],Wm=["data-tip","disabled"],Gm=["data-tip","disabled"],qm=["data-tip","disabled"],Km=e.defineComponent({__name:"PageTabs",props:{pages:{},activeIndex:{},multi:{type:Boolean},tilingEnabled:{type:Boolean}},emits:["select","add","duplicate","delete","rename","move"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(-1),c=e.ref(""),r=e.computed(()=>o.pages[o.activeIndex]?.name||`页面 ${o.activeIndex+1}`),a=e.computed(()=>o.tilingEnabled?pt:"新增页面(在当前页后追加空白页)"),s=e.computed(()=>o.tilingEnabled?pt:`复制当前页「${r.value}」`);function m(S){i.value=S,c.value=o.pages[S]?.name??""}function u(S){if(i.value!==S)return;const O=c.value.trim();O&&n("rename",S,O),i.value=-1}function g(){i.value=-1}const d=e.ref(null);let f=null;function z(S){const O=S.dataset.tip;if(!O)return;const oe=S.getBoundingClientRect(),ee=Math.min(Math.max(oe.left+oe.width/2,80),window.innerWidth-80);d.value={text:O,x:ee,y:oe.bottom+6}}function V(S){const O=S.target.closest?.("[data-tip]");O&&(f&&clearTimeout(f),f=setTimeout(()=>z(O),300))}function N(S){const O=S.target.closest?.("[data-tip]");O&&S.relatedTarget?.closest?.("[data-tip]")===O||p()}function p(){f&&(clearTimeout(f),f=null),d.value=null}return e.onUnmounted(p),(S,O)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:V,onMouseout:N,onMouseleave:p},[e.createElementVNode("div",Lm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.pages,(oe,ee)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:ee},[i.value===ee?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":O[0]||(O[0]=Z=>c.value=Z),class:"page-tab-rename","data-test":"page-rename-input",onBlur:Z=>u(ee),onKeydown:[e.withKeys(Z=>u(ee),["enter"]),e.withKeys(g,["esc"])]},null,40,Im)),[[e.vModelText,c.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:ee===t.activeIndex}]),"data-tip":oe.name?`${oe.name}(双击重命名)`:"双击重命名",onClick:Z=>S.$emit("select",ee),onDblclick:Z=>m(ee)},e.toDisplayString(oe.name||`页面 ${ee+1}`),43,Um))],64))),128))]),e.createElementVNode("div",Fm,[e.createElementVNode("button",{"data-test":"add-page","data-tip":a.value,disabled:t.tilingEnabled,onClick:O[1]||(O[1]=oe=>S.$emit("add"))},"+",8,Om),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":s.value,disabled:t.tilingEnabled,onClick:O[2]||(O[2]=oe=>S.$emit("duplicate"))},"⧉",8,Hm),e.createElementVNode("button",{"data-test":"delete-page","data-tip":t.multi?`删除当前页「${r.value}」`:"仅多页面模板可删除页面",disabled:!t.multi,onClick:O[3]||(O[3]=oe=>S.$emit("delete",t.activeIndex))},"✕",8,Wm),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${r.value}」`,disabled:t.activeIndex<=0,onClick:O[4]||(O[4]=oe=>S.$emit("move",t.activeIndex,t.activeIndex-1))},"←",8,Gm),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${r.value}」`,disabled:t.activeIndex>=t.pages.length-1,onClick:O[5]||(O[5]=oe=>S.$emit("move",t.activeIndex,t.activeIndex+1))},"→",8,qm)]),d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"page-tabs-tip",style:e.normalizeStyle({left:`${d.value.x}px`,top:`${d.value.y}px`})},e.toDisplayString(d.value.text),5)):e.createCommentVNode("",!0)],32))}}),jm=pe(Km,[["__scopeId","data-v-f1c7a18e"]]),At="print-studio:left",Pt="print-studio:right";function Rt(t,l){try{const o=localStorage.getItem(t);return o===null?l:o==="1"}catch{return l}}function Ym(){const t=e.ref(Rt(At,!1)),l=e.ref(Rt(Pt,!1)),o=e.ref(!1);e.watch(t,r=>{try{localStorage.setItem(At,r?"1":"0")}catch{}},{flush:"sync"}),e.watch(l,r=>{try{localStorage.setItem(Pt,r?"1":"0")}catch{}},{flush:"sync"});function n(){t.value=!t.value}function i(){l.value=!l.value}function c(){o.value=!1}return{leftCollapsed:t,rightCollapsed:l,toggleLeft:n,toggleRight:i,dirty:o,markSaved:c}}const Xm={class:"designer-body"},Zm=e.defineComponent({__name:"PrintDesigner",props:{initialTemplate:{},initialElements:{},fields:{},isEdit:{type:Boolean},uploadImage:{type:Function},uploadDesignBackground:{type:Function},showHelp:{type:Boolean},fonts:{}},emits:["preview","save"],setup(t,{expose:l,emit:o}){const n=t,i=o,c=e.ref(!1);e.watch(()=>n.showHelp,Q=>{Q===!1&&(c.value=!1)});const{leftCollapsed:r,rightCollapsed:a,toggleLeft:s,toggleRight:m,dirty:u,markSaved:g}=Ym(),{scale:d,showRuler:f,showGrid:z,snapToGrid:V,showTableGhostBorder:N,templateData:p,elements:S,fields:O,tilingEnabled:oe,selectedIds:ee,selectedElement:Z,selectedElements:y,select:U,selectElement:Y,clearSelection:q,selectAll:E,previewIds:T,setPreview:b,commitPreview:$,hasClipboard:M,copy:L,paste:J,cutSelected:P,canUndo:X,canRedo:re,undo:le,redo:v,alignSelected:x,groupSelected:K,ungroupSelected:G,deleteSelected:C,dragStart:D,dragStop:j,addElement:_,addFieldElement:ae,moveLayer:ge,updateTemplateData:A,getTemplateJson:B,loadTemplate:F,pages:ne,activePageIndex:ie,switchPage:ve,addPage:I,duplicatePage:H,deletePage:k,renamePage:w,movePage:R,tableSelection:ce,setTableSelection:fe,recordHistory:ye}=_t({initialTemplate:n.initialTemplate,initialElements:n.initialElements,initialFields:n.fields}),we=eo({elements:S,selectedIds:ee,tableSelection:ce,recordHistory:ye}),xe=oo({elements:S,selectedIds:ee,recordHistory:ye}),Le=e.computed(()=>xe.active.value);e.watch([S,p],()=>{u.value=!0},{deep:!0});const _e=e.computed(()=>y.value.some(Q=>!!Q.options.groupId)),{guides:We,addGuide:et,moveGuide:tt,removeGuide:ot}=lo(p,ye),nt=e.computed(()=>{const Q=p.value,{width:te}=h.getPaperDimensions(Q);return te-Q.margins.left-Q.margins.right});e.provide(He,{tableSelection:ce,setTableSelection:fe,recordHistory:ye,maxTableWidth:nt}),e.provide(Je,ee),e.provide(It,T),e.provide(ft,e.computed(()=>n.uploadImage)),e.provide(gt,e.computed(()=>n.uploadDesignBackground));const{catalog:lt}=io(e.computed(()=>n.fonts));e.provide(ht,lt),mo(e.computed(()=>be.buildFontFaceCss(n.fonts)));function Ge(){const Q=B();return n.fonts?.length?Array.isArray(Q.pages)?{...Q,pages:Q.pages.map(te=>({...te,fonts:[...n.fonts]}))}:{...Q,fonts:[...n.fonts]}:Q}e.watch(Z,Q=>{(!Q||Q.printElementType.type!=="table")&&fe(null)});const ze=e.ref(null),qe=e.ref(null);function at(Q){qe.value=Q}const it=e.computed(()=>{const Q=p.value,te=h.getPaperDimensions(Q),he=Q.orientation==="landscape"?"横向":"纵向",De=`${h.PAPER_PRESETS[Q.paperSize]?.label??Q.paperSize} ${he} ${Math.round(te.width)}×${Math.round(te.height)}mm`,Te=Q.outputRotation;return Te?`${De}(旋转${Te}°)`:De});function Ke(){const Q=ze.value?.$el;if(Q){const te=getComputedStyle(Q),he=parseFloat(te.paddingLeft)+parseFloat(te.paddingRight),Ve=parseFloat(te.paddingTop)+parseFloat(te.paddingBottom),De=h.getPaperDimensions(p.value),Te=96/25.4,Ue=h.computeFitScale(Q.clientWidth-he,Q.clientHeight-Ve,De.width*Te,De.height*Te);ze.value?.fitToWindow(Ue)}}function rt(Q){d.value=Math.max(h.FIT_SCALE_MIN_PERCENT,d.value+Q)}function st(Q){ze.value?.zoomByStep(Q>0?1:-1)}function W(Q){const te=Q.target.tagName;te==="INPUT"||te==="TEXTAREA"||te==="SELECT"||(Q.ctrlKey||Q.metaKey)&&Q.key==="0"&&(Q.preventDefault(),Ke())}e.onMounted(()=>document.addEventListener("keydown",W)),e.onUnmounted(()=>document.removeEventListener("keydown",W));function se(Q){const te=p.value.header.height,he=p.value.footer.height;A(Q),Q.header.height<te&&Se("header"),Q.footer.height<he&&Se("footer")}function me(Q,te){p.value={...p.value,[Q]:{...p.value[Q],height:te}}}function ke(Q){A({...p.value}),Se(Q)}function Se(Q){const te=h.getZoneRects(p.value)[Q];S.value.some(Ve=>Ve.zone===Q&&(Ve.options.top+Ve.options.height>te.height||Ve.options.left+Ve.options.width>te.width))&&alert(`${Q==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}const Ee=Y;function $e(Q){const te=S.value.find(he=>he.id===Q);te&&(te.options.visible=te.options.visible===!1)}function Ae(Q){const te=S.value.find(he=>he.id===Q);te&&(te.options.locked=!te.options.locked)}const Pe=e.ref("page");e.watch(Z,Q=>{Pe.value=Q?"element":"page"});const Ht={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},Ie=e.ref(!1),je=e.ref(null),dt=e.ref("");function Wt(Q){const te=S.value.find(Ve=>Ve.id===Q);if(!te||(U(Q,!1),Pe.value="element",te.options.locked))return;const he=Ht[te.printElementType.type];he&&(je.value={kind:"element",element:te,field:he},dt.value=te.options[he]||"",Ie.value=!0)}function Gt(Q,te,he){const Ve=S.value.find(Yt=>Yt.id===Q);if(!Ve||(U(Q,!1),Pe.value="element",Ve.options.locked))return;const De=Ve.options.tableRows??[],Te=h.findMainCell(De,te,he),Ue=De[Te.r]?.cells[Te.c];Ue&&(je.value={kind:"cell",cell:Ue},dt.value=Ue.formatter||"",Ie.value=!0)}function qt(Q){const te=je.value;te?.kind==="element"?te.element.options[te.field]=Q||void 0:te?.kind==="cell"&&(te.cell.formatter=Q||void 0),ye(),Ie.value=!1,je.value=null}function Kt(Q,te){S.value.push(Q),U(Q.id,!1),ye()}e.watch(()=>n.initialTemplate,Q=>{Q&&F(Q,n.initialElements)}),e.watch(()=>n.initialElements,Q=>{Q&&!n.initialTemplate&&(p.value={...p.value,elements:Q.map(te=>({...te,options:{...te.options},printElementType:{...te.printElementType}}))})}),e.watch(()=>n.fields,Q=>{O.value=Q||[]});const Nt=e.computed(()=>{const Q=p.value;return Q?.tiling?.enabled!==!0?[]:be.validateTiling(Q)});l({getTemplateJson:Ge,validateTemplate:()=>Nt.value});function jt(){const Q=Nt.value;if(Q.length){alert(Q[0].message),Pe.value="page";return}const te=Ge();if(Array.isArray(te.pages))try{be.normalizeTemplate(te)}catch(he){alert(he instanceof Error?he.message:String(he));return}i("save",JSON.stringify(te)),g()}return(Q,te)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["designer-container",{"format-painting":Le.value}])},[e.createVNode(dn,{"is-edit":t.isEdit,"can-undo":e.unref(X),"can-redo":e.unref(re),"has-multi-selection":e.unref(ee).size>=2,"has-selection":e.unref(ee).size>=1,"show-ruler":e.unref(f),"show-grid":e.unref(z),"snap-to-grid":e.unref(V),"show-table-ghost-border":e.unref(N),"selected-element-has-group":_e.value,"show-help":t.showHelp!==!1,"clipboard-disabled":e.unref(we).context.value!=="elements","has-clipboard":e.unref(M),scale:e.unref(d),"onUpdate:scale":te[0]||(te[0]=he=>e.isRef(d)?d.value=he:null),onPreview:te[1]||(te[1]=he=>Q.$emit("preview")),onSave:jt,onUndo:e.unref(le),onRedo:e.unref(v),onAlign:te[2]||(te[2]=he=>e.unref(x)(he)),onMoveLayer:e.unref(ge),onToggleRuler:te[3]||(te[3]=he=>f.value=!e.unref(f)),onToggleGrid:te[4]||(te[4]=he=>z.value=!e.unref(z)),onToggleSnap:te[5]||(te[5]=he=>V.value=!e.unref(V)),onToggleTableGhostBorder:te[6]||(te[6]=he=>N.value=!e.unref(N)),onGroup:e.unref(K),onUngroup:e.unref(G),onFitWindow:Ke,onZoom:st,onHelp:te[7]||(te[7]=he=>c.value=!0),onCopy:e.unref(L),onPaste:e.unref(J),onDelete:e.unref(C)},{default:e.withCtx(()=>[e.createVNode(_n,{format:e.unref(we),painter:e.unref(xe)},null,8,["format","painter"])]),_:1},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","show-help","clipboard-disabled","has-clipboard","scale","onUndo","onRedo","onMoveLayer","onGroup","onUngroup","onCopy","onPaste","onDelete"]),e.createVNode(jm,{pages:e.unref(ne),"active-index":e.unref(ie),multi:e.unref(ne).length>1,"tiling-enabled":e.unref(oe),onSelect:e.unref(ve),onAdd:e.unref(I),onDuplicate:e.unref(H),onDelete:e.unref(k),onRename:e.unref(w),onMove:e.unref(R)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",Xm,[e.createVNode(Al,{fields:e.unref(O),elements:e.unref(S),"selected-ids":e.unref(ee),collapsed:e.unref(r),onSelect:e.unref(Ee),onMoveLayer:e.unref(ge),onGroup:e.unref(K),onUngroup:e.unref(G),onToggleVisible:$e,onToggleLocked:Ae,onToggleCollapse:e.unref(s)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onGroup","onUngroup","onToggleCollapse"]),e.createVNode(Ja,{ref_key:"canvasAreaRef",ref:ze,"template-data":e.unref(p),elements:e.unref(S),scale:e.unref(d)/100,"show-ruler":e.unref(f),"show-grid":e.unref(z),"snap-to-grid":e.unref(V),"show-table-ghost-border":e.unref(N),"has-clipboard":e.unref(M),guides:e.unref(We),onSelect:e.unref(Ee),onDropElement:e.unref(_),onDropField:e.unref(ae),onDragStart:e.unref(D),onDragStop:e.unref(j),onDblclickElement:Wt,onDblclickCell:Gt,onZoneHeightChange:me,onZoneHeightCommit:ke,onSelectAll:e.unref(E),onClearSelection:e.unref(q),onPreview:e.unref(b),onCommitPreview:e.unref($),onPaste:e.unref(J),onCopy:e.unref(L),onCut:e.unref(P),onDelete:e.unref(C),onMoveLayer:e.unref(ge),onCoordinate:at,onAddGuide:e.unref(et),onGuideMove:e.unref(tt),onGuideRemove:e.unref(ot),onZoom:rt,onCloneElement:Kt},null,8,["template-data","elements","scale","show-ruler","show-grid","snap-to-grid","show-table-ghost-border","has-clipboard","guides","onSelect","onDropElement","onDropField","onDragStart","onDragStop","onSelectAll","onClearSelection","onPreview","onCommitPreview","onPaste","onCopy","onCut","onDelete","onMoveLayer","onAddGuide","onGuideMove","onGuideRemove"]),e.createVNode(vm,{element:e.unref(Z),"template-data":e.unref(p),fields:e.unref(O),"table-selection":e.unref(ce),"record-history":e.unref(ye),collapsed:e.unref(a),"multi-page":e.unref(ne).length>1,"active-tab":Pe.value,"onUpdate:activeTab":te[8]||(te[8]=he=>Pe.value=he),onDeleteElement:e.unref(C),"onUpdate:templateData":se,onToggleCollapse:e.unref(m)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode(km,{coordinate:qe.value,scale:e.unref(d),"element-count":e.unref(S).length,"selected-count":e.unref(ee).size,paper:it.value,dirty:e.unref(u)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(Qe,{modelValue:Ie.value,"onUpdate:modelValue":te[9]||(te[9]=he=>Ie.value=he),fields:e.unref(O),expression:dt.value,"onUpdate:expression":qt},null,8,["modelValue","fields","expression"]),e.createVNode(Rm,{visible:c.value,onClose:te[10]||(te[10]=he=>c.value=!1)},null,8,["visible"])],2))}}),Jm=pe(Zm,[["__scopeId","data-v-4c3c139f"]]),Qm={class:"print-html-preview"},_m={key:0,class:"print-html-preview-error"},ep={key:1,class:"print-html-preview-loading"},tp=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(t,{expose:l,emit:o}){const n=t,i=o,c=e.ref(),r=e.ref(!1),a=e.ref("");let s=0;async function m(){if(!n.templateJson){a.value="",r.value=!1;return}const g=++s;r.value=!0,a.value="";try{const{html:d,pageCount:f,copies:z}=await Me.renderHtmlPages(n.templateJson,n.printData,n.baseUrl,Me.browserCodeRenderer,{fontBaseUrl:n.fontBaseUrl});if(g!==s)return;const V=c.value?.contentWindow?.document;V&&(V.open(),V.write(d),V.close()),i("rendered",f,z)}catch(d){if(g!==s)return;a.value=d instanceof Error?d.message:"未知错误",i("error",a.value)}finally{g===s&&(r.value=!1)}}function u(){const g=c.value?.contentWindow;g&&(g.focus(),g.print())}return e.watch(()=>[n.templateJson,n.printData,n.baseUrl,n.fontBaseUrl],()=>{m()},{immediate:!0,deep:!0}),e.onBeforeUnmount(()=>{s++}),l({print:u,rerender:m}),(g,d)=>(e.openBlock(),e.createElementBlock("div",Qm,[a.value?(e.openBlock(),e.createElementBlock("div",_m,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(a.value),1)])):r.value?(e.openBlock(),e.createElementBlock("div",ep,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:c,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!r.value&&!a.value]])]))}}),op=pe(tp,[["__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:()=>Me.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Me.renderHtmlPages});exports.FONT_CATALOG_KEY=ht;exports.PrintDesigner=Jm;exports.PrintHtmlPreview=op;exports.TOOLBAR_OVERFLOW=bt;exports.UPLOAD_DESIGN_BACKGROUND_KEY=gt;exports.UPLOAD_IMAGE_KEY=ft;exports.createDefaultTemplate=Re;exports.createOverflowUnitDirective=yt;exports.emptyToolbarOverflow=Ft;exports.provideToolbarOverflow=Ut;exports.toRuntimePool=Ze;exports.useToolbarOverflow=Et;
|