@worm-vue3-print/canvas 1.3.8 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/canvas.css +1 -1
  2. package/dist/components/CanvasArea.vue.d.ts +1 -1
  3. package/dist/components/CanvasPaper.vue.d.ts +1 -1
  4. package/dist/components/DesignerToolbar.vue.d.ts +1 -1
  5. package/dist/components/ExpressionEditor.vue.d.ts +1 -1
  6. package/dist/components/FieldTreePanel.vue.d.ts +1 -1
  7. package/dist/components/FormatToolbar.vue.d.ts +1 -1
  8. package/dist/components/HelpButton.vue.d.ts +1 -1
  9. package/dist/components/HelpModal.vue.d.ts +1 -1
  10. package/dist/components/LayerPanel.vue.d.ts +1 -1
  11. package/dist/components/LeftPanel.vue.d.ts +1 -1
  12. package/dist/components/PageTabs.vue.d.ts +1 -1
  13. package/dist/components/PresetColorPicker.vue.d.ts +3 -1
  14. package/dist/components/PrintDesigner.vue.d.ts +1 -1
  15. package/dist/components/PrintHtmlPreview.vue.d.ts +6 -1
  16. package/dist/components/PropertyPanel.vue.d.ts +1 -1
  17. package/dist/components/Ruler.vue.d.ts +1 -1
  18. package/dist/components/StatusBar.vue.d.ts +1 -1
  19. package/dist/components/ToolbarDropdown.vue.d.ts +1 -1
  20. package/dist/components/ToolbarMore.vue.d.ts +1 -1
  21. package/dist/components/WatermarkConfig.vue.d.ts +1 -1
  22. package/dist/components/elements/BarcodeElement.vue.d.ts +1 -1
  23. package/dist/components/elements/BaseElement.vue.d.ts +1 -1
  24. package/dist/components/elements/CellBarcode.vue.d.ts +5 -1
  25. package/dist/components/elements/CellImage.vue.d.ts +1 -1
  26. package/dist/components/elements/FlowListElement.vue.d.ts +15 -0
  27. package/dist/components/elements/HtmlElement.vue.d.ts +1 -1
  28. package/dist/components/elements/ImageElement.vue.d.ts +1 -1
  29. package/dist/components/elements/LineElement.vue.d.ts +1 -1
  30. package/dist/components/elements/LongTextElement.vue.d.ts +1 -1
  31. package/dist/components/elements/PageNumberElement.vue.d.ts +1 -1
  32. package/dist/components/elements/QrcodeElement.vue.d.ts +1 -1
  33. package/dist/components/elements/ShapeElement.vue.d.ts +1 -1
  34. package/dist/components/elements/TableContextMenu.vue.d.ts +1 -1
  35. package/dist/components/elements/TableElement.vue.d.ts +1 -1
  36. package/dist/components/elements/TextElement.vue.d.ts +1 -1
  37. package/dist/components/property/AdvancedGroup.vue.d.ts +1 -1
  38. package/dist/components/property/AppearanceGroup.vue.d.ts +1 -1
  39. package/dist/components/property/BindingControl.vue.d.ts +1 -1
  40. package/dist/components/property/BorderBgGroup.vue.d.ts +6 -2
  41. package/dist/components/property/CodeGroup.vue.d.ts +1 -1
  42. package/dist/components/property/CropAnchorField.vue.d.ts +10 -1
  43. package/dist/components/property/DesignBackgroundConfig.vue.d.ts +1 -1
  44. package/dist/components/property/FlowListGroup.vue.d.ts +15 -0
  45. package/dist/components/property/FontSelect.vue.d.ts +1 -1
  46. package/dist/components/property/ImageContentUpload.vue.d.ts +1 -1
  47. package/dist/components/property/PaginationGroup.vue.d.ts +1 -1
  48. package/dist/components/property/PositionSizeGroup.vue.d.ts +1 -1
  49. package/dist/components/property/PropertyGroup.vue.d.ts +1 -1
  50. package/dist/components/property/PropertySearch.vue.d.ts +1 -1
  51. package/dist/components/property/ResetButton.vue.d.ts +29 -0
  52. package/dist/components/property/StepperInput.vue.d.ts +1 -1
  53. package/dist/components/property/TableCellGroup.vue.d.ts +1 -1
  54. package/dist/components/property/TableRowGroup.vue.d.ts +1 -1
  55. package/dist/components/property/TableSettingsGroup.vue.d.ts +1 -1
  56. package/dist/components/property/TilingConfig.vue.d.ts +1 -1
  57. package/dist/composables/useAdsorb.d.ts +1 -1
  58. package/dist/composables/useAdsorbManager.d.ts +1 -1
  59. package/dist/composables/useClipboard.d.ts +21 -1
  60. package/dist/composables/useDesignerState.d.ts +121 -1
  61. package/dist/composables/useDocumentFontFace.d.ts +1 -1
  62. package/dist/composables/useDrag.d.ts +1 -1
  63. package/dist/composables/useFontCatalog.d.ts +10 -24
  64. package/dist/composables/useFormatPainter.d.ts +1 -1
  65. package/dist/composables/useFormatToolbar.d.ts +16 -4
  66. package/dist/composables/useGuides.d.ts +1 -1
  67. package/dist/composables/useHistory.d.ts +1 -1
  68. package/dist/composables/useHostAdapter.d.ts +1 -1
  69. package/dist/composables/useHoverTip.d.ts +31 -0
  70. package/dist/composables/useSelection.d.ts +1 -1
  71. package/dist/composables/useShrinkFit.d.ts +1 -1
  72. package/dist/composables/useStudioChrome.d.ts +1 -1
  73. package/dist/composables/useTableSelection.d.ts +1 -1
  74. package/dist/composables/useToolbarOverflow.d.ts +1 -1
  75. package/dist/help-content/changelog.d.ts +1 -1
  76. package/dist/help-content/faq.d.ts +1 -1
  77. package/dist/help-content/features.d.ts +1 -1
  78. package/dist/help-content/getting-started.d.ts +1 -1
  79. package/dist/help-content/index.d.ts +1 -1
  80. package/dist/help-content/shortcuts.d.ts +1 -1
  81. package/dist/index.cjs +42 -7
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.js +6509 -5242
  84. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * @worm-vue3-print/canvas v1.3.8
2
+ * @worm-vue3-print/canvas v1.3.10
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"),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&gt;1000, &quot;大单&quot;, &quot;小单&quot;)}<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:`
6
+ */"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),me=require("@worm-vue3-print/core"),p=require("@worm-vue3-print/core/designer"),ve=require("lucide-vue-next"),Ge=require("@worm-vue3-print/core/browser"),Pt=require("jsbarcode"),Xt=require("dompurify"),dt=Symbol("selected-ids"),Ft=Symbol("preview-ids");function Qt(t){const l=e.ref(new Set),o=e.ref(new Set),i=e.computed(()=>t.value.filter(v=>l.value.has(v.id))),d=e.computed(()=>l.value.size>0);function c(v,y=!1){if(y){const h=new Set(l.value);h.has(v)?h.delete(v):h.add(v),l.value=h}else l.value=new Set([v])}function a(){l.value=new Set}function n(v){l.value=new Set(v)}function r(v){o.value=new Set(v)}function s(){o.value=new Set}function u(){l.value=new Set(o.value),o.value=new Set}function k(){const v=i.value;if(v.length===0)return null;let y=1/0,h=1/0,m=-1/0,E=-1/0;return v.forEach(f=>{y=Math.min(y,f.options.left),h=Math.min(h,f.options.top),m=Math.max(m,f.options.left+f.options.width),E=Math.max(E,f.options.top+f.options.height)}),{left:y,top:h,width:m-y,height:E-h}}return{selectedIds:l,selectedElements:i,hasSelection:d,select:c,clearSelection:a,selectAll:n,getSelectionBounds:k,previewIds:o,setPreview:r,clearPreview:s,commitPreview:u}}function Jt(){const t=e.ref(null);function l(d){t.value=d.map(c=>({options:{...c.options},printElementType:{...c.printElementType}}))}function o(d=10){if(!t.value)return null;const c=new Map;for(const n of t.value){const r=n.options.groupId;r&&c.set(r,(c.get(r)??0)+1)}const a=new Map;for(const[n,r]of c)a.set(n,r>=2?p.generateGroupId():void 0);return t.value.map(n=>({id:p.generateId(),options:{...n.options,left:n.options.left+d,top:n.options.top+d,groupId:n.options.groupId?a.get(n.options.groupId):void 0},printElementType:{...n.printElementType}}))}function i(){return t.value!==null&&t.value.length>0}return{clipboard:t,copy:l,paste:o,hasData:i}}function _t(t){const o=e.ref([]),i=e.ref([]),d=e.ref(!1),c=e.ref(!1);function a(){d.value=o.value.length>0,c.value=i.value.length>0}function n(y){const h={elements:JSON.parse(JSON.stringify(y?.elements??[])),templateData:JSON.parse(JSON.stringify(y?.templateData??{}))};return y?.pages&&(h.pages=JSON.parse(JSON.stringify(y.pages)),y.activePageIndex!==void 0&&(h.activePageIndex=y.activePageIndex)),h}function r(y){return n(y)}function s(y){o.value.push(r(y)),i.value=[],o.value.length>50&&o.value.shift(),a()}function u(y){if(o.value.length===0)return null;const h=o.value.pop();return i.value.push(y?r(y):n(h)),a(),o.value.length>0?n(o.value[o.value.length-1]):null}function k(y){if(i.value.length===0)return null;const h=i.value.pop();return o.value.push(y?r(y):n(h)),a(),n(h)}function v(){o.value=[],i.value=[],a()}return{push:s,undo:u,redo:k,canUndo:d,canRedo:c,clear:v}}const bt="开启拼版后只能有一个设计页面";function Je(){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 st(t){const l=(o,i)=>(o??[]).map(d=>{const c={...d.options};return(d.printElementType?.type??d.type)==="table"&&p.syncTableElementSize(c),{id:d.id||p.generateId(),zone:i,options:c,printElementType:{...d.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 St(t){const l=(i,d)=>{const c=st(p.normalizeTemplateUnits(i));return c.name||(c.name=`页面 ${d+1}`),c};if(!t)return[l(Je(),0)];const o=Array.isArray(t.pages)?t.pages:[t];return o.length?o.map(l):[l(Je(),0)]}function Bt(t){const l=t.elements,o=i=>l.filter(d=>(d.zone||"content")===i).map(d=>({id:d.id,type:d.printElementType.type,options:{...d.options},printElementType:{...d.printElementType}}));return{unit:"mm",...t,header:{...t.header,elements:o("header")},footer:{...t.footer,elements:o("footer")},elements:o("content"),guides:[...t.guides??[]]}}function eo(t={}){const l=e.ref(100),o=e.ref(!0),i=e.ref(!0),d=e.ref(!1),c=e.ref(!0),a=e.ref(St(t.initialTemplate)),n=e.ref(0),r=e.ref(a.value[0]??st(Je())),s=e.computed(()=>a.value.some(G=>G.tiling?.enabled===!0));function u(){return s.value?(alert(bt),!0):!1}function k(){a.value[n.value]=r.value}function v(G){G<0||G>=a.value.length||(k(),n.value=G,r.value=a.value[G],oe())}const y=e.computed({get:()=>r.value.elements,set:G=>{r.value.elements=G}}),h=e.ref(t.initialFields||[]),{selectedIds:m,selectedElements:E,select:f,clearSelection:N,selectAll:B,previewIds:Q,setPreview:Y,clearPreview:C,commitPreview:b}=Qt(y),{group:P,ungroup:ae,getGroupedIds:q}=p.useGroup(),{copy:w,paste:z,hasData:I}=Jt(),{align:Z}=p.useAlign(),{push:J,undo:ue,redo:D,canUndo:ne,canRedo:ee}=_t(),F=e.computed(()=>{if(m.value.size===0)return null;const G=m.value.values().next().value;return y.value.find(pe=>pe.id===G)||null}),fe=e.ref(null);function he(G){fe.value=G}function oe(){N(),he(null)}function O(){return{elements:y.value.map(G=>({id:G.id,zone:G.zone,options:JSON.parse(JSON.stringify(G.options)),printElementType:{...G.printElementType}})),templateData:{paperSize:r.value.paperSize,orientation:r.value.orientation,outputRotation:r.value.outputRotation,margins:{...r.value.margins},header:{height:r.value.header.height,elements:[]},footer:{height:r.value.footer.height,elements:[]},elements:[],customWidth:r.value.customWidth,customHeight:r.value.customHeight,watermark:r.value.watermark?{...r.value.watermark}:void 0,guides:[...r.value.guides??[]]},pages:JSON.parse(JSON.stringify(a.value)),activePageIndex:n.value}}function $(){J(O())}function S(G){return G.pages?.[G.activePageIndex??0]?.elements??G.elements}function L(){const G=ue(O());G?.pages?(a.value=G.pages,n.value=G.activePageIndex??0,r.value=a.value[n.value]??a.value[0],oe()):G?.templateData&&(r.value={...G.templateData,elements:G.elements})}function K(){const G=D(O());G?.pages?(a.value=G.pages,n.value=G.activePageIndex??0,r.value=a.value[n.value]??a.value[0],oe()):G?.templateData&&(r.value={...G.templateData,elements:G.elements})}function _(){w(E.value)}function ce(){w(E.value),be()}function ke(){const G=z();G&&G.length>0&&(y.value.push(...G),$())}function R(){w(E.value);const G=z();G&&G.length>0&&(G.forEach(pe=>{pe.options.left+=5,pe.options.top+=5}),y.value.push(...G),f(G[0].id,!1),$())}function M(){l.value=100}const A=e.computed(()=>I());let se=!1,W=null;const ge=300;function U(G,pe){const ye=E.value.filter($e=>!$e.options.locked);ye.length!==0&&(ye.forEach($e=>{$e.options.left+=G,$e.options.top+=pe}),se||(se=!0,$()),W&&clearTimeout(W),W=setTimeout(()=>{se=!1,W=null},ge))}function H(){B(y.value.map(G=>G.id))}function j(G){Z(E.value,G),$()}function T(G,pe=!1){if(pe){f(G,!0);return}m.value=new Set(q(y.value,G))}function V(){y.value=P(y.value,m.value),$()}function le(){y.value=ae(y.value,m.value),$()}function be(){m.value.size!==0&&(y.value=y.value.filter(G=>!m.value.has(G.id)),N(),$())}const{setup:Ne,cleanup:Se}=p.useKeyboard({onMove:U,onDelete:be,onCopy:_,onPaste:ke,onSelectAll:H,onUndo:L,onRedo:K,onDuplicate:R,onResetZoom:M,onAlignLeft:()=>j("left"),onAlignRight:()=>j("right"),onAlignCenterH:()=>j("vertical"),onAlignTop:()=>j("top"),onAlignBottom:()=>j("bottom"),onGroup:V,onUngroup:le});let Be=null;function He(){Be=O()}function Re(){if(!Be)return;const G=new Map(Be.elements.map(xe=>[xe.id,xe]));let pe=!1;for(const xe of y.value){const Pe=G.get(xe.id);if(!Pe)continue;(Pe.options.left!==xe.options.left||Pe.options.top!==xe.options.top||Pe.options.width!==xe.options.width||Pe.options.height!==xe.options.height)&&p.finalizeElementZone(xe,r.value).rejected&&(pe=!0)}pe&&alert("该元素类型不能放入页眉/页脚");const ye=xe=>`${xe.id}:${xe.zone||"content"}:${xe.options.left},${xe.options.top},${xe.options.width},${xe.options.height}`,$e=S(Be).map(ye).join("|"),ze=S(O()).map(ye).join("|");Be=null,$e!==ze&&$()}function We(G,pe){const ye=p.zoneFromPaperPoint(r.value,pe.x,pe.y);if(ye!=="content"&&!p.ZONE_ALLOWED_TYPES.includes(G.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const $e=p.getZoneRects(r.value)[ye];return G.zone=ye,G.options.left=pe.x-$e.left,G.options.top=pe.y-$e.top,ye!=="content"&&p.clampToZone(G,$e),!0}function Ke(G,pe){const ye=p.createRuntimeElement(G);pe&&!We(ye,pe)||(y.value.push(ye),f(ye.id,!1),$())}function qe(G,pe){const ye=p.createFieldElement(G);pe&&!We(ye,pe)||(y.value.push(ye),f(ye.id,!1),$())}function Fe(G){if(m.value.size===0)return;const pe=m.value.values().next().value,ye=y.value.find(Xe=>Xe.id===pe);if(!ye)return;const $e=ye.options.zIndex??0,ze=y.value.map(Xe=>Xe.options.zIndex??0),xe=Math.max(...ze,0),Pe=Math.min(...ze,0);switch(G){case"top":ye.options.zIndex=xe+1;break;case"bottom":ye.options.zIndex=Pe-1;break;case"up":ye.options.zIndex=$e+1;break;case"down":ye.options.zIndex=$e-1;break}$()}function _e(G,pe){const{width:ye,height:$e}=p.getPaperDimensions(r.value),ze=96/25.4;l.value=p.computeFitScale(G,pe,ye*ze,$e*ze)}function je(G){if(r.value={...G},a.value[n.value]=r.value,a.value.length>1){const pe={paperSize:G.paperSize,orientation:G.orientation,outputRotation:G.outputRotation,customWidth:G.customWidth,customHeight:G.customHeight};for(const ye of a.value)Object.assign(ye,pe)}$()}function Ye(){return k(),a.value.length<=1?Bt(a.value[0]):{version:1,pages:a.value.map(Bt)}}function Ue(G,pe){a.value=St(G),n.value=0,r.value=a.value[0],pe&&(r.value={...r.value,elements:pe.map(ye=>({...ye,id:ye.id||p.generateId(),zone:ye.zone||"content",options:{...ye.options},printElementType:{...ye.printElementType}}))},a.value[n.value]=r.value),J(O())}function Ze(){const G=new Set(a.value.map(ye=>ye.name));let pe=a.value.length+1;for(;G.has(`页面 ${pe}`);)pe++;return`页面 ${pe}`}function X(){if(u())return;k();const G=a.value[n.value]??Je(),pe=st({...Je(),paperSize:G.paperSize,orientation:G.orientation,customWidth:G.customWidth,customHeight:G.customHeight,name:Ze()});a.value.push(pe),n.value=a.value.length-1,r.value=pe,oe(),$()}function g(){if(u())return;k();const G=a.value[n.value],pe=JSON.parse(JSON.stringify(G));pe.name=`${G.name??`页面 ${n.value+1}`} 副本`,pe.elements=pe.elements.map(ye=>({...ye,id:p.generateId()})),a.value.splice(n.value+1,0,pe),v(n.value+1),$()}function x(G){a.value.length<=1||(k(),a.value.splice(G,1),G<n.value?n.value--:G===n.value&&n.value>=a.value.length&&(n.value=a.value.length-1),r.value=a.value[n.value],oe(),$())}function Ce(G,pe){a.value[G]&&(a.value[G].name=pe)}function et(G,pe){if(G===pe)return;k();const[ye]=a.value.splice(G,1);a.value.splice(pe,0,ye),n.value=pe,r.value=ye,oe(),$()}return J(O()),e.onMounted(()=>Ne()),e.onUnmounted(()=>{Se(),W&&(clearTimeout(W),W=null)}),{scale:l,showRuler:o,showGrid:i,snapToGrid:d,showTableGhostBorder:c,templateData:r,elements:y,fields:h,tilingEnabled:s,pages:a,activePageIndex:n,switchPage:v,addPage:X,duplicatePage:g,deletePage:x,renamePage:Ce,movePage:et,selectedIds:m,selectedElements:E,selectedElement:F,select:f,selectElement:T,clearSelection:N,selectAll:H,previewIds:Q,setPreview:Y,clearPreview:C,commitPreview:b,hasClipboard:A,copy:_,paste:ke,cutSelected:ce,tableSelection:fe,setTableSelection:he,canUndo:ne,canRedo:ee,undo:L,redo:K,recordHistory:$,alignSelected:j,groupSelected:V,ungroupSelected:le,deleteSelected:be,duplicateSelected:R,resetZoom:M,dragStart:He,dragStop:Re,addElement:Ke,addFieldElement:qe,moveLayer:Fe,fitToWindow:_e,updateTemplateData:je,getTemplateJson:Ye,loadTemplate:Ue}}const Ae=Symbol("mixed"),ht=new Set(["text","longText"]);function to(t){const{elements:l,selectedIds:o,tableSelection:i,recordHistory:d}=t,c=e.computed(()=>l.value.filter(D=>o.value.has(D.id)&&!D.options.locked)),a=e.computed(()=>{const D=i.value;return D?l.value.find(ne=>ne.id===D.elementId)??null:null}),n=e.computed(()=>i.value&&a.value?"cells":c.value.length>0||o.value.size>0?"elements":"none"),r=e.computed(()=>{const D=i.value,ne=a.value?.options.tableRows;if(!D||!ne)return[];const ee=[];for(let F=D.r1;F<=D.r2;F++)for(let fe=D.c1;fe<=D.c2;fe++){const he=ne[F]?.cells[fe];he&&!he.merged&&ee.push(he)}return ee}),s=e.computed(()=>c.value.filter(D=>ht.has(D.printElementType.type))),u=e.computed(()=>n.value==="cells"?r.value.length>0:n.value!=="elements"?!1:c.value.length>0&&s.value.length===c.value.length),k=e.computed(()=>n.value==="cells"?r.value:s.value.map(D=>D.options));function v(D){if(!D.length)return;const ne=D[0];return D.every(ee=>ee===ne)?ne:Ae}const y=(D,ne)=>(D??"").split(/\s+/).includes(ne),h=e.computed(()=>{const D=k.value;if(!D.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 ne=D.map(F=>F.fontWeight==="bold"||F.fontWeight==="bolder"),ee=D.map(F=>F.textDecoration);return{fontFamily:v(D.map(F=>F.fontFamily)),fontSize:v(D.map(F=>F.fontSize)),color:v(D.map(F=>F.color)),backgroundColor:v(D.map(F=>F.backgroundColor)),textAlign:v(D.map(F=>n.value==="cells"?F.align:F.textAlign)),verticalAlign:v(D.map(F=>n.value==="cells"?F.valign:F.verticalAlign)),bold:ne.every(Boolean)?!0:ne.some(Boolean)?Ae:!1,underline:ee.map(F=>y(F,"underline")).every(Boolean)?!0:ee.some(F=>y(F,"underline"))?Ae:!1,strike:ee.map(F=>y(F,"line-through")).every(Boolean)?!0:ee.some(F=>y(F,"line-through"))?Ae:!1}});function m(D){const ne=r.value;ne.length&&(ne.forEach(D),d())}function E(D){if(n.value==="cells"){m(oe=>{"fontFamily"in D&&(oe.fontFamily=D.fontFamily),"fontSize"in D&&(oe.fontSize=D.fontSize),"color"in D&&(oe.color=D.color),"backgroundColor"in D&&(oe.backgroundColor=D.backgroundColor),"textAlign"in D&&(oe.align=D.textAlign),"verticalAlign"in D&&(oe.valign=D.verticalAlign)});return}const ne=s.value,ee=c.value,fe=["fontFamily","fontSize","color","textAlign","verticalAlign"].some(oe=>oe in D),he="backgroundColor"in D;!(ne.length&&fe)&&!(ee.length&&he)||(ne.forEach(oe=>{const O=oe.options;"fontFamily"in D&&(O.fontFamily=D.fontFamily),"fontSize"in D&&(O.fontSize=D.fontSize),"color"in D&&(O.color=D.color),"textAlign"in D&&(O.textAlign=D.textAlign),"verticalAlign"in D&&(O.verticalAlign=D.verticalAlign)}),he&&ee.forEach(oe=>{oe.options.backgroundColor=D.backgroundColor}),d())}function f(){if(n.value==="cells"){const ee=h.value.bold!==!0;m(F=>{F.fontWeight=ee?"bold":void 0});return}const D=h.value.bold!==!0,ne=s.value;ne.length&&(ne.forEach(ee=>{ee.options.fontWeight=D?"bold":"normal"}),d())}function N(D){if(n.value==="cells")return;const ne=s.value;if(!ne.length)return;const ee=h.value[D==="underline"?"underline":"strike"]!==!0;ne.forEach(F=>{const fe=(F.options.textDecoration??"").split(/\s+/).filter(Boolean),he=fe.indexOf(D);ee&&he<0&&fe.push(D),!ee&&he>=0&&fe.splice(he,1),F.options.textDecoration=fe.length?fe.join(" "):void 0}),d()}const B=()=>N("underline"),Q=()=>N("line-through");function Y(D,ne){const ee=c.value;ee.length&&(ee.forEach(F=>{p.applyElementBorderPreset(F.options,D,ne)}),d())}function C(D,ne){const ee=i.value,F=a.value?.options.tableRows;!ee||!F||(p.applyBorderPreset(F,{r1:ee.r1,c1:ee.c1,r2:ee.r2,c2:ee.c2},D,ne),d())}function b(D,ne,ee){m(F=>{for(const fe of D)p.setCellBorderEdge(F,fe,ee?ne:null)})}const P=e.computed(()=>{if(n.value!=="cells")return null;const D=i.value,ne=a.value?.options.tableRows;if(!D||!ne)return null;const ee=`cells:${D.elementId}:${D.r1}:${D.c1}:${D.r2}:${D.c2}`;if(p.resolveCellGroupMode(ne,D).mode==="multi")return{key:ee,style:"solid",width:.75,color:"#333333",mixed:{style:!1,width:!1,color:!1}};const F=p.resolveCellBorderDisplay(ne,D),fe=F.style===void 0&&F.width===void 0&&F.color===void 0;return{key:ee,style:fe?"none":typeof F.style=="string"&&F.style!=="mixed"?F.style:"solid",width:fe?0:typeof F.width=="number"?F.width:.75,color:typeof F.color=="string"&&F.color!=="mixed"?F.color:"#333333",mixed:{style:F.style==="mixed",width:F.width==="mixed",color:F.color==="mixed"}}}),ae=["top","right","bottom","left"],q={on:!0,off:!1,mixed:Ae};function w(D){const ne=p.resolveBorderEdgeStates(D),ee={};for(const F of ae)ee[F]=q[ne[F]];return ee}const z=e.computed(()=>{if(n.value!=="cells")return null;const D=r.value;return D.length?w(D.map(ne=>ne.borders)):null});function I(D,ne){const ee=z.value?.[D]!==!0;b([D],ne,ee)}const Z=e.computed(()=>{if(n.value!=="elements")return null;const D=c.value;return D.length?w(D.map(ne=>p.elementVisibleBorders(ne.options))):null});function J(D,ne){const ee=c.value;if(!ee.length)return;const F=Z.value?.[D]!==!0;ee.forEach(fe=>p.setElementBorderEdgeVisible(fe.options,D,F,ne)),d()}function ue(D){const ne=c.value;ne.length&&(ne.forEach(ee=>p.setElementBorderEdgeVisible(ee.options,D,!1)),d())}return{context:n,fontEditable:u,values:h,applyStyle:E,toggleBold:f,toggleUnderline:B,toggleStrike:Q,applyElementBorder:Y,applyCellBorderPreset:C,applyCellBorderEdges:b,cellEdges:z,toggleCellEdge:I,elementEdges:Z,toggleElementEdge:J,clearElementEdge:ue,cellBorderDraft:P}}const oo=["fontFamily","fontSize","fontWeight","color","textAlign","verticalAlign","textDecoration"];function lo(t){const{elements:l,selectedIds:o,recordHistory:i}=t,d=e.ref(!1),c=e.ref(!1),a=e.ref(null);let n=null;const r=e.computed(()=>l.value.filter(m=>o.value.has(m.id)&&!m.options.locked)),s=e.computed(()=>r.value.length===1);function u(m){if(!m)return;const E={};for(const f of p.ELEMENT_BORDER_SIDES){const N=m[f];N&&(E[f]={...N})}return E}function k(m=!1){const E=r.value[0];if(!E)return!1;const f=E.options,N=E.printElementType.type;return n={text:ht.has(N)?Object.fromEntries(oo.map(B=>[B,f[B]])):null,backgroundColor:f.backgroundColor,border:p.acceptsElementBorder(N)?{borderWidth:f.borderWidth,borderStyle:f.borderStyle,borderColor:f.borderColor,borders:u(f.borders)}:null},a.value=E.id,d.value=!0,c.value=m,!0}function v(){d.value=!1,c.value=!1,a.value=null,n=null}function y(m){const E=n;if(!E||m.options.locked||m.id===a.value)return!1;const f=m.options,N=m.printElementType.type;return E.text&&ht.has(N)&&Object.assign(f,E.text),f.backgroundColor=E.backgroundColor,E.border&&p.acceptsElementBorder(N)&&(f.borderWidth=E.border.borderWidth,f.borderStyle=E.border.borderStyle,f.borderColor=E.border.borderColor,f.borders=u(E.border.borders)),!0}e.watch(o,()=>{if(!d.value||!n)return;const m=r.value;if(!m.length){v();return}let E=!1;m.forEach(f=>{E=y(f)||E}),E&&(i(),c.value||v())});function h(m){if(m.key!=="Escape"||!d.value)return;const E=m.target?.tagName;E==="INPUT"||E==="TEXTAREA"||E==="SELECT"||v()}return document.addEventListener("keydown",h),e.onScopeDispose(()=>document.removeEventListener("keydown",h)),{active:d,locked:c,sourceId:a,capturable:s,capture:k,cancel:v}}let $t=0;function no(){return $t+=1,`guide-${$t}`}function ao(t,l){const o=e.computed(()=>t.value.guides??[]);function i(r){t.value={...t.value,guides:r([...t.value.guides??[]])},l()}function d(r,s){i(u=>(u.push({type:r,position:s,id:no()}),u))}function c(r,s){i(u=>u.map(k=>k.id===r?{...k,position:s}:k))}function a(r){i(s=>s.filter(u=>u.id!==r))}function n(){const r=[],s=[];for(const u of o.value)u.type==="vertical"?r.push(u.position):s.push(u.position);return{vertical:r,horizontal:s}}return{guides:o,addGuide:d,moveGuide:c,removeGuide:a,getGuidePositions:n}}const nt=Symbol("table-edit"),yt=Symbol("print-upload-image"),Et=Symbol("print-upload-design-background"),kt=Symbol("print-font-catalog"),io=e.computed(()=>me.normalizeFontCatalog());function ro(t){return{catalog:e.computed(()=>me.normalizeFontCatalog(e.toValue(t)))}}function so(){return e.inject(kt,io)}const co="print-designer-font-face";function uo(t){const l=`${co}-${e.useId()}`;let o;e.watchEffect(()=>{const i=e.toValue(t);if(!i){o?.remove(),o=void 0;return}o||(o=document.createElement("style"),o.id=l,document.head.appendChild(o)),o.textContent=i}),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]=i=>l.$emit("click"))},[...o[1]||(o[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),Ee=(t,l)=>{const o=t.__vccOpts||t;for(const[i,d]of l)o[i]=d;return o},po=Ee(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),i=e.ref(null);function d(c){o.value&&(i.value?.contains(c.target)||(o.value=!1))}return e.watch(()=>l.disabled,c=>{c&&(o.value=!1)}),e.onMounted(()=>document.addEventListener("pointerdown",d)),e.onUnmounted(()=>document.removeEventListener("pointerdown",d)),(c,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapRef",ref:i,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]=n=>o.value=!o.value)},[e.renderSlot(c.$slots,"trigger",{},void 0,!0),e.createVNode(e.unref(ve.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(c.$slots,"default",{},void 0,!0)],2)):e.createCommentVNode("",!0)],512))}}),lt=Ee(fo,[["__scopeId","data-v-e5f0ee73"]]);function go(t){return`tb-more-slot-${t}`}const Vt=Symbol("worm-print-toolbar-overflow"),pt=2,bo=74;function ho(){const t=e.shallowRef(null),l=new Map,o=e.reactive(new Map),i=new Map;let d=0;const c=e.ref(new Set),a=e.ref(!1),n=e.computed(()=>[...o.values()].sort((B,Q)=>B.order-Q.order)),r=e.computed(()=>c.value.size>0);function s(){for(const[B,Q]of l){const Y=Q.offsetWidth;Y>0&&i.set(B,Y)}}function u(B){const Q=getComputedStyle(B),Y=Number.parseFloat(Q.gap)||pt,C=Number.parseFloat(Q.paddingLeft)||0,b=Number.parseFloat(Q.paddingRight)||0;let P=0;for(const ae of Array.from(B.children)){if(ae.hasAttribute("data-overflow-more")||ae.hasAttribute("data-overflow-spacer"))continue;const q=Math.max(ae.offsetWidth,ae.scrollWidth);q<=0||(P+=q+Y)}return{available:B.clientWidth-C-b,natural:P}}function k(){const B=t.value;if(!B)return;const{available:Q,natural:Y}=u(B),C=c.value.size>0;C||(d=Y,s());const b=n.value.map(w=>({id:w.id,order:w.order,width:i.get(w.id)??0})),P=b.reduce((w,z)=>w-z.width-pt,d),ae=p.resolveToolbarOverflow({available:Q,pinned:P,moreTriggerWidth:bo,gap:pt,units:b});ae.movedIds.length===c.value.size&&ae.movedIds.every(w=>c.value.has(w))||(c.value=new Set(ae.movedIds)),a.value=ae.overflowRemains,C&&c.value.size===0&&e.nextTick(k)}let v=null;function y(B){B!==t.value&&(v?.disconnect(),t.value=B,B&&typeof ResizeObserver<"u"&&(v=new ResizeObserver(()=>k()),v.observe(B)),e.nextTick(k))}function h(B,Q){o.set(B.id,B),l.set(B.id,Q),e.nextTick(k)}function m(B){l.delete(B),o.delete(B),i.delete(B),e.nextTick(k)}const E=document.createElement("div");function f(B){return c.value.has(B)}function N(B){return c.value,t.value?.querySelector(`[data-overflow-slot="${B}"]`)??E}return e.onUnmounted(()=>v?.disconnect()),{attachRoot:y,registerUnit:h,unregisterUnit:m,refresh:k,movedIds:c,overflowRemains:a,hasMoved:r,chain:n,moved:f,slotEl:N}}function Ut(){const t=ho();return e.provide(Vt,t),t}function Nt(){return e.inject(Vt,null)}function It(){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 wt(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":""},Eo={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=Nt(),o=e.computed(()=>!!l&&l.hasMoved.value),i=e.computed(()=>l?.chain.value??[]),d=e.computed(()=>l?.movedIds.value??new Set);return(c,a)=>e.unref(l)?e.withDirectives((e.openBlock(),e.createElementBlock("div",yo,[e.createVNode(lt,{"test-id":"more-dd",tip:"更多","keep-mounted":"","panel-class":"tb-more-panel"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ve.Ellipsis),{size:15}),a[0]||(a[0]=e.createElementVNode("span",{class:"tb-btn-text"},"更多",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,n=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:n.id,class:"tb-more-item","data-unit":n.id},[e.createElementVNode("div",Vo,e.toDisplayString(n.label),1),e.createElementVNode("div",{id:e.unref(go)(n.id),class:"tb-more-slot","data-overflow-slot":n.id,"data-unit":n.id},null,8,No)],8,ko)),[[e.vShow,d.value.has(n.id)]])),128))])]),_:1})],512)),[[e.vShow,o.value]]):e.createCommentVNode("",!0)}}),Co=Ee(wo,[["__scopeId","data-v-5d13dbea"]]),xo={class:"tb-group tb-brand"},So={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"},Lo=["disabled"],Ro=["disabled"],Po=["disabled"],Fo=["disabled"],Uo=["disabled"],Io=["disabled"],Oo=["disabled"],Ho=["disabled"],Wo={class:"tb-menu-grid"},Go=["disabled"],Ko=["disabled"],qo=["disabled"],jo=["disabled"],Yo={class:"tb-menu-grid"},Zo=["disabled"],Xo=["disabled"],Qo={class:"tb-menu tb-menu-rows","data-test":"view-panel"},Jo={class:"tb-ou tb-group"},_o={class:"tb-zoom"},el={class:"tb-ou tb-group"},tl=["disabled","data-tip"],ol=["disabled","data-tip"],ll=["disabled","data-tip"],nl={key:0,class:"tb-group"},al={class:"tb-group"},il=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=wt(l),i=e.ref(null);e.onMounted(()=>l.attachRoot(i.value));const d=e.useModel(t,"scale"),c=t,a=e.computed(()=>c.clipboardDisabled?"粘贴 (Ctrl+V),需选中元素":c.hasClipboard?"粘贴 (Ctrl+V)":"粘贴 (Ctrl+V),剪贴板为空");return(n,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:e.normalizeClass(["designer-toolbar",{"is-tight":e.unref(l).overflowRemains.value}])},[e.createElementVNode("div",xo,[r[30]||(r[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",So,[e.createElementVNode("span",Bo,e.toDisplayString(t.isEdit?"编辑模板":"新建模板"),1),r[29]||(r[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:r[0]||(r[0]=s=>n.$emit("undo")),"data-tip":"撤销"},[e.createVNode(e.unref(ve.Undo2),{size:15})],8,Do),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canRedo,onClick:r[1]||(r[1]=s=>n.$emit("redo")),"data-tip":"重做"},[e.createVNode(e.unref(ve.Redo2),{size:15})],8,To)]),e.renderSlot(n.$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(lt,{"test-id":"arrange-dd",tip:"排列"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ve.Layers),{size:15}),r[31]||(r[31]=e.createElementVNode("span",{class:"tb-btn-text"},"排列",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",zo,[r[32]||(r[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:r[2]||(r[2]=s=>n.$emit("align","left")),"data-tip":"左对齐"},[e.createVNode(e.unref(ve.AlignStartVertical),{size:15})],8,Lo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[3]||(r[3]=s=>n.$emit("align","right")),"data-tip":"右对齐"},[e.createVNode(e.unref(ve.AlignEndVertical),{size:15})],8,Ro),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[4]||(r[4]=s=>n.$emit("align","top")),"data-tip":"顶对齐"},[e.createVNode(e.unref(ve.AlignStartHorizontal),{size:15})],8,Po),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[5]||(r[5]=s=>n.$emit("align","bottom")),"data-tip":"底对齐"},[e.createVNode(e.unref(ve.AlignEndHorizontal),{size:15})],8,Fo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[6]||(r[6]=s=>n.$emit("align","vertical")),"data-tip":"水平居中"},[e.createVNode(e.unref(ve.AlignCenterVertical),{size:15})],8,Uo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[7]||(r[7]=s=>n.$emit("align","horizontal")),"data-tip":"垂直居中"},[e.createVNode(e.unref(ve.AlignCenterHorizontal),{size:15})],8,Io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[8]||(r[8]=s=>n.$emit("align","distributeHor")),"data-tip":"水平分布"},[e.createVNode(e.unref(ve.AlignHorizontalSpaceBetween),{size:15})],8,Oo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:r[9]||(r[9]=s=>n.$emit("align","distributeVer")),"data-tip":"垂直分布"},[e.createVNode(e.unref(ve.AlignVerticalSpaceBetween),{size:15})],8,Ho)]),r[33]||(r[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:r[10]||(r[10]=s=>n.$emit("move-layer","top")),"data-tip":"置顶"},[e.createVNode(e.unref(ve.ArrowUpToLine),{size:15})],8,Go),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:r[11]||(r[11]=s=>n.$emit("move-layer","up")),"data-tip":"上移一层"},[e.createVNode(e.unref(ve.ArrowUp),{size:15})],8,Ko),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:r[12]||(r[12]=s=>n.$emit("move-layer","down")),"data-tip":"下移一层"},[e.createVNode(e.unref(ve.ArrowDown),{size:15})],8,qo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:r[13]||(r[13]=s=>n.$emit("move-layer","bottom")),"data-tip":"置底"},[e.createVNode(e.unref(ve.ArrowDownToLine),{size:15})],8,jo)]),r[34]||(r[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:r[14]||(r[14]=s=>n.$emit("group")),"data-tip":"组合 (Ctrl+G)"},[e.createVNode(e.unref(ve.Group),{size:15})],8,Zo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.selectedElementHasGroup,onClick:r[15]||(r[15]=s=>n.$emit("ungroup")),"data-tip":"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ve.Ungroup),{size:15})],8,Xo)])])]),_:1}),e.createVNode(lt,{"test-id":"view-dd",tip:"视图"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ve.Eye),{size:15}),r[35]||(r[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:r[16]||(r[16]=s=>n.$emit("toggle-ruler"))},[...r[36]||(r[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:r[17]||(r[17]=s=>n.$emit("toggle-grid"))},[...r[37]||(r[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:r[18]||(r[18]=s=>n.$emit("toggle-table-ghost-border"))},[...r[38]||(r[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:r[19]||(r[19]=s=>n.$emit("toggle-snap"))},[...r[39]||(r[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",Jo,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:r[20]||(r[20]=s=>n.$emit("fit-window")),"data-tip":"适应窗口"},[e.createVNode(e.unref(ve.Maximize),{size:15})]),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:r[21]||(r[21]=s=>n.$emit("zoom",-10)),"data-tip":"缩小"},[e.createVNode(e.unref(ve.ZoomOut),{size:15})]),e.createElementVNode("span",_o,e.toDisplayString(d.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:r[22]||(r[22]=s=>n.$emit("zoom",10)),"data-tip":"放大"},[e.createVNode(e.unref(ve.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",el,[e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"copy",disabled:t.clipboardDisabled,onClick:r[23]||(r[23]=s=>n.$emit("copy")),"data-tip":t.clipboardDisabled?"复制 (Ctrl+C),需选中元素":"复制 (Ctrl+C)"},[e.createVNode(e.unref(ve.Copy),{size:15})],8,tl),e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"paste",disabled:t.clipboardDisabled||!t.hasClipboard,onClick:r[24]||(r[24]=s=>n.$emit("paste")),"data-tip":a.value},[e.createVNode(e.unref(ve.ClipboardPaste),{size:15})],8,ol),e.createElementVNode("button",{class:"tb-btn tb-icon danger","data-test":"delete",disabled:t.clipboardDisabled,onClick:r[25]||(r[25]=s=>n.$emit("delete")),"data-tip":t.clipboardDisabled?"删除 (Delete),需选中元素":"删除 (Delete)"},[e.createVNode(e.unref(ve.Trash2),{size:15})],8,ll)])),[[e.unref(o),{id:"clipboard",order:1,label:"剪贴板"}]])],8,["to","disabled"])),e.createVNode(Co),r[40]||(r[40]=e.createElementVNode("div",{class:"tb-spacer","data-overflow-spacer":""},null,-1)),t.showHelp?(e.openBlock(),e.createElementBlock("div",nl,[e.createVNode(po,{onClick:r[26]||(r[26]=s=>n.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",al,[e.createElementVNode("button",{class:"btn-secondary","data-tip":"预览模板打印效果",onClick:r[27]||(r[27]=s=>n.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary","data-tip":"保存模板",onClick:r[28]||(r[28]=s=>n.$emit("save"))},"保存")])],2))}}),rl=Ee(il,[["__scopeId","data-v-b50decc4"]]),sl={class:"font-select"},dl=["placeholder","disabled","aria-expanded","aria-activedescendant","onKeydown"],cl=["id","aria-selected","onMousedown"],ul=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(t,{emit:l}){const o=t,i=l,d=so(),c=`font-select-list-${e.useId()}`,a=e.ref(null),n=e.ref(null),r=e.ref("down"),s=e.ref(E(o.modelValue)),u=e.ref(""),k=e.ref(!1),v=e.ref(-1),y=e.computed(()=>{const I=o.modelValue?.trim();return I?me.findFontOption(d.value,I)?"":I:""}),h=e.computed(()=>{const I=(o.modelValue??"").trim(),Z=(D,ne,ee,F)=>({kind:D,key:ne,label:ee,value:F,selected:(F??"")===I}),J=u.value.trim();if(!J){const D=[Z("clear","__clear__",o.placeholder)];y.value&&D.push(Z("unknown","__unknown__",`${y.value}(未知)`,y.value));for(const ne of d.value)D.push(Z("font",ne.family,me.fontOptionLabel(ne),ne.family));return D}const ue=me.filterFontOptions(d.value,J).map(D=>Z("font",D.family,me.fontOptionLabel(D),D.family));if(!ue.length){const D=m(J);ue.push(Z("free","__free__",`使用「${D}」`,D))}return ue});function m(I){const Z=me.normalizeFontQuery(I);return d.value.find(ue=>ue.label&&me.normalizeFontQuery(ue.label)===Z)?.family??I}function E(I){const Z=I?.trim();return Z?me.findFontOption(d.value,Z)?.label??Z:""}const f=e.computed(()=>k.value&&v.value>=0?`${c}-${v.value}`:void 0);function N(){const I=(o.modelValue??"").trim();return h.value.findIndex(Z=>(Z.value??"")===I)}function B(){k.value||(k.value=!0,u.value="",v.value=N())}function Q(){k.value=!0}function Y(){k.value=!0,u.value=s.value,v.value=h.value.length?0:-1}function C(I){if(!k.value){B();return}const Z=h.value.length-1;Z<0||(v.value=Math.min(Math.max(v.value+I,0),Z),b())}function b(){e.nextTick(()=>{a.value?.children[v.value]?.scrollIntoView?.({block:"nearest"})})}function P(I){const Z=window.innerHeight;for(let J=I.parentElement;J&&J!==document.body;J=J.parentElement){const ue=getComputedStyle(J).overflowY;if(ue==="auto"||ue==="scroll"||ue==="hidden"||ue==="clip"){const D=J.getBoundingClientRect();return{top:Math.max(0,D.top),bottom:Math.min(Z,D.bottom)}}}return{top:0,bottom:Z}}async function ae(){await e.nextTick();const I=n.value,Z=a.value;if(!I||!Z)return;const J=I.getBoundingClientRect(),ue=P(I);r.value=p.resolveOverlayPlacement({triggerTop:J.top,triggerBottom:J.bottom,overlayHeight:Z.getBoundingClientRect().height,boundaryTop:ue.top,boundaryBottom:ue.bottom})}e.watch([k,()=>h.value.length],()=>{k.value&&ae()});function q(){if(!k.value)return;const I=h.value[v.value];if(I){w(I);return}const Z=u.value.trim();if(Z){const J=m(Z);w({value:J})}}function w(I){s.value=E(I.value),u.value="",k.value=!1,v.value=-1,i("update:model-value",I.value)}function z(){k.value=!1,u.value="",v.value=-1,s.value=E(o.modelValue)}return e.watch(()=>o.modelValue,I=>{s.value=E(I)}),(I,Z)=>(e.openBlock(),e.createElementBlock("div",sl,[e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:n,"onUpdate:modelValue":Z[0]||(Z[0]=J=>s.value=J),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:t.placeholder,disabled:t.disabled,"aria-expanded":k.value,"aria-controls":c,"aria-activedescendant":f.value,onFocus:B,onClick:Q,onInput:Y,onKeydown:[Z[1]||(Z[1]=e.withKeys(e.withModifiers(J=>C(1),["prevent"]),["down"])),Z[2]||(Z[2]=e.withKeys(e.withModifiers(J=>C(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(q,["prevent"]),["enter"]),e.withKeys(e.withModifiers(z,["prevent"]),["esc"])],onBlur:z},null,40,dl),[[e.vModelText,s.value]]),k.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:c,ref_key:"listRef",ref:a,class:e.normalizeClass(["font-select-list",{"is-up":r.value==="up"}]),role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(J,ue)=>(e.openBlock(),e.createElementBlock("li",{id:`${c}-${ue}`,key:J.key,class:e.normalizeClass(["font-select-option",{"is-active":ue===v.value,"is-muted":J.kind==="unknown"||J.kind==="free"}]),role:"option","aria-selected":J.selected,onMousedown:e.withModifiers(D=>w(J),["prevent"])},e.toDisplayString(J.label),43,cl))),128))],2)):e.createCommentVNode("",!0)]))}}),ct=Ee(ul,[["__scopeId","data-v-68640be3"]]),ml={class:"pd-stepper"},pl=["disabled"],vl=["value","placeholder","min","max","step","disabled"],fl=["disabled"],gl=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,i=l,d=e.computed(()=>{const m=String(o.step),E=m.indexOf(".");return E===-1?0:m.length-E-1});function c(m){return Number.isFinite(m)?Number(m.toFixed(d.value)):0}const a=e.computed(()=>{const m=o.modelValue;if(!(m==null||!Number.isFinite(m)))return c(m)}),n=e.ref(a.value===void 0?"":String(a.value));e.watch(a,m=>{n.value=m===void 0?"":String(m)});const r=e.computed(()=>a.value!==void 0?a.value:o.min!==void 0?o.min:0),s=e.computed(()=>o.min!==void 0&&r.value<=o.min),u=e.computed(()=>o.max!==void 0&&r.value>=o.max);function k(m){let E=c(m);return o.min!==void 0&&E<o.min&&(E=o.min),o.max!==void 0&&E>o.max&&(E=o.max),E}function v(m){if(m<0&&s.value||m>0&&u.value)return;const E=k(r.value+m*o.step);n.value=String(E),i("update:modelValue",E)}function y(m){n.value=m.target.value}function h(){const m=n.value.trim();if(m===""){a.value!==void 0&&(n.value=String(a.value));return}const E=Number(m);if(!Number.isFinite(E)){n.value=a.value===void 0?"":String(a.value);return}const f=k(E);n.value=String(f),f!==a.value&&i("update:modelValue",f)}return(m,E)=>(e.openBlock(),e.createElementBlock("div",ml,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:s.value||t.disabled,title:"减小","aria-label":"减小",onClick:E[0]||(E[0]=f=>v(-1))},"−",8,pl),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:n.value,placeholder:t.placeholder,min:t.min,max:t.max,step:t.step,disabled:t.disabled,onInput:y,onChange:h,onBlur:h,onKeydown:E[1]||(E[1]=e.withKeys(e.withModifiers(f=>f.target.blur(),["prevent"]),["enter"]))},null,40,vl),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:u.value||t.disabled,title:"增大","aria-label":"增大",onClick:E[2]||(E[2]=f=>v(1))},"+",8,fl)]))}}),de=Ee(gl,[["__scopeId","data-v-627f09cb"]]),bl=["aria-expanded","title"],hl={class:"picker-preview"},yl={class:"picker-heading"},El=["disabled"],kl={class:"preset-color-grid"},Vl=["title","aria-label","onClick"],Nl=e.defineComponent({inheritAttrs:!1,__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0},emptyTitle:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,i=l,d=e.ref(!1),c=e.ref(),a=e.ref(),n=e.ref(),r=e.ref({}),s=e.ref(0),u=e.ref(0),k=e.ref(0),v=e.ref("#000000"),y=e.ref(!1),h=e.computed(()=>o.modelValue||"#000000"),m=e.computed(()=>o.modelValue?{background:o.modelValue}:{background:"transparent"}),E=e.computed(()=>F(he(s.value,u.value,k.value))),f=e.computed({get:()=>Math.round(s.value),set:$=>C(oe($),u.value,k.value)});e.watch(()=>o.modelValue,$=>{if(!$){v.value="";return}Y($)},{immediate:!0});function N($){v.value=$.toUpperCase(),Y($),i("update:modelValue",$)}function B(){o.clearable&&i("update:modelValue","")}function Q($){const L=$.target.value.trim();if(!L){o.clearable&&i("update:modelValue","");return}ne(L)&&(Y(L),i("update:modelValue",ee(L)))}function Y($){const S=ne($);if(!S)return;const L=fe(S.r,S.g,S.b);s.value=L.h,u.value=L.s,k.value=L.v,v.value=ee($).toUpperCase()}function C($,S,L){s.value=oe($),u.value=O(S),k.value=O(L),v.value=E.value.toUpperCase(),i("update:modelValue",E.value)}function b($){$.currentTarget.setPointerCapture($.pointerId),y.value=!0,q($)}function P($){y.value&&q($)}function ae($){y.value=!1;const S=$.currentTarget;S.hasPointerCapture($.pointerId)&&S.releasePointerCapture($.pointerId)}function q($){const S=n.value;if(!S)return;const L=S.getBoundingClientRect(),K=O(($.clientX-L.left)/L.width),_=O(1-($.clientY-L.top)/L.height);C(s.value,K,_)}function w($){const S=$.shiftKey?.1:.02;let L=!0;$.key==="ArrowLeft"?C(s.value,u.value-S,k.value):$.key==="ArrowRight"?C(s.value,u.value+S,k.value):$.key==="ArrowUp"?C(s.value,u.value,k.value+S):$.key==="ArrowDown"?C(s.value,u.value,k.value-S):L=!1,L&&$.preventDefault()}function z(){d.value?Z():I()}async function I(){const $=c.value;if(!$)return;o.modelValue&&Y(h.value),d.value=!0,await e.nextTick();const S=$.getBoundingClientRect(),L=190,K=a.value?.offsetHeight??216,_=8,ce=Math.min(S.left,window.innerWidth-L-_),ke=S.bottom+6,R=ke+K>window.innerHeight-_?Math.max(_,S.top-K-6):ke;r.value={left:`${Math.max(_,ce)}px`,top:`${R}px`}}function Z(){d.value=!1}function J($){const S=$.target;c.value?.contains(S)||a.value?.contains(S)||Z()}function ue(){d.value&&Z()}function D($){$.key==="Escape"&&d.value&&Z()}function ne($){const S=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec($.trim());if(!S)return null;const L=S[1],K=L.length===3?L.split("").map(_=>_+_).join(""):L;return{r:Number.parseInt(K.slice(0,2),16),g:Number.parseInt(K.slice(2,4),16),b:Number.parseInt(K.slice(4,6),16)}}function ee($){const S=ne($);return S?F(S):"#000000"}function F({r:$,g:S,b:L}){return`#${[$,S,L].map(K=>Math.round(O(K/255)*255).toString(16).padStart(2,"0")).join("")}`}function fe($,S,L){const K=$/255,_=S/255,ce=L/255,ke=Math.max(K,_,ce),R=Math.min(K,_,ce),M=ke-R;let A=0;return M!==0&&(ke===K?A=(_-ce)/M%6:ke===_?A=(ce-K)/M+2:A=(K-_)/M+4,A*=60,A<0&&(A+=360)),{h:A,s:ke===0?0:M/ke,v:ke}}function he($,S,L){const K=L*S,_=($%360+360)%360/60,ce=K*(1-Math.abs(_%2-1)),[ke,R,M]=_<1?[K,ce,0]:_<2?[ce,K,0]:_<3?[0,K,ce]:_<4?[0,ce,K]:_<5?[ce,0,K]:[K,0,ce],A=L-K;return{r:(ke+A)*255,g:(R+A)*255,b:(M+A)*255}}function oe($){return((Number.isFinite($)?$:0)%360+360)%360}function O($){return Math.min(1,Math.max(0,Number.isFinite($)?$:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",J,!0),window.addEventListener("scroll",ue,!0),window.addEventListener("resize",ue),document.addEventListener("keydown",D)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",J,!0),window.removeEventListener("scroll",ue,!0),window.removeEventListener("resize",ue),document.removeEventListener("keydown",D)}),($,S)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",e.mergeProps({ref_key:"triggerRef",ref:c},$.$attrs,{type:"button",class:"preset-color-trigger","aria-expanded":d.value,"aria-haspopup":"dialog",title:t.modelValue||t.emptyTitle||"自动",onClick:z}),[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(m.value)},null,4)],16,bl),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[d.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:a,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(r.value),onPointerdown:S[2]||(S[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",hl,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!t.modelValue}]),style:e.normalizeStyle(t.modelValue?{background:E.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=L=>v.value=L),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:Q},null,544),[[e.vModelText,v.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:n,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(s.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:b,onPointermove:P,onPointerup:ae,onPointercancel:ae,onKeydown:w},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${u.value*100}%`,top:`${(1-k.value)*100}%`,background:E.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[1]||(S[1]=L=>f.value=L),class:"picker-hue",type:"range",min:"0",max:"360",step:"1","aria-label":"色相"},null,512),[[e.vModelText,f.value,void 0,{number:!0}]]),e.createElementVNode("div",yl,[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:B},[...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,El)):e.createCommentVNode("",!0)]),e.createElementVNode("div",kl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.PRESET_COLORS),L=>(e.openBlock(),e.createElementBlock("button",{key:L,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!t.modelValue&&L.toLowerCase()===t.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:L}),title:L,"aria-label":L,onClick:K=>N(L)},null,14,Vl))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),Me=Ee(Nl,[["__scopeId","data-v-93ec0111"]]),wl={class:"format-toolbar"},Cl={class:"tb-ou ft-group"},xl=["disabled","data-tip"],Sl={class:"tb-ou ft-group"},Bl={class:"ft-font"},$l={class:"ft-size","data-test":"font-size"},Dl={class:"tb-ou ft-group"},Tl=["disabled","data-tip"],Ml=["disabled","data-tip"],zl=["disabled","data-tip"],Al={class:"tb-ou ft-group"},Ll=["title"],Rl={class:"ft-glyph"},Pl={class:"tb-ou ft-group"},Fl={class:"ft-align-panel","data-test":"align-panel"},Ul={class:"ft-align-row"},Il={class:"ft-align-row"},Ol={class:"tb-ou ft-group"},Hl={class:"ft-border-panel","data-test":"border-panel"},Wl={class:"ft-border-grid"},Gl=["disabled","data-tip"],Kl={class:"ft-style-row"},ql=["data-test","data-tip","onClick"],jl={class:"ft-border-style-row"},Yl={class:"ft-line-width"},Zl={class:"ft-border-style-row"},Xl={key:0,class:"pd-hint"},Ql=e.defineComponent({__name:"FormatToolbar",props:{format:{},painter:{}},setup(t){const l=Nt()??It(),o=wt(l),i=t,d=e.computed(()=>i.format.values.value),c=e.computed(()=>!i.format.fontEditable.value),a=e.computed(()=>c.value||i.format.context.value==="cells"),n=e.computed(()=>i.format.context.value==="none"),r=e.computed(()=>i.painter?.active.value===!0),s=e.computed(()=>!i.painter||!r.value&&(i.format.context.value==="none"||i.format.context.value==="cells"||!i.painter.capturable.value)),u=e.computed(()=>r.value?"退出格式刷(Esc)":i.painter?i.format.context.value==="cells"?"格式刷(表格单元格暂不支持)":i.format.context.value==="none"?"格式刷(需选中元素)":i.painter.capturable.value?"格式刷:单击刷一次,双击连续刷":"格式刷(请仅选中一个源元素)":"格式刷");function k(){const oe=i.painter;if(oe){if(oe.active.value){oe.cancel();return}oe.capture(!1)}}function v(){i.painter?.capture(!0)}const y=e.computed(()=>d.value.fontFamily===Ae?void 0:d.value.fontFamily),h=e.computed(()=>d.value.fontFamily===Ae?"混合":"默认"),m=e.computed(()=>d.value.fontSize===Ae?void 0:d.value.fontSize),E=e.computed(()=>d.value.fontSize===Ae?"混合":"默认"),f=e.computed(()=>d.value.bold===!0),N=e.computed(()=>d.value.color===Ae?void 0:d.value.color),B=e.computed(()=>d.value.backgroundColor===Ae?void 0:d.value.backgroundColor),Q=e.computed(()=>d.value.textAlign==="center"?ve.TextAlignCenter:d.value.textAlign==="right"?ve.TextAlignEnd:d.value.textAlign==="justify"?ve.TextAlignJustify:ve.TextAlignStart),Y=e.computed(()=>c.value?"对齐(需选中文本元素或单元格)":"对齐"),C=e.computed(()=>n.value?"边框(需选中元素)":"边框");function b(oe){return c.value?`${oe}(需选中文本元素)`:i.format.context.value==="cells"?`${oe}(单元格不支持)`:oe}const P=e.ref("solid"),ae=e.ref(.75),q=e.ref("#333333"),w=e.reactive({style:!1,width:!1,color:!1}),z=e.computed(()=>w.style||w.width||w.color);e.watch(()=>i.format.cellBorderDraft.value?.key??"",()=>{const oe=i.format.cellBorderDraft.value;if(!oe){P.value="solid",ae.value=.75,q.value="#333333",w.style=w.width=w.color=!1;return}w.style=oe.mixed.style,w.width=oe.mixed.width,w.color=oe.mixed.color,P.value=oe.mixed.style||oe.style==="none"?null:oe.style,ae.value=oe.mixed.width?void 0:oe.width,q.value=oe.mixed.color?void 0:oe.color},{immediate:!0});const I=e.computed(()=>i.format.context.value==="cells"),Z=[{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 J(){const oe=P.value??(w.style?"solid":"none");return{width:ae.value??.75,style:oe,color:q.value??"#333333"}}function ue(oe){ae.value=oe,w.width=!1}function D(oe){q.value=oe,w.color=!1}function ne(){I.value&&(w.style&&(P.value="solid",w.style=!1),w.width&&(ae.value=.75,w.width=!1),w.color&&(q.value="#333333",w.color=!1))}function ee(oe){const O=P.value===oe?null:oe;w.style=!1,P.value=O,O===null?ae.value=0:ae.value===0&&(ae.value=.75)}function F(oe){if(I.value){const O=P.value===null&&!w.style;i.format.applyCellBorderPreset(O?"none":oe,J()),ne()}else i.format.applyElementBorder(P.value===null||oe==="none"?"none":"all",J())}function fe(oe){return(I.value?i.format.cellEdges.value:i.format.elementEdges.value)?.[oe]===!0}function he(oe){if(P.value===null&&!w.style){I.value?(i.format.applyCellBorderEdges([oe],J(),!1),ne()):i.format.clearElementEdge(oe);return}I.value?(i.format.toggleCellEdge(oe,J()),ne()):i.format.toggleElementEdge(oe,J())}return(oe,O)=>(e.openBlock(),e.createElementBlock("div",wl,[(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",Cl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:r.value}]),"data-test":"format-painter",disabled:s.value,"data-tip":u.value,onClick:k,onDblclick:v},[e.createVNode(e.unref(ve.Paintbrush),{size:15})],42,xl)])),[[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",Sl,[e.createElementVNode("div",Bl,[e.createVNode(ct,{"model-value":y.value,placeholder:h.value,disabled:c.value,"onUpdate:modelValue":O[0]||(O[0]=$=>t.format.applyStyle({fontFamily:$}))},null,8,["model-value","placeholder","disabled"])]),e.createElementVNode("div",$l,[e.createVNode(de,{"model-value":m.value,min:5,max:72,placeholder:E.value,disabled:c.value,"onUpdate:modelValue":O[1]||(O[1]=$=>t.format.applyStyle({fontSize:$}))},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",Dl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:f.value}]),"data-test":"bold",disabled:c.value,"data-tip":c.value?"加粗(需选中文本元素或单元格)":"加粗",onClick:O[2]||(O[2]=$=>t.format.toggleBold())},[e.createVNode(e.unref(ve.Bold),{size:15})],10,Tl),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:d.value.underline===!0}]),"data-test":"underline",disabled:a.value,"data-tip":b("下划线"),onClick:O[3]||(O[3]=$=>t.format.toggleUnderline())},[e.createVNode(e.unref(ve.Underline),{size:15})],10,Ml),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:d.value.strike===!0}]),"data-test":"strike",disabled:a.value,"data-tip":b("删除线"),onClick:O[4]||(O[4]=$=>t.format.toggleStrike())},[e.createVNode(e.unref(ve.Strikethrough),{size:15})],10,zl)])),[[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",Al,[e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:c.value}]),title:`字体颜色${c.value?"(需选中或混选文本元素)":""}`},[e.createVNode(Me,{"model-value":N.value,"onUpdate:modelValue":O[5]||(O[5]=$=>t.format.applyStyle({color:$}))},null,8,["model-value"]),O[22]||(O[22]=e.createElementVNode("span",{class:"ft-glyph"},"A",-1))],10,Ll),e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:n.value}]),title:"背景色"},[e.createVNode(Me,{"model-value":B.value,"onUpdate:modelValue":O[6]||(O[6]=$=>t.format.applyStyle({backgroundColor:$}))},null,8,["model-value"]),e.createElementVNode("span",Rl,[e.createVNode(e.unref(ve.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",Pl,[e.createVNode(lt,{"test-id":"align-dd",tip:Y.value,disabled:c.value},{trigger:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(Q.value),{size:15})),O[23]||(O[23]=e.createElementVNode("span",{class:"ft-btn-text"},"对齐",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Fl,[e.createElementVNode("div",Ul,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.textAlign==="left"}]),"data-test":"align-left","data-tip":"左对齐",onClick:O[7]||(O[7]=$=>t.format.applyStyle({textAlign:"left"}))},[e.createVNode(e.unref(ve.TextAlignStart),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.textAlign==="center"}]),"data-test":"align-center","data-tip":"水平居中",onClick:O[8]||(O[8]=$=>t.format.applyStyle({textAlign:"center"}))},[e.createVNode(e.unref(ve.TextAlignCenter),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.textAlign==="right"}]),"data-test":"align-right","data-tip":"右对齐",onClick:O[9]||(O[9]=$=>t.format.applyStyle({textAlign:"right"}))},[e.createVNode(e.unref(ve.TextAlignEnd),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.textAlign==="justify"}]),"data-test":"align-justify","data-tip":"两端对齐(撑满行宽,含末行)",onClick:O[10]||(O[10]=$=>t.format.applyStyle({textAlign:"justify"}))},[e.createVNode(e.unref(ve.TextAlignJustify),{size:15})],2)]),e.createElementVNode("div",Il,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.verticalAlign==="top"}]),"data-test":"valign-top","data-tip":"顶端对齐",onClick:O[11]||(O[11]=$=>t.format.applyStyle({verticalAlign:"top"}))},[e.createVNode(e.unref(ve.ArrowUpToLine),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.verticalAlign==="middle"}]),"data-test":"valign-middle","data-tip":"垂直居中",onClick:O[12]||(O[12]=$=>t.format.applyStyle({verticalAlign:"middle"}))},[e.createVNode(e.unref(ve.ChevronsUpDown),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:d.value.verticalAlign==="bottom"}]),"data-test":"valign-bottom","data-tip":"底端对齐",onClick:O[13]||(O[13]=$=>t.format.applyStyle({verticalAlign:"bottom"}))},[e.createVNode(e.unref(ve.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",Ol,[e.createVNode(lt,{"test-id":"border",tip:C.value,disabled:n.value},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ve.Grid3x3),{size:15}),O[24]||(O[24]=e.createElementVNode("span",{class:"ft-btn-text"},"边框",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Hl,[e.createElementVNode("div",Wl,[e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-none","data-tip":"无边框",onClick:O[14]||(O[14]=$=>F("none"))},[...O[25]||(O[25]=[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:O[15]||(O[15]=$=>F("all"))},[...O[26]||(O[26]=[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:O[16]||(O[16]=$=>F("outer"))},[...O[27]||(O[27]=[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:!I.value,"data-tip":I.value?"内部边框":"内部边框(仅表格单元格可用)",onClick:O[17]||(O[17]=$=>F("inner"))},[...O[28]||(O[28]=[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,Gl),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:fe("top")}]),"data-test":"edge-top","data-tip":"上边框",onClick:O[18]||(O[18]=$=>he("top"))},[...O[29]||(O[29]=[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:fe("bottom")}]),"data-test":"edge-bottom","data-tip":"下边框",onClick:O[19]||(O[19]=$=>he("bottom"))},[...O[30]||(O[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:"2",y1:"15",x2:"16",y2:"15"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:fe("left")}]),"data-test":"edge-left","data-tip":"左边框",onClick:O[20]||(O[20]=$=>he("left"))},[...O[31]||(O[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:"3",y1:"2",x2:"3",y2:"16"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:fe("right")}]),"data-test":"edge-right","data-tip":"右边框",onClick:O[21]||(O[21]=$=>he("right"))},[...O[32]||(O[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:"15",y1:"2",x2:"15",y2:"16"})],-1)])],2)]),e.createElementVNode("div",Kl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(Z,$=>e.createElementVNode("button",{key:$.key,type:"button",class:e.normalizeClass(["ft-style-btn",{on:P.value===$.key}]),"data-test":`style-${$.key}`,"data-tip":P.value===$.key?`${$.label}(再点一次取消,线型=无)`:$.label,onClick:S=>ee($.key)},[e.createElementVNode("span",{class:"ft-style-line",style:e.normalizeStyle({borderTop:$.preview})},null,4)],10,ql)),64))]),e.createElementVNode("div",jl,[O[33]||(O[33]=e.createElementVNode("span",{class:"ft-edge-label"},"粗细",-1)),e.createElementVNode("div",Yl,[e.createVNode(de,{"model-value":ae.value,min:.25,max:5,step:.25,placeholder:w.width?"混合":void 0,"onUpdate:modelValue":ue},null,8,["model-value","placeholder"])])]),e.createElementVNode("div",Zl,[O[34]||(O[34]=e.createElementVNode("span",{class:"ft-edge-label"},"颜色",-1)),e.createVNode(Me,{"model-value":q.value,clearable:!1,"empty-title":w.color?"混合":void 0,"onUpdate:modelValue":D},null,8,["model-value","empty-title"])]),z.value?(e.openBlock(),e.createElementBlock("p",Xl,"当前单元格四边规格不一致:留空的项不谎报,点预设/单边时按缺省档(实线 0.75 / #333333)批写")):e.createCommentVNode("",!0)])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"border",order:5,label:"边框"}]])],8,["to","disabled"]))]))}}),Jl=Ee(Ql,[["__scopeId","data-v-92a06f43"]]),_l={class:"layer-panel"},en=["onClick"],tn={class:"layer-icon"},on={class:"layer-name"},ln={key:0,class:"layer-zone"},nn={class:"layer-zindex"},an={key:0,class:"layer-actions"},rn={key:1,class:"layer-actions"},sn=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))),i=e.computed(()=>o.value.length>=2),d=e.computed(()=>o.value.some(u=>!!u.options.groupId)),c=e.computed(()=>[...l.elements].sort((u,k)=>(k.options.zIndex??0)-(u.options.zIndex??0))),a={text:"T",longText:"¶",table:"⊞",flowList:"⊟",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function n(u){return a[u.printElementType.type]||"?"}function r(u){return u.options.title||u.printElementType.title||u.printElementType.type}function s(u){return u.zone==="header"?"页眉":u.zone==="footer"?"页脚":""}return(u,k)=>(e.openBlock(),e.createElementBlock("div",_l,[k[6]||(k[6]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,v=>(e.openBlock(),e.createElementBlock("div",{key:v.id,class:e.normalizeClass(["layer-item",{active:t.selectedIds.has(v.id)}]),onClick:y=>u.$emit("select",v.id,y.ctrlKey||y.metaKey)},[e.createElementVNode("span",tn,e.toDisplayString(n(v)),1),e.createElementVNode("span",on,e.toDisplayString(r(v)),1),s(v)?(e.openBlock(),e.createElementBlock("span",ln,e.toDisplayString(s(v)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",nn,"z:"+e.toDisplayString(v.options.zIndex??0),1)],10,en))),128)),c.value.length>0?(e.openBlock(),e.createElementBlock("div",an,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:k[0]||(k[0]=v=>u.$emit("move-layer","top")),title:"置顶"},[e.createVNode(e.unref(ve.ArrowUpToLine),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:k[1]||(k[1]=v=>u.$emit("move-layer","up")),title:"上移"},[e.createVNode(e.unref(ve.ArrowUp),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:k[2]||(k[2]=v=>u.$emit("move-layer","down")),title:"下移"},[e.createVNode(e.unref(ve.ArrowDown),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:k[3]||(k[3]=v=>u.$emit("move-layer","bottom")),title:"置底"},[e.createVNode(e.unref(ve.ArrowDownToLine),{size:14})])])):e.createCommentVNode("",!0),i.value||d.value?(e.openBlock(),e.createElementBlock("div",rn,[i.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"pd-button small",onClick:k[4]||(k[4]=v=>u.$emit("group")),title:"组合 (Ctrl+G)"},[e.createVNode(e.unref(ve.Group),{size:14})])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"pd-button small",onClick:k[5]||(k[5]=v=>u.$emit("ungroup")),title:"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ve.Ungroup),{size:14})])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),dn=Ee(sn,[["__scopeId","data-v-11d73d5d"]]);function Ot(){const t=e.ref(null),l=e.ref(null);let o=null;async function i(n){const r=n.dataset.tip;if(!r)return;const s=n.getBoundingClientRect();if(t.value={text:r,x:s.left+s.width/2,y:s.bottom+6},await e.nextTick(),!t.value)return;const u=(l.value?.offsetWidth??0)/2;if(!u)return;const k=u+8,v=Math.max(window.innerWidth-u-8,k);t.value={...t.value,x:Math.min(Math.max(t.value.x,k),v)}}function d(n){const r=n.target.closest?.("[data-tip]");r&&(o&&clearTimeout(o),o=setTimeout(()=>i(r),300))}function c(n){const r=n.target.closest?.("[data-tip]");r&&n.relatedTarget?.closest?.("[data-tip]")===r||a()}function a(){o&&(clearTimeout(o),o=null),t.value=null}return e.onUnmounted(a),{tip:t,tipEl:l,onTipOver:d,onTipOut:c,hideTip:a}}const cn={class:"tree-container"},un=["onClick"],mn={class:"expand-icon"},pn={class:"node-icon"},vn=["data-tip"],fn=["data-tip","onDragstart"],gn={class:"node-meta"},bn={class:"node-label"},hn={class:"node-key"},yn={key:0,class:"pd-empty"},En=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(t,{emit:l}){const o=t,i=l,d=e.ref(""),c=e.ref(new Set),{tip:a,tipEl:n,onTipOver:r,onTipOut:s,hideTip:u}=Ot(),k=e.computed(()=>!!d.value.trim()),v=e.computed(()=>p.filterGroups(p.groupFields(o.fields),d.value));function y(m){const E=new Set(c.value);E.has(m)?E.delete(m):E.add(m),c.value=E}function h(m,E){m.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:E.fieldKey,fieldLabel:E.fieldLabel})),m.dataTransfer&&(m.dataTransfer.effectAllowed="copy"),i("field-drag",E)}return(m,E)=>(e.openBlock(),e.createElementBlock("div",{class:"field-tree-panel",onMouseover:E[1]||(E[1]=(...f)=>e.unref(r)&&e.unref(r)(...f)),onMouseout:E[2]||(E[2]=(...f)=>e.unref(s)&&e.unref(s)(...f)),onMouseleave:E[3]||(E[3]=(...f)=>e.unref(u)&&e.unref(u)(...f))},[E[5]||(E[5]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[0]||(E[0]=f=>d.value=f),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,d.value]]),e.createElementVNode("div",cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.key||"_top"},[f.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":f.isList}]),onClick:N=>y(f.key)},[e.createElementVNode("span",mn,e.toDisplayString(c.value.has(f.key)&&!k.value?"▶":"▼"),1),e.createElementVNode("span",pn,e.toDisplayString(f.isList?"📋":"📁"),1),e.createElementVNode("span",{class:"group-label","data-tip":f.label},e.toDisplayString(f.label),9,vn)],10,un)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.fields,N=>(e.openBlock(),e.createElementBlock("div",{key:N.fieldKey,class:"field-row",draggable:"true","data-tip":`${N.fieldLabel} (${N.fieldKey})`,style:e.normalizeStyle({paddingLeft:(f.key?22:8)+"px"}),onDragstart:B=>h(B,N)},[E[4]||(E[4]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",gn,[e.createElementVNode("span",bn,e.toDisplayString(N.fieldLabel),1),e.createElementVNode("span",hn,"("+e.toDisplayString(N.fieldKey)+")",1)])],44,fn))),128))],512),[[e.vShow,!f.key||k.value||!c.value.has(f.key)]])],64))),128))]),v.value.length===0?(e.openBlock(),e.createElementBlock("p",yn,"暂无字段")):e.createCommentVNode("",!0),e.unref(a)?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"tipEl",ref:n,class:"pd-hover-tip",style:e.normalizeStyle({left:`${e.unref(a).x}px`,top:`${e.unref(a).y}px`})},e.toDisplayString(e.unref(a).text),5)):e.createCommentVNode("",!0)],32))}}),kn=Ee(En,[["__scopeId","data-v-05eaed74"]]),Vn={key:0,class:"left-collapsed"},Nn={class:"left-head"},wn={class:"pd-tabs left-tabs"},Cn={class:"pd-tab-bar",role:"tablist"},xn={class:"pd-tab-pane",role:"tabpanel"},Sn=["onDragstart"],Bn={class:"material-icon"},$n={class:"material-label"},Dn={class:"pd-tab-pane",role:"tabpanel"},Tn={class:"pd-tab-pane",role:"tabpanel"},Mn=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,i=e.ref("elements"),d=[{type:"text",label:"文本",icon:"T"},{type:"barcode",label:"条形码",icon:"▍▍"},{type:"qrcode",label:"二维码",icon:"▦"},{type:"image",label:"图片",icon:"▧"},{type:"table",label:"表格",icon:"⊞"},{type:"flowList",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(r,s){r.dataTransfer?.setData("elementType",s)}function a(r){o("field-drag",r)}function n(r){i.value=r,o("toggle-collapse")}return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",Vn,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:s[0]||(s[0]=u=>n(i.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:i.value==="elements"}]),title:"元素",onClick:s[1]||(s[1]=u=>n("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:i.value==="fields"}]),title:"字段",onClick:s[2]||(s[2]=u=>n("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:i.value==="layers"}]),title:"图层",onClick:s[3]||(s[3]=u=>n("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Nn,[s[14]||(s[14]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:s[4]||(s[4]=u=>r.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",wn,[e.createElementVNode("div",Cn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:i.value==="elements"}]),onClick:s[5]||(s[5]=u=>i.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:i.value==="fields"}]),onClick:s[6]||(s[6]=u=>i.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:i.value==="layers"}]),onClick:s[7]||(s[7]=u=>i.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",xn,[s[15]||(s[15]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,u=>e.createElementVNode("div",{key:u.type,class:"material-card",draggable:"true",onDragstart:k=>c(k,u.type)},[e.createElementVNode("span",Bn,e.toDisplayString(u.icon),1),e.createElementVNode("span",$n,e.toDisplayString(u.label),1)],40,Sn)),64))],512),[[e.vShow,i.value==="elements"]]),e.withDirectives(e.createElementVNode("div",Dn,[e.createVNode(kn,{fields:t.fields,onFieldDrag:a},null,8,["fields"])],512),[[e.vShow,i.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Tn,[e.createVNode(dn,{elements:t.elements,"selected-ids":t.selectedIds,onSelect:s[8]||(s[8]=(u,k)=>r.$emit("select",u,k)),onMoveLayer:s[9]||(s[9]=u=>r.$emit("move-layer",u)),onGroup:s[10]||(s[10]=u=>r.$emit("group")),onUngroup:s[11]||(s[11]=u=>r.$emit("ungroup")),onToggleVisible:s[12]||(s[12]=u=>r.$emit("toggle-visible",u)),onToggleLocked:s[13]||(s[13]=u=>r.$emit("toggle-locked",u))},null,8,["elements","selected-ids"])],512),[[e.vShow,i.value==="layers"]])])],64))],2))}}),zn=Ee(Mn,[["__scopeId","data-v-8fdea042"]]);function An(t,l){const o=e.ref(!1),i=e.ref(null);let d=0,c=0,a=0,n=0,r=!1;function s(m){if(l.disabled||m.button!==0)return;const E=m.target;if(!(E instanceof Element)||E.classList.contains("resize-handle"))return;o.value=!0,r=m.altKey,d=m.clientX,c=m.clientY;const f=t.value;f&&(a=parseFloat(f.style.left)||0,n=parseFloat(f.style.top)||0,i.value={left:a,top:n,width:parseFloat(f.style.width)||0,height:parseFloat(f.style.height)||0},l.onStart?.({altKey:r}),document.addEventListener("mousemove",k),document.addEventListener("mouseup",v),m.preventDefault())}function u(m){const E=l.getScale?.()??1;let f=a+(m.clientX-d)/E,N=n+(m.clientY-c)/E;if(l.axis==="x"&&(N=n),l.axis==="y"&&(f=a),l.onAdsorb){const B=t.value;if(B){const Q=parseFloat(B.style.width)||0,Y=parseFloat(B.style.height)||0,C=l.onAdsorb({left:f,top:N,width:Q,height:Y});f=C.left,N=C.top}}return{left:f,top:N}}function k(m){const E=u(m);i.value&&(i.value.left=E.left,i.value.top=E.top),l.onDrag(E)}function v(m){o.value=!1;const E=u(m);l.onDragEnd?.(E,{altKey:r}),l.onStop?.(),i.value=null,document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",v)}function y(){const m=t.value;m&&m.removeEventListener("mousedown",s),document.removeEventListener("mousemove",k),document.removeEventListener("mouseup",v)}function h(){y();const m=t.value;m&&m.addEventListener("mousedown",s)}return{isDragging:o,dragPreview:i,setup:h,cleanup:y}}function Ln(t){const l=[];return t.getAttribute("data-fit")==="shrink"&&l.push(t),t.querySelectorAll('[data-fit="shrink"]').forEach(o=>l.push(o)),l}function Rn(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 Ct(t,l){const o=()=>{const i=t.value;i&&(Ln(i).forEach(Ge.fitTextNode),Rn(i))};e.watchEffect(()=>{l(),e.nextTick(o)},{flush:"post"}),e.onMounted(()=>{e.nextTick(o)})}const Pn=["data-fit","data-fit-base","data-fit-min"],Fn=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},i={left:"flex-start",center:"center",right:"flex-end"},d=e.ref(null),c=e.computed(()=>p.resolveElementTextFit("text",l.element.options)),a=e.computed(()=>l.element.options.fontSize||12),n=e.computed(()=>p.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),r=e.computed(()=>{const u=l.element.options,k=c.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:me.resolveCanvasFontFamily(u.fontFamily),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:k?"auto":"100%",boxSizing:"border-box",overflow:k?"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:i[u.textAlign||"left"]??"flex-start"}}:{}}}),s=e.computed(()=>l.designMode?l.element.options.testData?l.element.options.testData:l.element.options.formatter||"文本":p.resolveTextBinding(l.element.options,l.data));return Ct(d,()=>[c.value,a.value,n.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.letterSpacing,l.element.options.lineHeight,s.value]),(u,k)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:d,class:"print-text",style:e.normalizeStyle(r.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(n.value)},e.toDisplayString(s.value),13,Pn))}}),Un={class:"print-image"},In=["src"],On={key:1,class:"image-placeholder"},Hn=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?p.evaluateTemplate(a,p.DEFAULT_DEMO_DATA):p.evaluateTemplate(a,l.data?.[0]||{}):a:""}),i=e.ref(!1);function d(){i.value=!0}e.watch(o,()=>{i.value=!1});const c=e.computed(()=>({objectFit:l.element.options.fit||"contain",...p.cropStyleDeclarations(l.element.options.fit,l.element.options.fitScale,l.element.options.objectPosition)}));return(a,n)=>(e.openBlock(),e.createElementBlock("div",Un,[o.value&&!i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(c.value),onError:d},null,44,In)):(e.openBlock(),e.createElementBlock("div",On,"图片"))]))}}),Wn=Ee(Hn,[["__scopeId","data-v-73dc7258"]]),Gn=["data-fit","data-fit-base","data-fit-min"],Kn=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},i={left:"flex-start",center:"center",right:"flex-end"},d=e.ref(null),c=e.computed(()=>p.resolveElementTextFit("longText",l.element.options)),a=e.computed(()=>l.element.options.fontSize||12),n=e.computed(()=>p.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),r=e.computed(()=>{const u=l.element.options,k=c.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:me.resolveCanvasFontFamily(u.fontFamily),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:k?"auto":"100%",overflow:k?"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:i[u.textAlign||"left"]??"flex-start"}}:{}}}),s=e.computed(()=>l.designMode?l.element.options.formatter?l.element.options.formatter:"长文本内容":p.resolveTextBinding(l.element.options,l.data));return Ct(d,()=>[c.value,a.value,n.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.lineHeight,s.value]),(u,k)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:d,class:"print-longtext",style:e.normalizeStyle(r.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(n.value)},e.toDisplayString(s.value),13,Gn))}}),qn=["title"],jn=["title","onClick"],Yn=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:"汇总行"}],i=l;function d(c,a){i("action",c,a)}return(c,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]=n=>d("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:a[1]||(a[1]=n=>d("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteRow}]),onClick:a[2]||(a[2]=n=>t.canDeleteRow&&d("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]=n=>d("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:a[4]||(a[4]=n=>d("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteCol}]),onClick:a[5]||(a[5]=n=>t.canDeleteCol&&d("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]=n=>!t.mergeDisabledReason&&d("merge"))}," 合并单元格 ",10,qn),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canSplit}]),onClick:a[7]||(a[7]=n=>t.canSplit&&d("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,n=>e.createElementVNode("div",{key:n.value,class:e.normalizeClass(["menu-item",{disabled:!!t.rowTypeDisabledReason(n.value),active:t.currentRowType===n.value}]),title:t.rowTypeDisabledReason(n.value)||"",onClick:r=>!t.rowTypeDisabledReason(n.value)&&d("set-row-type",n.value)},e.toDisplayString(n.label),11,jn)),64))],36)):e.createCommentVNode("",!0)]))}}),Zn=Ee(Yn,[["__scopeId","data-v-fbbccae0"]]),Xn={class:"cell-barcode"},Qn=["preserveAspectRatio"],Jn=["src"],_n={key:1,class:"cell-barcode-fallback"},ea=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},qrQuietZone:{},barQuietZone:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{},barHeight:{}},setup(t){const l=t,o=e.ref(null),i=e.ref(!1),d=e.ref(""),c=e.ref(null),a={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},n=e.computed(()=>a[l.fit||"contain"]??"xMidYMid meet"),r=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%"}),s=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(i.value=!1,c.value=null,!o.value)return;const h=o.value,m=p.barcodeUnitsPerModule(l.barWidth),E=p.barcodeQuietZoneModules(l.barQuietZone),f=N=>{Pt(h,l.value,{format:l.barcodeType||"CODE128",width:m,height:N*m,displayValue:l.showText!==!1,fontSize:(l.barFontSize??p.BARCODE_TEXT_FONT_SIZE_MODULES)*m,margin:0,marginLeft:E*m,marginRight:E*m,marginTop:0,marginBottom:p.BARCODE_MARGIN_BOTTOM_MODULES*m});const B=k(h);return B?{widthUnits:B.width,heightUnits:B.height}:null};try{const N=p.layoutBarcodeSize({barHeightMm:l.barHeight,boxWidthMm:p.barcodeAvailableBoxMm(l.targetWidthMm,l.maxWidth),boxHeightMm:p.barcodeAvailableBoxMm(l.targetHeightMm,l.maxHeight),dpi:l.printerDpi,barWidth:l.barWidth,measure:f});i.value=!0,c.value=N.size?{width:`${N.size.widthMm}mm`,height:`${N.size.heightMm}mm`}:null}catch{return}h.setAttribute("shape-rendering","crispEdges")}function k(h){const m=(h.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return m.length!==4||m.some(E=>!Number.isFinite(E))?null:{width:m[2],height:m[3]}}function v(){if(!l.value){d.value="";return}try{const h=Ge.browserCodeRenderer.render(l.value,"qrcode",{qrCodeLevel:String(l.qrCodeLevel||"M"),qrQuietZone:typeof l.qrQuietZone=="number"?l.qrQuietZone:void 0});d.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(h)}`}catch{d.value=""}}function y(){l.cellType==="barcode"?u():v()}return e.onMounted(y),e.watch(()=>[l.cellType,l.value,l.barcodeType,l.qrCodeLevel,l.qrQuietZone,l.barQuietZone,l.showText,l.printerDpi,l.targetWidthMm,l.targetHeightMm,l.barWidth,l.barFontSize,l.barHeight,l.maxWidth,l.maxHeight],y),(h,m)=>(e.openBlock(),e.createElementBlock("div",Xn,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:o,preserveAspectRatio:n.value,style:e.normalizeStyle(r.value)},null,12,Qn)),[[e.vShow,t.cellType==="barcode"&&i.value]]),t.cellType==="qrcode"&&d.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:d.value,alt:"qrcode",style:e.normalizeStyle(s.value)},null,12,Jn)):e.createCommentVNode("",!0),!i.value&&t.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",_n,e.toDisplayString(t.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),ta=Ee(ea,[["__scopeId","data-v-edf0cd02"]]),oa=["src"],la={key:1,class:"image-placeholder"},na=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 n=l.value||"";return n?n.includes("{")?l.designMode?p.evaluateTemplate(n,p.DEFAULT_DEMO_DATA):p.evaluateTemplate(n,l.data?.[0]||{}):n:""}),i=e.ref(!1);function d(){i.value=!0}e.watch(o,()=>{i.value=!1});const c=e.computed(()=>l.boxHeightMm?{height:`${l.boxHeightMm}mm`}:{}),a=e.computed(()=>({...l.boxHeightMm?{width:"100%",height:"100%"}:{},objectFit:l.fit||"contain",...p.cropStyleDeclarations(l.fit,l.fitScale,l.objectPosition),maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:"cell-image",style:e.normalizeStyle(c.value)},[o.value&&!i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(a.value),onError:d},null,44,oa)):(e.openBlock(),e.createElementBlock("div",la,"图片"))],4))}}),aa=Ee(na,[["__scopeId","data-v-2821a676"]]),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"},it=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:"汇"},i=t,d=l,c=e.inject(nt,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),a=e.computed(()=>i.element.options.tableRows??[]),n=e.computed(()=>i.element.options.tableColWidths??[]),r=e.computed(()=>i.element.options.tableDefaultFontSize??10),s=e.computed(()=>i.element.options.tableDefaultColor??"#333333"),u=e.computed(()=>{const U=c.tableSelection.value;return U&&U.elementId===i.element.id?U:null});function k(U){let H=0;for(let j=0;j<U;j++)H+=a.value[j].height;return H}const v=e.ref(null),y=e.ref(null),h=e.ref([]);function m(){if(!i.designMode)return;const U=v.value;if(!U)return;const H=U.offsetHeight;if(H<=0)return;const j=i.element.options,T=H/it;Math.abs(T-(j.height??0))>pa&&(j.height=Math.round(T*100)/100);const V=U.offsetTop;h.value=Array.from(U.rows).map(le=>({top:(le.offsetTop-V)/it,height:le.offsetHeight/it}))}function E(U){return h.value[U]?.top??k(U)}function f(U){return h.value[U]?.height??a.value[U]?.height??0}e.watch(()=>[i.element.options,i.designMode],()=>m(),{deep:!0,flush:"post"}),e.onMounted(()=>{m(),document.fonts?.ready.then(()=>m())});const N=e.computed(()=>{const U=i.element.options.dataSource;if(U&&Array.isArray(p.DEFAULT_DEMO_DATA[U]))return p.DEFAULT_DEMO_DATA[U];for(const H of Object.values(p.DEFAULT_DEMO_DATA))if(Array.isArray(H))return H}),B=e.computed(()=>{if(i.data)return i.data});function Q(U){return U.cellType==="barcode"||U.cellType==="qrcode"}function Y(U,H){return Q(H)?p.resolveBarcodeDesignValue(H.formatter,N.value):H.formatter||""}function C(U,H){const j=i.element.options,T={designMode:i.designMode,showGhostBorder:i.showTableGhostBorder};return{fontFamily:me.resolveCanvasFontFamily(H.fontFamily??j.tableDefaultFontFamily),textAlign:H.align??"left",...H.align==="justify"?{textAlignLast:"justify"}:{},verticalAlign:H.valign??"middle",fontSize:(H.fontSize??r.value)+"pt",fontWeight:H.fontWeight??"normal",color:H.color??s.value,backgroundColor:H.backgroundColor??"transparent",borderTop:p.resolveCellBorderCss(H.borders?.top,T),borderRight:p.resolveCellBorderCss(H.borders?.right,T),borderBottom:p.resolveCellBorderCss(H.borders?.bottom,T),borderLeft:p.resolveCellBorderCss(H.borders?.left,T),padding:(H.padding??j.tableDefaultPadding??1)+"mm",whiteSpace:H.wordWrap??!0?"pre-wrap":"nowrap",overflow:H.wordWrap??!0?"visible":"hidden"}}function b(U){return p.resolveCellTextFit(U)}function P(U){return b(U)!=="autoHeight"}function ae(U){return U.fontSize??r.value}function q(U,H){return p.cellFitCapMm(a.value,U,H,i.element.options.tableDefaultPadding??1)}function w(U,H){return p.cellFitWidthMm(n.value,U,H,i.element.options.tableDefaultPadding??1)}function z(U,H){return{maxHeight:q(H,U)+"mm",overflow:"hidden",...U.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}Ct(y,()=>[i.designMode,i.data?.length,n.value.join(","),r.value,i.element.options.tableDefaultPadding,a.value.map(U=>`${U.height}:${U.cells.map(H=>`${H.formatter??""}|${H.fontSize??""}|${H.wordWrap??""}|${H.textFit??""}|${H.colspan??1}`).join("~")}`).join(",")]);function I(U,H){const j=u.value;return{"cell-selected":!!j&&U>=j.r1&&U<=j.r2&&H>=j.c1&&H<=j.c2,"row-data-bg":a.value[U].type==="data"}}const Z=e.ref(null);function J(U,H){const j=p.normalizeSelection(a.value,U,H);c.setTableSelection({elementId:i.element.id,...j})}function ue(U,H,j){!i.designMode||!i.isSelected||(j.stopPropagation(),j.shiftKey&&u.value?J({r:u.value.r1,c:u.value.c1},{r:U,c:H}):(Z.value={r:U,c:H},J({r:U,c:H},{r:U,c:H})),window.addEventListener("mouseup",()=>{Z.value=null},{once:!0}))}function D(U,H){Z.value&&J(Z.value,{r:U,c:H})}function ne(U,H){i.designMode&&d("dblclick-cell",i.element.id,U,H)}const ee=e.reactive({visible:!1,x:0,y:0}),F=e.inject(dt,null);function fe(U,H,j){if(!i.designMode)return;!i.isSelected&&F&&(F.value=new Set([i.element.id]));const T=u.value;T&&U>=T.r1&&U<=T.r2&&H>=T.c1&&H<=T.c2||J({r:U,c:H},{r:U,c:H}),ee.x=j.clientX,ee.y=j.clientY,ee.visible=!0,window.removeEventListener("mouseup",he),window.addEventListener("mouseup",he)}function he(U){U.target?.closest?.(".table-ctx-menu")||(ee.visible=!1,window.removeEventListener("mouseup",he))}const oe=e.computed(()=>{const U=u.value;return U?p.canMergeReason(a.value,U):"未选择单元格"}),O=e.computed(()=>{const U=u.value;if(!U)return!1;for(let H=U.r1;H<=U.r2;H++)for(let j=U.c1;j<=U.c2;j++){const T=a.value[H].cells[j];if(!T.merged&&((T.rowspan??1)>1||(T.colspan??1)>1))return!0}return!1});function $(U){const H=u.value;if(!H)return"未选择单元格";if(H.r1!==H.r2)return"行类型仅支持单行设置";const j=JSON.parse(JSON.stringify(a.value));return p.setRowType(j,H.r1,U)}function S(){p.syncTableElementSize(i.element.options)}function L(U,H){const j=c.maxTableWidth.value,T=U.reduce((V,le)=>V+le,0)+U[H];return T>j?`插入后表格总宽 ${Math.round(T*10)/10}mm 超过打印范围宽度 ${j}mm,请先缩小列宽`:null}function K(U,H){const j=u.value;if(!j)return;ee.visible=!1;const T=i.element.options,V=T.tableRows,le=T.tableColWidths;let be=null;switch(U){case"insert-row-above":p.insertRow(V,j.r1,"above");break;case"insert-row-below":p.insertRow(V,j.r2,"below");break;case"delete-row":be=p.deleteRow(V,j.r1);break;case"insert-col-left":be=L(le,j.c1),be||p.insertCol(V,le,j.c1,"left");break;case"insert-col-right":be=L(le,j.c2),be||p.insertCol(V,le,j.c2,"right");break;case"delete-col":be=p.deleteCol(V,le,j.c1);break;case"merge":p.mergeCells(V,j);break;case"split":p.splitCells(V,j);break;case"set-row-type":be=p.setRowType(V,j.r1,H);break}if(be){alert(be);return}c.setTableSelection(null),S(),c.recordHistory()}const _=e.computed(()=>i.designMode&&!!i.isSelected&&!i.element.options.locked&&n.value.length>=1),ce=e.computed(()=>Array.from({length:n.value.length},(U,H)=>H+1));function ke(U){return n.value.slice(0,U).reduce((H,j)=>H+j,0)}const R=e.ref(null);let M=0,A=0;function se(U,H){_.value&&H.button===0&&(R.value=U,M=H.clientX,A=n.value[U-1],document.addEventListener("mousemove",W),document.addEventListener("mouseup",ge))}function W(U){if(R.value===null)return;const H=i.scale||1,j=(U.clientX-M)/(H*it),T=R.value-1,V=i.element.options.tableColWidths;V[T]=p.clampResizedColumnWidth(V,T,A+j,c.maxTableWidth.value),S()}function ge(){document.removeEventListener("mousemove",W),document.removeEventListener("mouseup",ge),R.value!==null&&(R.value=null,S(),c.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",W),document.removeEventListener("mouseup",ge)}),(U,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:y,class:e.normalizeClass(["print-table",{"design-mode":t.designMode}]),onContextmenu:H[0]||(H[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:v,style:e.normalizeStyle({fontSize:r.value+"pt",color:s.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(j,T)=>(e.openBlock(),e.createElementBlock("col",{key:T,style:e.normalizeStyle({width:j+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(j,T)=>(e.openBlock(),e.createElementBlock("tr",{key:j.id,style:e.normalizeStyle({height:j.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.cells,(V,le)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:V.id},[V.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:V.rowspan||1,colspan:V.colspan||1,class:e.normalizeClass(I(T,le)),style:e.normalizeStyle(C(j,V)),onMousedown:e.withModifiers(be=>ue(T,le,be),["left"]),onMouseenter:be=>D(T,le),onDblclick:e.withModifiers(be=>ne(T,le),["stop"]),onContextmenu:e.withModifiers(be=>fe(T,le,be),["prevent","stop"])},[Q(V)?(e.openBlock(),e.createBlock(ta,{key:0,"cell-type":V.cellType,value:Y(j,V),"barcode-type":V.barcodeType,"qr-code-level":V.qrCodeLevel,"qr-quiet-zone":V.qrQuietZone,"bar-quiet-zone":V.barQuietZone,"show-text":V.showBarcodeText!==!1,fit:V.fit,"max-width":V.maxWidth,"max-height":V.maxHeight,"printer-dpi":V.printerDpi,"target-width-mm":w(le,V),"target-height-mm":q(T,V),"bar-width":V.barWidth,"bar-font-size":V.barFontSize,"bar-height":V.barHeight},null,8,["cell-type","value","barcode-type","qr-code-level","qr-quiet-zone","bar-quiet-zone","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size","bar-height"])):V.cellType==="image"?(e.openBlock(),e.createBlock(aa,{key:1,value:V.formatter||"",fit:V.fit,"object-position":V.objectPosition,"fit-scale":V.fitScale,"max-width":V.maxWidth,"max-height":V.maxHeight,"box-height-mm":e.unref(p.cellImageBoxMm)(V.fit,q(T,V)),"design-mode":t.designMode,data:B.value},null,8,["value","fit","object-position","fit-scale","max-width","max-height","box-height-mm","design-mode","data"])):P(V)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(z(V,T)),"data-fit":b(V)==="shrink"?"shrink":void 0,"data-fit-base":String(ae(V)),"data-fit-min":String(e.unref(p.resolveShrinkMinFontSize)(V.shrinkMinFontSize)),"data-fit-mm":q(T,V)},[j.type==="data"?(e.openBlock(),e.createElementBlock("span",sa,e.toDisplayString(Y(j,V)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(Y(j,V)),1)],64))],12,ra)):j.type==="data"?(e.openBlock(),e.createElementBlock("span",da,e.toDisplayString(Y(j,V)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(Y(j,V)),1)],64))],46,ia))],64))),128))],4))),128))])],4),_.value?(e.openBlock(),e.createElementBlock("div",ca,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ce.value,j=>(e.openBlock(),e.createElementBlock("div",{key:j,class:e.normalizeClass(["col-resize-handle",{dragging:R.value===j}]),role:"separator","aria-label":"列宽手柄"+j,style:e.normalizeStyle({left:ke(j)+"mm"}),onMousedown:e.withModifiers(T=>se(j,T),["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,(j,T)=>(e.openBlock(),e.createElementBlock("span",{key:j.id,class:"row-badge",style:e.normalizeStyle({top:E(T)+"mm",height:f(T)+"mm"})},e.toDisplayString(o[j.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(Zn,{visible:ee.visible,x:ee.x,y:ee.y,"can-delete-row":a.value.length>1,"can-delete-col":n.value.length>1,"merge-disabled-reason":oe.value,"can-split":O.value,"current-row-type":u.value?a.value[u.value.r1]?.type??null:null,"row-type-disabled-reason":$,onAction:K},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),fa=Ee(va,[["__scopeId","data-v-afa3be67"]]),ga=e.defineComponent({__name:"FlowListElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const n=l.element.options;return{display:"grid",gridTemplateColumns:`repeat(${p.resolveFlowColumns(n.flowColumns)},minmax(0,1fr))`,columnGap:`${p.resolveFlowGapX(n.flowGapX)}mm`,gridAutoRows:`minmax(${p.resolveFlowRowHeight(n.flowRowHeight)}mm,auto)`,width:"100%",height:"100%",overflow:"hidden",fontSize:`${n.fontSize||12}pt`,fontFamily:n.fontFamily||void 0,fontWeight:n.fontWeight||void 0,color:n.color||"#333",backgroundColor:n.backgroundColor||"transparent",boxSizing:"border-box"}}),i=["黄芪 20g","当归尾 15g","赤芍 10g","川芎 10g","地龙 10g","桃仁 10g","红花 10g"];function d(n){return Array.isArray(n)&&n.length>0?n:[]}function c(n,r){const s=p.detectFlowListKey(n,r)??(r?Object.keys(r).find(k=>Array.isArray(r[k])):void 0);if(s)return d(r?.[s]);const u=p.detectFlowListKey(n,p.DEFAULT_DEMO_DATA);return u?d(p.DEFAULT_DEMO_DATA[u]):[]}const a=e.computed(()=>{const n=l.element.options,r=typeof n.formatter=="string"?n.formatter:"",s=c(r,d(l.data)[0]);if(!s.length)return l.designMode?[...i]:[];if(!r)return s.map(v=>String(v?.name??JSON.stringify(v)));const u=d(l.data)[0]??{},k=p.detectFlowListKey(r,u)??Object.keys(u).find(v=>Array.isArray(u[v]));return s.map(v=>{try{return p.engine.render(r,{...u,...v,...k?{[k]:v}:{}})}catch{return r}})});return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:"print-flowlist",style:e.normalizeStyle(o.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(s,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"print-flow-cell"},e.toDisplayString(s),1))),128))],4))}}),Dt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="hline"),i=e.computed(()=>{const d=l.element.options,c=(d.borderWidth||.75)+"pt",a=d.borderStyle||"solid",n=d.borderColor||"#333";return o.value?{width:"100%",height:"0",borderTop:`${c} ${a} ${n}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${c} ${a} ${n}`,boxSizing:"border-box"}});return(d,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(i.value)},null,4))}}),Tt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="oval"),i=e.computed(()=>{const d=l.element.options;return{width:"100%",height:"100%",borderWidth:(d.borderWidth||1)+"pt",borderStyle:d.borderStyle||"solid",borderColor:d.borderColor||"#333",backgroundColor:d.backgroundColor||"transparent",borderRadius:o.value?"50%":"0",boxSizing:"border-box"}});return(d,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(i.value)},null,4))}}),ba={class:"print-barcode",ref:"containerRef"},ha=["preserveAspectRatio"],ya=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(null),i=e.ref(null),d={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},c=e.computed(()=>d[l.element.options.fit||"contain"]??"xMidYMid meet"),a=e.computed(()=>i.value?{width:i.value.width,height:i.value.height}:{maxWidth:"100%",maxHeight:"100%"});function n(){if(!o.value)return;const s=o.value,u=l.element.options,k=(l.designMode?u.testData||u.formatter:p.resolveTextBinding(u,l.data))||"条码",v=p.barcodeUnitsPerModule(u.barWidth),y=p.barcodeQuietZoneModules(u.barQuietZone),h=m=>{Pt(s,k,{format:u.barcodeType||"CODE128",width:v,height:m*v,displayValue:!u.hideTitle,fontSize:(u.fontSize??p.BARCODE_TEXT_FONT_SIZE_MODULES)*v,margin:0,marginLeft:y*v,marginRight:y*v,marginTop:0,marginBottom:p.BARCODE_MARGIN_BOTTOM_MODULES*v});const E=r(s);return E?{widthUnits:E.width,heightUnits:E.height}:null};try{const m=p.layoutBarcodeSize({barHeightMm:u.barHeight,boxWidthMm:p.barcodeAvailableBoxMm(u.width,u.maxWidth),boxHeightMm:p.barcodeAvailableBoxMm(u.height,u.maxHeight),dpi:u.printerDpi,barWidth:u.barWidth,measure:h});i.value=m.size?{width:`${m.size.widthMm}mm`,height:`${m.size.heightMm}mm`}:null}catch{i.value=null;return}s.setAttribute("shape-rendering","crispEdges")}function r(s){const u=(s.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return u.length!==4||u.some(k=>!Number.isFinite(k))?null:{width:u[2],height:u[3]}}return e.onMounted(n),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.barQuietZone,l.element.options.barHeight,l.element.options.printerDpi,l.element.options.hideTitle,l.element.options.fontSize,l.element.options.maxWidth,l.element.options.maxHeight],n),(s,u)=>(e.openBlock(),e.createElementBlock("div",ba,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:o,preserveAspectRatio:c.value,style:e.normalizeStyle(a.value)},null,12,ha))],512))}}),Ea=Ee(ya,[["__scopeId","data-v-77f3d103"]]),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(""),i=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 d(){const c=l.element.options,a=(l.designMode?c.testData||c.formatter:p.resolveTextBinding(c,l.data))||"二维码";try{const n=Ge.browserCodeRenderer.render(a,"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(n)}`}catch{o.value=""}}return e.onMounted(d),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.qrCodeLevel,l.element.options.qrQuietZone],d),(c,a)=>(e.openBlock(),e.createElementBlock("div",ka,[o.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,alt:"qrcode",style:e.normalizeStyle(i.value)},null,12,Va)):e.createCommentVNode("",!0)]))}}),wa=Ee(Na,[["__scopeId","data-v-792ee33c"]]),Ca=["innerHTML"],xa=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{if(l.element.options.formatter){const i=l.data&&l.data.length>0?l.data[0]:{},d=p.evaluateTemplate(l.element.options.formatter,i??{});return d?Xt.sanitize(d):""}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(i,d)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:o.value},null,8,Ca))}}),Sa=Ee(xa,[["__scopeId","data-v-880bbde5"]]),Ba=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const d=l.element.options;return{fontSize:(d.fontSize||12)+"pt",fontWeight:d.fontWeight||"normal",fontFamily:me.resolveCanvasFontFamily(d.fontFamily),color:d.color||"#333",textAlign:d.textAlign||"left",...d.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:d.lineHeight?d.lineHeight+"pt":"normal",letterSpacing:d.letterSpacing?d.letterSpacing+"pt":"normal"}}),i=e.computed(()=>l.designMode?l.element.options.title||"{pageIndex}/{totalPages}":l.element.options.title||"");return(d,c)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(o.value)},e.toDisplayString(i.value),5))}}),$a=Ee(Ba,[["__scopeId","data-v-cf0274f2"]]),Da={key:0,class:"drag-preview"},Ta={key:1,class:"resize-handles"},Ma=["onMousedown"],za={key:2,class:"selected-indicator"},Aa={class:"position-label"},La=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,i=l,d=e.ref(null),c=e.inject(dt,null),a=e.computed(()=>c?.value?c.value.has(o.element.id):o.isSelected??!1),n=e.inject(Ft,null),r=e.computed(()=>n?.value.has(o.element.id)??!1),s={text:e.markRaw(Fn),image:e.markRaw(Wn),longText:e.markRaw(Kn),table:e.markRaw(fa),flowList:e.markRaw(ga),hline:e.markRaw(Dt),vline:e.markRaw(Dt),rect:e.markRaw(Tt),oval:e.markRaw(Tt),barcode:e.markRaw(Ea),qrcode:e.markRaw(wa),html:e.markRaw(Sa),pageNumber:e.markRaw($a)},u=e.computed(()=>s[o.element.printElementType.type]),k=e.computed(()=>o.element.printElementType.type==="table"?{showTableGhostBorder:o.showTableGhostBorder,scale:o.scale}:{}),v=e.computed(()=>{const w=o.element.options,z=p.resolveElementBorder(o.element.printElementType.type,w),I={};if(z?.all&&(I.border=`${z.all.borderWidth} ${z.all.borderStyle} ${z.all.borderColor}`),z)for(const Z of p.ELEMENT_BORDER_SIDES){const J=z.edges[Z];J&&(I[`border${Z.charAt(0).toUpperCase()}${Z.slice(1)}`]=`${J.borderWidth} ${J.borderStyle} ${J.borderColor}`)}return{position:"absolute",left:w.left+"mm",top:w.top+"mm",width:w.width+"mm",height:w.height+"mm",zIndex:w.zIndex||"auto",...I}}),y=e.computed(()=>{const w=o.element.options;return`x:${Math.round(w.left)} y:${Math.round(w.top)} ${Math.round(w.width)}×${Math.round(w.height)}mm`});let h=0,m=0;const E=e.reactive({disabled:!o.designMode||!!o.element.options.locked,getScale:()=>(o.scale||1)*p.mmToPx(1),onDrag:w=>{const z=w.left-h,I=w.top-m;d.value&&(d.value.style.transform=`translate(${z}mm, ${I}mm)`)},onDragEnd:(w,z)=>{if(z.altKey){const J=JSON.parse(JSON.stringify(o.element));J.id=p.generateId(),J.options.left=w.left,J.options.top=w.top,J.options.groupId=void 0,i("clone-element",J,{left:w.left,top:w.top}),d.value&&(d.value.style.transform="");return}const I=w.left-h,Z=w.top-m;if(o.element.options.left=w.left,o.element.options.top=w.top,d.value&&(d.value.style.transform=""),o.element.options.groupId&&o.allElements)for(const J of o.allElements)J.id!==o.element.id&&J.options.groupId===o.element.options.groupId&&(J.options.left+=I,J.options.top+=Z)},onStart:()=>{h=o.element.options.left,m=o.element.options.top,i("drag-start")},onStop:()=>{o.clearAdsorbGuides?.(),i("drag-stop")},onAdsorb:w=>{let z=w.left,I=w.top;return o.snapToGrid&&(z=Math.round(w.left/5)*5,I=Math.round(w.top/5)*5),o.adsorbHandler?o.adsorbHandler({id:o.element.id,left:z,top:I,width:o.element.options.width,height:o.element.options.height}):{left:z,top:I,lines:[]}}}),{setup:f,cleanup:N,isDragging:B}=An(d,E);e.watchEffect(()=>{E.disabled=!o.designMode||!!o.element.options.locked});const Q=e.computed(()=>a.value&&!!o.designMode&&!o.element.options.locked&&o.element.printElementType.type!=="table"),{startResize:Y,cleanup:C}=p.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(o.scale||1)*p.mmToPx(1),getRect:()=>({left:o.element.options.left,top:o.element.options.top,width:o.element.options.width,height:o.element.options.height}),onResize:w=>{o.element.options.left=w.left,o.element.options.top=w.top,o.element.options.width=w.width,o.element.options.height=w.height},onStart:()=>{i("drag-start")},onStop:()=>{i("drag-stop")}});function b(w){o.designMode&&w.button===0&&i("select",o.element.id,w.ctrlKey||w.metaKey)}function P(){o.designMode&&i("dblclick-element",o.element.id)}function ae(w,z,I){o.designMode&&i("dblclick-cell",w,z,I)}e.onMounted(()=>{o.designMode&&f()});function q(){N(),C(),o.clearAdsorbGuides?.()}return e.onUnmounted(()=>{q()}),(w,z)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:d,class:e.normalizeClass(["print-element",{selected:a.value,previewed:r.value,"design-mode":t.designMode,locked:t.element.options.locked,hidden:t.element.options.visible===!1,"drag-ghost":e.unref(B),[`type-${t.element.printElementType.type}`]:!0,[`zone-${t.zone||"content"}`]:!0}]),style:e.normalizeStyle(v.value),onMousedown:e.withModifiers(b,["stop"]),onDblclick:e.withModifiers(P,["stop"]),onContextmenu:z[0]||(z[0]=e.withModifiers(I=>w.$emit("contextmenu",t.element.id,I),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.value),e.mergeProps({element:t.element,data:t.printData,"design-mode":t.designMode,"is-selected":a.value},k.value,{onDblclickCell:ae}),null,16,["element","data","design-mode","is-selected"])),e.unref(B)?(e.openBlock(),e.createElementBlock("div",Da)):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",Ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.RESIZE_POINTS),I=>(e.openBlock(),e.createElementBlock("div",{key:I,class:e.normalizeClass(["resize-handle",`handle-${I}`]),onMousedown:e.withModifiers(Z=>e.unref(Y)(I,Z),["stop"])},null,42,Ma))),128))])):e.createCommentVNode("",!0),a.value&&t.designMode?(e.openBlock(),e.createElementBlock("div",za,[e.createElementVNode("div",Aa,e.toDisplayString(y.value),1)])):e.createCommentVNode("",!0)],38))}}),vt=Ee(La,[["__scopeId","data-v-0e526a97"]]);function Ra(t={}){const l=e.ref([]),o=e.ref({width:0,height:0});function i(a,n,r){return p.computeAdsorb(a,n,r,t)}function d(a,n,r){l.value=a,o.value={width:n,height:r}}function c(){l.value=[]}return{check:i,renderLines:d,clearLines:c,guideLines:l,paperSize:o}}function Pa(t){const{check:l,renderLines:o,clearLines:i,guideLines:d,paperSize:c}=Ra(t.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function a(r){const s=t.getElements().filter(v=>v.id!==r.id).map(v=>({id:v.id,left:v.options.left,top:v.options.top,width:v.options.width,height:v.options.height})),u=l(r,s,t.getGuides?.()),k=t.getPaperSize();return o(u.lines,k.width,k.height),u}function n(){i()}return{requestAdsorb:a,clearGuides:n,guideLines:d,paperSize:c}}const Fa=["src"],Ua=["width","height","viewBox"],Ia=["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"},Ka=["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 i=t,d=o,c=e.ref(null),a=e.computed(()=>p.getPaperDimensions(i.templateData).width),n=e.computed(()=>p.getPaperDimensions(i.templateData).height),r=e.computed(()=>i.templateData.designBackground),s=e.ref(!1);e.watch(()=>r.value?.src,()=>{s.value=!1});const u=e.computed(()=>{const S=r.value?.rotation;return S===90||S===180||S===270?S:0}),k=e.computed(()=>{const S=u.value,L=S===90||S===270,K=L?n.value:a.value,_=L?a.value:n.value,ce={width:K+"mm",height:_+"mm",left:(a.value-K)/2+"mm",top:(n.value-_)/2+"mm"};return S!==0&&(ce.transform=`rotate(${S}deg)`),ce});function v(){s.value=!0,console.warn("[print-designer] 设计背景图加载失败:",r.value?.src)}const y=e.computed(()=>`${8/(i.scale||1)}px`),h=e.computed(()=>{const S=i.scale||1,L=p.mmToPx(a.value)*S,K=p.mmToPx(n.value)*S;return{width:L+"px",height:K+"px",position:"relative"}}),m=e.computed(()=>{const S=i.templateData.margins,L=i.templateData.header.height,K=i.templateData.footer.height,_=a.value-S.left-S.right;return{header:{left:S.left,top:S.top,width:_,height:L},content:{left:S.left,top:S.top+L,width:_,height:n.value-S.top-S.bottom-L-K},footer:{left:S.left,top:n.value-S.bottom-K,width:_,height:K}}});function E(S){return{position:"absolute",left:S.left+"mm",top:S.top+"mm",width:S.width+"mm",height:S.height+"mm"}}const f=e.computed(()=>{const S={header:[],footer:[],content:[]};for(const L of i.runtimeElements)L.zone==="header"?S.header.push(L):L.zone==="footer"?S.footer.push(L):S.content.push(L);return S}),N=e.computed(()=>f.value.header),B=e.computed(()=>f.value.footer),Q=e.computed(()=>f.value.content);let Y="content";const{requestAdsorb:C,clearGuides:b,guideLines:P,paperSize:ae}=Pa({getElements:()=>f.value[Y],getPaperSize:()=>{const S=m.value[Y];return{width:S.width,height:S.height}},getGuides:()=>{const S=[],L=[];for(const K of i.guides??[])K.type==="vertical"?S.push(K.position):L.push(K.position);return{vertical:S,horizontal:L}}});function q(S){Y=i.runtimeElements.find(_=>_.id===S.id)?.zone||"content";const K=C(S);return(K.left!==S.left||K.top!==S.top)&&ne(K.left+S.width/2,K.top+S.height/2),K}function w(S,L){if(S.button!==0)return;const K=L.position,_=S.clientX,ce=S.clientY,ke=i.scale??1,R=25.4/96,M=se=>{const W=(L.type==="vertical"?se.clientX-_:se.clientY-ce)/ke*R,ge=L.type==="vertical"?a.value:n.value,U=Math.min(Math.max(K+W,0),ge);d("guide-move",L.id,U)},A=()=>{window.removeEventListener("mousemove",M),window.removeEventListener("mouseup",A)};window.addEventListener("mousemove",M),window.addEventListener("mouseup",A)}const z=e.computed(()=>({width:a.value+"mm",minHeight:n.value+"mm",background:i.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:i.scale?`scale(${i.scale})`:void 0,transformOrigin:"0 0"})),I=e.computed(()=>{const S=i.templateData.margins;return{padding:`${S.top}mm ${S.right}mm ${S.bottom}mm ${S.left}mm`,position:"relative",boxSizing:"border-box",minHeight:n.value+"mm"}}),Z=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 J=0,ue=null;const D=e.ref(null);function ne(S,L){J+=1,D.value={left:S,top:L,key:J},ue&&clearTimeout(ue),ue=setTimeout(()=>{D.value=null},300)}const ee=e.computed(()=>me.resolveWatermarkLayout(i.templateData.watermark,i.printData,{width:a.value,height:n.value})),F=e.ref(null);function fe(S,L){L.button===0&&(O(),F.value={zone:S,startY:L.clientY,startH:i.templateData[S].height},window.addEventListener("mousemove",he),window.addEventListener("mouseup",oe))}function he(S){if(!F.value)return;const{zone:L,startY:K,startH:_}=F.value,ke=(S.clientY-K)/(i.scale||1)*25.4/96,R=L==="header"?ke:-ke,M=Math.min(100,n.value-i.templateData.margins.top-i.templateData.margins.bottom-(L==="header"?i.templateData.footer.height:i.templateData.header.height)-10),A=Math.min(M,Math.max(0,Math.round((_+R)*10)/10));d("zone-height-change",L,A)}function oe(){if(!F.value)return;const S=F.value.zone;F.value=null,window.removeEventListener("mousemove",he),window.removeEventListener("mouseup",oe),d("zone-height-commit",S)}function O(){window.removeEventListener("mousemove",he),window.removeEventListener("mouseup",oe),F.value=null}e.onUnmounted(()=>{O(),ue&&clearTimeout(ue)});function $(S,L){d("select",S,L)}return l({contentRef:c}),(S,L)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(h.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(z.value)},[t.designMode&&r.value?.src&&!s.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(k.value)},[e.createElementVNode("img",{src:r.value.src,draggable:"false",alt:"",onError:v},null,40,Fa)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:c,style:e.normalizeStyle(I.value)},[t.showGrid&&t.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle(Z.value)},null,4)):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock("div",{key:D.value.key,class:"snap-indicator",style:e.normalizeStyle({left:D.value.left+"mm",top:D.value.top+"mm"})},null,4)):e.createCommentVNode("",!0),ee.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(ee.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ee.value.tiles,(K,_)=>(e.openBlock(),e.createElementBlock("svg",{key:_,class:"watermark-tile",width:K.widthMm+"mm",height:K.heightMm+"mm",viewBox:`0 0 ${ee.value.tileWidthPx} ${ee.value.tileHeightPx}`,style:e.normalizeStyle({left:K.leftMm+"mm",top:K.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:ee.value.tileWidthPx/2,y:ee.value.tileHeightPx/2,"font-size":ee.value.fontSizePx,fill:ee.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${ee.value.rotate},${ee.value.tileWidthPx/2},${ee.value.tileHeightPx/2})`},e.toDisplayString(ee.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(E(m.value.header))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Oa,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,K=>(e.openBlock(),e.createBlock(vt,{key:K.id,element:K,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":N.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"header","adsorb-handler":q,"clear-adsorb-guides":e.unref(b),onSelect:$,onDragStart:L[0]||(L[0]=_=>S.$emit("drag-start")),onDragStop:L[1]||(L[1]=_=>S.$emit("drag-stop")),onDblclickElement:L[2]||(L[2]=_=>S.$emit("dblclick-element",_)),onDblclickCell:L[3]||(L[3]=(_,ce,ke)=>S.$emit("dblclick-cell",_,ce,ke)),onContextmenu:L[4]||(L[4]=(_,ce)=>S.$emit("contextmenu",_,ce)),onCloneElement:(_,ce)=>S.$emit("clone-element",_,ce)},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:L[5]||(L[5]=e.withModifiers(K=>fe("header",K),["prevent","stop"]))},[F.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(E(m.value.content))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Q.value,K=>(e.openBlock(),e.createBlock(vt,{key:K.id,element:K,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":Q.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"content","adsorb-handler":q,"clear-adsorb-guides":e.unref(b),onSelect:$,onDragStart:L[6]||(L[6]=_=>S.$emit("drag-start")),onDragStop:L[7]||(L[7]=_=>S.$emit("drag-stop")),onDblclickElement:L[8]||(L[8]=_=>S.$emit("dblclick-element",_)),onDblclickCell:L[9]||(L[9]=(_,ce,ke)=>S.$emit("dblclick-cell",_,ce,ke)),onContextmenu:L[10]||(L[10]=(_,ce)=>S.$emit("contextmenu",_,ce)),onCloneElement:(_,ce)=>S.$emit("clone-element",_,ce)},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(E(m.value.footer))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Wa,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,K=>(e.openBlock(),e.createBlock(vt,{key:K.id,element:K,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":B.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"footer","adsorb-handler":q,"clear-adsorb-guides":e.unref(b),onSelect:$,onDragStart:L[11]||(L[11]=_=>S.$emit("drag-start")),onDragStop:L[12]||(L[12]=_=>S.$emit("drag-stop")),onDblclickElement:L[13]||(L[13]=_=>S.$emit("dblclick-element",_)),onDblclickCell:L[14]||(L[14]=(_,ce,ke)=>S.$emit("dblclick-cell",_,ce,ke)),onContextmenu:L[15]||(L[15]=(_,ce)=>S.$emit("contextmenu",_,ce)),onCloneElement:(_,ce)=>S.$emit("clone-element",_,ce)},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:L[16]||(L[16]=e.withModifiers(K=>fe("footer",K),["prevent","stop"]))},[F.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(P),(K,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:e.normalizeClass(["adsorb-guide",[`guide-${K.type}`]]),style:e.normalizeStyle(K.type==="vertical"?{left:K.position+"mm",top:"0",height:e.unref(ae).height+"mm",borderLeftColor:K.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:K.position+"mm",left:"0",width:e.unref(ae).width+"mm",borderTopColor:K.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.guides,K=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+K.id,class:e.normalizeClass(["manual-guide",[`guide-${K.type}`]]),style:e.normalizeStyle(K.type==="vertical"?{left:K.position+"mm",top:"0",height:n.value+"mm","--guide-hit":y.value}:{top:K.position+"mm",left:"0",width:a.value+"mm","--guide-hit":y.value}),onMousedown:e.withModifiers(_=>w(_,K),["prevent","stop"]),onDblclick:e.withModifiers(_=>K.id&&d("guide-remove",K.id),["prevent","stop"])},null,46,Ka))),128))],4)],4)],4))}}),ja=Ee(qa,[["__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,i=l,d=e.computed(()=>o.orientation==="horizontal"),c=e.computed(()=>d.value?"vertical":"horizontal"),a=e.ref(null),n=e.ref(null),r=e.computed(()=>n.value??o.cursorPx??null),s=e.computed(()=>d.value?{width:o.viewportPx+"px",height:p.RULER_THICKNESS+"px"}:{width:p.RULER_THICKNESS+"px",height:o.viewportPx+"px"});let u=0;function k(){u||(u=requestAnimationFrame(()=>{u=0,v()}))}function v(){const b=a.value;if(!b)return;const P=b.getContext("2d");if(!P)return;const ae=window.devicePixelRatio||1,q=Math.max(0,Math.round(o.viewportPx)),w=p.RULER_THICKNESS;b.width=(d.value?q:w)*ae,b.height=(d.value?w:q)*ae,P.setTransform(ae,0,0,ae,0,0);const z=getComputedStyle(b),I=z.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",Z=z.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",J=z.getPropertyValue("--pd-accent").trim()||"#165DFF";P.fillStyle=I,P.fillRect(0,0,d.value?q:w,d.value?w:q);const ue=o.scale>0?o.scale:1,D=p.mmToPx(1)*ue;if(D<=0)return;const ne=-o.originPx/D,ee=(q-o.originPx)/D,F=p.chooseMajorStepMM(ue),fe=p.buildRulerTicks(ne,ee,F);y(P,fe,D,Z,!0),y(P,fe,D,Z,!1),h(P,0,J),h(P,o.paperLengthMM,J);const he=r.value;if(he!==null&&he>=0&&he<=q){if(P.strokeStyle=J,P.lineWidth=1.5,P.beginPath(),d.value){const oe=Math.round(he)+.5;P.moveTo(oe,0),P.lineTo(oe,w)}else{const oe=Math.round(he)+.5;P.moveTo(0,oe),P.lineTo(w,oe)}P.stroke()}}function y(b,P,ae,q,w){b.strokeStyle=q,b.fillStyle=q,b.globalAlpha=w?.32:1,b.lineWidth=1,b.font="9px ui-monospace, Menlo, monospace",b.textBaseline="top";for(const z of P){if((z.mm<0||z.mm>o.paperLengthMM)!==w)continue;const Z=Math.round(o.originPx+z.mm*ae)+.5,J=z.major?8:4;b.beginPath(),d.value?(b.moveTo(Z,0),b.lineTo(Z,J)):(b.moveTo(0,Z),b.lineTo(J,Z)),b.stroke(),z.major&&z.label&&(d.value?b.fillText(z.label,Z+2,11):(b.save(),b.translate(11,Z+2),b.rotate(-Math.PI/2),b.fillText(z.label,0,0),b.restore()))}b.globalAlpha=1}function h(b,P,ae){const q=p.mmToPx(1)*(o.scale>0?o.scale:1),w=Math.round(o.originPx+P*q)+.5;w<=0||w>=o.viewportPx||(b.strokeStyle=ae,b.globalAlpha=.55,b.lineWidth=1,b.beginPath(),d.value?(b.moveTo(w,0),b.lineTo(w,p.RULER_THICKNESS)):(b.moveTo(0,w),b.lineTo(p.RULER_THICKNESS,w)),b.stroke(),b.globalAlpha=1)}e.watch(()=>[o.viewportPx,o.originPx,o.paperLengthMM,o.scale,o.cursorPx,o.orientation],k),e.onMounted(k),e.onBeforeUnmount(()=>{u&&cancelAnimationFrame(u)});let m=!1;function E(b){const P=a.value;if(!P)return null;const ae=P.getBoundingClientRect(),q=d.value?b.clientX-ae.left:b.clientY-ae.top;if(q<0||q>o.viewportPx)return null;const w=p.mmToPx(1)*(o.scale>0?o.scale:1);return(q-o.originPx)/w}function f(b){b.button===0&&(m=!0,b.preventDefault(),window.addEventListener("mousemove",Y),window.addEventListener("mouseup",C),Q(b))}function N(b){const P=a.value;if(!P)return;const ae=P.getBoundingClientRect();n.value=d.value?b.clientX-ae.left:b.clientY-ae.top,k()}function B(){n.value=null,k()}function Q(b){const P=E(b);i("guide-dragging",P)}function Y(b){m&&Q(b)}function C(b){if(!m)return;m=!1,window.removeEventListener("mousemove",Y),window.removeEventListener("mouseup",C);const P=E(b);P!==null&&P>=0&&P<=o.paperLengthMM&&i("add-guide",c.value,P),i("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",Y),window.removeEventListener("mouseup",C)}),(b,P)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:a,class:e.normalizeClass(["pd-ruler",`is-${t.orientation}`]),style:e.normalizeStyle(s.value),onMousedown:f,onMousemove:N,onMouseleave:B},null,38))}}),Mt=Ee(Ya,[["__scopeId","data-v-1e7d0633"]]),Za={class:"canvas-scroll"},rt=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 i=t,d=o;function c(R,M){d("select",R,M)}const a=e.ref(null),n=e.computed(()=>p.getPaperDimensions(i.templateData).width),r=e.computed(()=>p.getPaperDimensions(i.templateData).height),s=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),u=e.reactive({x:null,y:null}),k=e.reactive({x:0,y:0}),v=e.computed(()=>({transform:`translate(${k.x}px, ${k.y}px)`}));function y(){const R=a.value,M=R?.querySelector(".hiprint-printPaper");if(!R||!M)return;const A=R.getBoundingClientRect(),se=M.getBoundingClientRect(),W=i.scale||1,ge=se.width/p.mmToPx(n.value);s.paperScale=Math.abs(ge-W)<.002?W:ge,s.originX=se.left-A.left-p.RULER_THICKNESS,s.originY=se.top-A.top-p.RULER_THICKNESS,s.viewW=R.clientWidth-p.RULER_THICKNESS,s.viewH=R.clientHeight-p.RULER_THICKNESS}function h(){k.x=a.value?.scrollLeft??0,k.y=a.value?.scrollTop??0,y()}let m=null,E=0;function f(){cancelAnimationFrame(E);const R=performance.now()+220,M=()=>{y(),performance.now()<R&&(E=requestAnimationFrame(M))};E=requestAnimationFrame(M)}const N=e.ref(null);function B(R,M){N.value=M===null?null:{type:R,mm:M}}const Q=e.computed(()=>{const R=N.value,M=a.value?.querySelector(".hiprint-printPaper");if(!R||!M)return{};const A=M.getBoundingClientRect(),se=A.width/p.mmToPx(n.value),W=p.mmToPx(R.mm)*(se>0?se:i.scale||1);return R.type==="vertical"?{left:A.left+W+"px",top:A.top+"px",height:A.height+"px"}:{left:A.left+"px",top:A.top+W+"px",width:A.width+"px"}});function Y(R){const M=a.value?.querySelector(".hiprint-printPaper");if(!M)return;const A=M.getBoundingClientRect(),se=i.scale||1,W=p.pxToMm((R.clientX-A.left)/se),ge=p.pxToMm((R.clientY-A.top)/se);if(!(W<0||ge<0))return{x:W,y:ge}}function C(R){const M=Y(R),A=R.dataTransfer?.getData("fieldData");if(A)try{const W=JSON.parse(A);d("drop-field",W,M);return}catch{}const se=R.dataTransfer?.getData("elementType");se&&d("drop-element",se,M)}const b=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let P={x:0,y:0};function ae(R){return!R||!(R instanceof HTMLElement)?!1:!!(R===a.value||R.classList.contains("canvas-scroll")||R.classList.contains("hiprint-printPaper")||R.classList.contains("hiprint-printPaper-content")||R.classList.contains("zone-layer")||R.classList.contains("grid-bg")||R.classList.contains("watermark-layer"))}function q(R){const M=a.value,A=M?.querySelector(".hiprint-printPaper");if(!M||!A)return;const se=M.getBoundingClientRect();u.x=R.clientX-se.left-p.RULER_THICKNESS,u.y=R.clientY-se.top-p.RULER_THICKNESS;const W=A.getBoundingClientRect(),ge=i.scale||1,U=p.pxToMm((R.clientX-W.left)/ge),H=p.pxToMm((R.clientY-W.top)/ge);if(U<0||H<0){d("coordinate",null);return}d("coordinate",{x:U,y:H})}function w(){d("coordinate",null),u.x=null,u.y=null}function z(R,M,A,se){const W=a.value;if(!W)return;const ge=Math.max(se,Math.round(R)),U=Math.round((i.scale||1)*100);if(ge===U)return;const H=i.scale||1,j=ge/100/H,T=getComputedStyle(W),V=parseFloat(T.paddingLeft)||0,le=parseFloat(T.paddingTop)||0,be=W.scrollLeft+M-V,Ne=W.scrollTop+A-le;d("zoom",ge-U),e.nextTick(()=>{const Se=getComputedStyle(W),Be=parseFloat(Se.paddingLeft)||0,He=parseFloat(Se.paddingTop)||0;W.scrollLeft=be*j-M+Be,W.scrollTop=Ne*j-A+He})}function I(R){if(!(R.ctrlKey||R.metaKey))return;R.preventDefault();const M=a.value;if(!M)return;const A=Math.round((i.scale||1)*100),se=p.nextWheelScale(A,R.deltaY>0?-1:1);if(se===A)return;const W=M.getBoundingClientRect();z(se,R.clientX-W.left,R.clientY-W.top,p.MIN_SCALE_PERCENT)}function Z(R){const M=a.value;if(!M)return;const A=Math.round((i.scale||1)*100),se=p.nextWheelScale(A,R);z(se,M.clientWidth/2,M.clientHeight/2,p.MIN_SCALE_PERCENT)}function J(R){const M=a.value;if(!M)return;const A=M.querySelector(".hiprint-printPaper"),se=A?.style.transition??"";A&&(A.style.transition="none"),z(R,M.clientWidth/2,M.clientHeight/2,p.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{A&&(A.style.transition=se)})}function ue(R){R.button!==2&&ae(R.target)&&(d("clear-selection"),P={x:R.clientX,y:R.clientY},b.visible=!0,b.x=R.clientX,b.y=R.clientY,b.w=0,b.h=0,window.addEventListener("mousemove",ne),window.addEventListener("mouseup",ee))}function D(){if(b.w<3||b.h<3)return[];const R=a.value?.querySelector(".hiprint-printPaper");if(!R)return[];const M=R.getBoundingClientRect(),A=i.scale||1,se=b.x<P.x,W=[];for(const ge of i.elements){if(ge.options.visible===!1||ge.options.locked)continue;const U=M.left+ge.options.left*rt*A,H=M.top+ge.options.top*rt*A,j=U+ge.options.width*rt*A,T=H+ge.options.height*rt*A,V=U<b.x+b.w&&j>b.x&&H<b.y+b.h&&T>b.y,le=U>=b.x&&j<=b.x+b.w&&H>=b.y&&T<=b.y+b.h;(se?le:V)&&W.push(ge.id)}return W}function ne(R){const M=R.clientX-P.x,A=R.clientY-P.y;b.x=M>=0?P.x:R.clientX,b.y=A>=0?P.y:R.clientY,b.w=Math.abs(M),b.h=Math.abs(A),d("preview",D())}function ee(){window.removeEventListener("mousemove",ne),window.removeEventListener("mouseup",ee);const R=D();d("preview",R),R.length>0?d("commit-preview"):d("clear-selection"),d("preview",[]),b.visible=!1}const F=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),fe=e.ref(null),he=e.inject(dt,null);function oe(R,M){if(!M&&!ae(R.target))return;M&&!he?.value.has(M)&&d("select",M,!1),F.targetId=M??null,F.visible=!0,F.x=R.clientX,F.y=R.clientY,F.flipX=0,F.flipY=0,e.nextTick(()=>{const se=fe.value;if(!se)return;const W=se.getBoundingClientRect(),ge=4;R.clientX+W.width+ge>window.innerWidth&&(F.flipX=-W.width),R.clientY+W.height+ge>window.innerHeight&&(F.flipY=-W.height)}),window.removeEventListener("mousedown",$);const A=++O;e.nextTick(()=>{A===O&&window.addEventListener("mousedown",$)})}let O=0;function $(R){const M=fe.value;M&&M.contains(R.target)||S()}function S(){F.visible=!1,window.removeEventListener("mousedown",$)}function L(){S(),i.hasClipboard&&d("paste")}function K(){S(),d("select-all")}function _(){S(),d("clear-selection")}function ce(R,M){S(),R==="copy"?d("copy"):R==="cut"?d("cut"):R==="paste"?L():R==="delete"?d("delete"):R==="move-layer"&&d("move-layer",M)}e.onMounted(()=>{e.nextTick(y),a.value&&typeof ResizeObserver<"u"&&(m=new ResizeObserver(y),m.observe(a.value))}),e.watch(()=>i.scale,f),e.watch([n,r],()=>e.nextTick(y));function ke(){const R=a.value;if(!R)return;let M=0,A=0,se=0;const W=performance.now()+800,ge=()=>{const{scrollWidth:U,scrollHeight:H}=R;if(U===A&&H===se?M++:M=0,A=U,se=H,M>=2||performance.now()>W){const j=R.scrollWidth,T=R.scrollHeight,V=R.clientWidth,le=R.clientHeight;R.scrollLeft=Math.max(0,(j-V)/2),R.scrollTop=Math.max(0,(T-le)/2);return}requestAnimationFrame(ge)};requestAnimationFrame(ge)}return l({centerScroll:ke,fitToWindow:J,zoomByStep:Z}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",ne),window.removeEventListener("mouseup",ee),window.removeEventListener("mousedown",$),m?.disconnect(),cancelAnimationFrame(E)}),(R,M)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"canvas-area",onDragover:M[23]||(M[23]=e.withModifiers(()=>{},["prevent"])),onDrop:C,onMousedown:ue,onMousemove:q,onMouseleave:w,onWheel:I,onScroll:h,onContextmenu:e.withModifiers(oe,["prevent"])},[e.createElementVNode("div",Za,[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:M[0]||(M[0]=(A,se)=>R.$emit("guide-move",A,se)),onGuideRemove:M[1]||(M[1]=A=>R.$emit("guide-remove",A)),onDragStart:M[2]||(M[2]=A=>R.$emit("drag-start")),onDragStop:M[3]||(M[3]=A=>R.$emit("drag-stop")),onDblclickElement:M[4]||(M[4]=A=>R.$emit("dblclick-element",A)),onDblclickCell:M[5]||(M[5]=(A,se,W)=>R.$emit("dblclick-cell",A,se,W)),onContextmenu:M[6]||(M[6]=(A,se)=>oe(se,A)),onZoneHeightChange:M[7]||(M[7]=(A,se)=>R.$emit("zone-height-change",A,se)),onZoneHeightCommit:M[8]||(M[8]=A=>R.$emit("zone-height-commit",A)),onCloneElement:M[9]||(M[9]=(A,se)=>R.$emit("clone-element",A,se))},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(v.value)},[M[24]||(M[24]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Mt,{orientation:"horizontal","viewport-px":s.viewW,"origin-px":s.originX,"paper-length-m-m":n.value,scale:s.paperScale,"cursor-px":u.x,onAddGuide:M[10]||(M[10]=(A,se)=>d("add-guide",A,se)),onGuideDragging:M[11]||(M[11]=A=>B("vertical",A))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Mt,{orientation:"vertical","viewport-px":s.viewH,"origin-px":s.originY,"paper-length-m-m":r.value,scale:s.paperScale,"cursor-px":u.y,onAddGuide:M[12]||(M[12]=(A,se)=>d("add-guide",A,se)),onGuideDragging:M[13]||(M[13]=A=>B("horizontal",A))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),N.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${N.value.type}`]),style:e.normalizeStyle(Q.value)},null,6)):e.createCommentVNode("",!0),b.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:b.x+"px",top:b.y+"px",width:b.w+"px",height:b.h+"px"})},null,4)):e.createCommentVNode("",!0),F.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:fe,class:"context-menu",onMousedown:M[22]||(M[22]=e.withModifiers(()=>{},["stop"])),style:e.normalizeStyle({left:F.x+F.flipX+"px",top:F.y+F.flipY+"px"})},[F.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:M[14]||(M[14]=A=>ce("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:M[15]||(M[15]=A=>ce("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:M[16]||(M[16]=A=>ce("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:M[17]||(M[17]=A=>ce("delete"))},"删除"),M[25]||(M[25]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:M[18]||(M[18]=A=>ce("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:M[19]||(M[19]=A=>ce("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:M[20]||(M[20]=A=>ce("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:M[21]||(M[21]=A=>ce("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:L},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:K},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:_},"取消选择")],64))],36)):e.createCommentVNode("",!0)],544))}}),Qa=Ee(Xa,[["__scopeId","data-v-427d3548"]]),Ja={class:"property-search"},_a=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(t,{emit:l}){const o=e.ref(""),i=l;function d(){i("search",o.value)}return(c,a)=>(e.openBlock(),e.createElementBlock("div",Ja,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":a[0]||(a[0]=n=>o.value=n),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:d},null,544),[[e.vModelText,o.value]])]))}}),ei=Ee(_a,[["__scopeId","data-v-10ab6c84"]]),ti=["data-tip","aria-label"],re=e.defineComponent({__name:"ResetButton",props:{target:{},base:{},propKey:{},tipValue:{},tipUnit:{},tipOverride:{},write:{type:Function},force:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=t,i=l,d=e.computed(()=>o.base?.[o.propKey]),c=e.computed(()=>o.target?.[o.propKey]!==d.value),a=e.computed(()=>o.force===!0||c.value),n=e.computed(()=>{const s=o.tipOverride??(o.tipValue===void 0?"恢复默认值":`恢复默认值(${o.tipValue}${o.tipUnit?" "+o.tipUnit:""})`);return o.force?`${s}(应用到全部选中格)`:s});function r(){a.value&&(o.write?o.write(d.value):o.target[o.propKey]=d.value,i("change"))}return(s,u)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["pd-reset-btn",{"is-dirty":c.value&&!t.force}]),"data-tip":n.value,"aria-label":n.value,onClick:r},[e.createVNode(e.unref(ve.RotateCcw),{size:13})],10,ti))}}),oi={class:"group-icon"},li={class:"group-title"},ni={class:"expand-icon"},ai={class:"group-content"},ii=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(t){const l=t,o=e.ref(l.defaultExpanded??!0),d={Document:"≡",Brush:"◧",Setting:"⚙"}[l.icon]||"•";function c(){o.value=!o.value,a()}function a(){const r=`property-group-${l.groupKey}`;try{localStorage.setItem(r,String(o.value))}catch{}}function n(){const r=`property-group-${l.groupKey}`;try{const s=localStorage.getItem(r);s!==null&&(o.value=s==="true")}catch{}}return e.onMounted(()=>{n()}),(r,s)=>(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",oi,e.toDisplayString(e.unref(d)),1),e.createElementVNode("span",li,e.toDisplayString(t.title),1),e.createElementVNode("span",ni,e.toDisplayString(o.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",ai,[e.renderSlot(r.$slots,"default",{},void 0,!0)],512),[[e.vShow,o.value]])],2))}}),Le=Ee(ii,[["__scopeId","data-v-2ba57031"]]),ri={class:"position-grid"},si={class:"pd-field"},di={class:"pd-field"},ci={class:"pd-field"},ui={class:"pd-field"},mi=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(i){return l.searching?l.matchedKeys?.has(i)??!0:!0}return(i,d)=>(e.openBlock(),e.createBlock(Le,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:d[4]||(d[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ri,[e.withDirectives(e.createElementVNode("div",si,[d[5]||(d[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(de,{modelValue:t.element.options.left,"onUpdate:modelValue":d[0]||(d[0]=c=>t.element.options.left=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-left")]]),e.withDirectives(e.createElementVNode("div",di,[d[6]||(d[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(de,{modelValue:t.element.options.top,"onUpdate:modelValue":d[1]||(d[1]=c=>t.element.options.top=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-top")]]),e.withDirectives(e.createElementVNode("div",ci,[d[7]||(d[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(de,{modelValue:t.element.options.width,"onUpdate:modelValue":d[2]||(d[2]=c=>t.element.options.width=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-width")]]),e.withDirectives(e.createElementVNode("div",ui,[d[8]||(d[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(de,{modelValue:t.element.options.height,"onUpdate:modelValue":d[3]||(d[3]=c=>t.element.options.height=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-height")]])])],32)]),_:1}))}}),pi=Ee(mi,[["__scopeId","data-v-bc364679"]]),vi=["data-field"],fi={class:"pd-label"},gi={class:"pd-label-t"},bi=["data-tip"],hi=["value"],yi=["value"],Ei={key:0,value:"custom"},ki={class:"pd-field","data-field":"ap-img-fit-scale"},Vi={class:"pd-label"},Ni={class:"pd-label-t"},wi=["data-tip"],Ci=["data-field"],xi={class:"pd-label"},Si={key:0,class:"pd-crop-note"},Bi={key:1,class:"pd-crop-note"},$i={class:"pd-crop-preview"},Di=["src","alt"],Ti=e.defineComponent({__name:"CropAnchorField",props:{fieldKey:{},label:{},options:{},base:{},tipOverride:{},writeAnchor:{},writeScale:{},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=z=>p.propertyDefault(z),i=t,d=l,c=e.computed(()=>p.propertyTip(i.fieldKey)),a=p.propertyTip("ap-img-fit-scale"),n=e.computed(()=>p.resolveCropPreview(i.src)),r=e.ref(void 0);function s(z){const I=z.target;I.naturalWidth>0&&I.naturalHeight>0&&(r.value={width:I.naturalWidth,height:I.naturalHeight})}function u(){r.value=void 0}e.watch(()=>n.value.src,u);const k=e.computed(()=>p.parseCropAnchor(i.modelValue)),v=e.computed(()=>k.value.kind==="custom"),y=e.computed(()=>k.value.kind==="axes"?k.value.x:50),h=e.computed(()=>k.value.kind==="axes"?k.value.y:50),m=e.computed(()=>({widthMm:i.widthMm,heightMm:i.heightMm,naturalWidth:r.value?.width,naturalHeight:r.value?.height,fit:i.fit,scalePct:i.scale})),E=e.computed(()=>p.resolveCropTravel(m.value)),f=e.computed(()=>p.cropPresetOptions(E.value,y.value,h.value)),N=e.computed(()=>v.value?"custom":`${y.value},${h.value}`),B=e.computed(()=>p.cropAxisFields(E.value,y.value,h.value)),Q=e.computed(()=>p.cropAxisNote(E.value,v.value));function Y(z,I){d("update:modelValue",p.buildCropAnchor(z,I))}function C(z){const I=z.target.value;if(I==="custom")return;const[Z,J]=I.split(",").map(Number);Y(Z,J)}function b(z,I){I!==void 0&&(z==="horizontal"?Y(I,h.value):Y(y.value,I))}function P(z){d("update:scale",z!==void 0&&z>p.CROP_SCALE_MIN?z:void 0)}const ae=e.computed(()=>p.cropWindow(m.value,y.value,h.value));function q(z){return`${Math.round(z*1e4)/1e4}%`}const w=e.computed(()=>ae.value&&{left:q(ae.value.leftPct),top:q(ae.value.topPct),width:q(ae.value.widthPct),height:q(ae.value.heightPct)});return(z,I)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:"pd-field","data-field":t.fieldKey},[e.createElementVNode("span",fi,[e.createElementVNode("span",gi,[e.createTextVNode(e.toDisplayString(t.label),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":c.value,"aria-label":"字段说明"},null,8,bi)]),t.options&&t.base?(e.openBlock(),e.createBlock(re,{key:0,target:t.options,base:t.base,"prop-key":"objectPosition","tip-value":o(t.fieldKey)?.value,"tip-unit":o(t.fieldKey)?.unit,"tip-override":t.tipOverride,write:t.writeAnchor},null,8,["target","base","tip-value","tip-unit","tip-override","write"])):e.createCommentVNode("",!0)]),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:N.value,onChange:C},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,Z=>(e.openBlock(),e.createElementBlock("option",{key:Z.value,value:Z.value},e.toDisplayString(Z.label),9,yi))),128)),v.value?(e.openBlock(),e.createElementBlock("option",Ei,"自定义(保留原值)")):e.createCommentVNode("",!0)],40,hi)],8,vi),e.createElementVNode("div",ki,[e.createElementVNode("span",Vi,[e.createElementVNode("span",Ni,[e.createTextVNode(e.toDisplayString(e.unref(p.CROP_SCALE_LABEL)),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(a),"aria-label":"字段说明"},null,8,wi)]),t.options&&t.base?(e.openBlock(),e.createBlock(re,{key:0,target:t.options,base:t.base,"prop-key":"fitScale","tip-value":o("ap-img-fit-scale")?.value,"tip-unit":o("ap-img-fit-scale")?.unit,"tip-override":t.tipOverride,write:t.writeScale},null,8,["target","base","tip-value","tip-unit","tip-override","write"])):e.createCommentVNode("",!0)]),e.createVNode(de,{"model-value":t.scale,min:e.unref(p.CROP_SCALE_MIN),max:e.unref(p.CROP_SCALE_MAX),step:5,placeholder:"默认 100","onUpdate:modelValue":P},null,8,["model-value","min","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,Z=>(e.openBlock(),e.createElementBlock("div",{class:"pd-field",key:Z.name,"data-field":t.fieldKey},[e.createElementVNode("span",xi,e.toDisplayString(Z.label),1),e.createVNode(de,{"model-value":Z.value,min:0,max:100,step:1,"onUpdate:modelValue":J=>b(Z.name,J)},null,8,["model-value","onUpdate:modelValue"])],8,Ci))),128)),Q.value?(e.openBlock(),e.createElementBlock("p",Si,e.toDisplayString(Q.value),1)):e.createCommentVNode("",!0),n.value.isSample?(e.openBlock(),e.createElementBlock("p",Bi,e.toDisplayString(e.unref(p.CROP_SAMPLE_NOTE)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",$i,[(e.openBlock(),e.createElementBlock("img",{class:"pd-crop-thumb",key:n.value.src,src:n.value.src,alt:n.value.isSample?"示例图":"原图",onLoad:s,onError:u},null,40,Di)),ae.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-crop-win",style:e.normalizeStyle(w.value)},null,4)):e.createCommentVNode("",!0)])],64))}}),Ht=Ee(Ti,[["__scopeId","data-v-931ddaf3"]]),Mi={class:"pd-field"},zi={class:"pd-label"},Ai={class:"pd-field"},Li={class:"pd-label"},Ri={class:"pd-field"},Pi={class:"pd-label"},Fi={class:"pd-field"},Ui={class:"pd-label"},Ii={class:"pd-radio-group",role:"radiogroup"},Oi={class:"pd-radio"},Hi={class:"pd-radio"},Wi={class:"pd-radio"},Gi={class:"pd-radio"},Ki={class:"pd-field"},qi={class:"pd-label"},ji={class:"pd-radio-group",role:"radiogroup"},Yi={class:"pd-radio"},Zi={class:"pd-radio"},Xi={class:"pd-radio"},Qi={class:"color-row"},Ji={class:"pd-field"},_i={class:"pd-label"},er={class:"pd-field"},tr={class:"pd-label"},or={class:"pd-field"},lr={class:"pd-label"},nr={class:"pd-field"},ar={class:"pd-label"},ir={class:"pd-field"},rr={class:"pd-label"},sr=["value"],dr={key:0,class:"pd-field"},cr={class:"pd-label"},ur={key:1,class:"pd-field"},mr={class:"pd-label"},pr={class:"pd-label-t"},vr=["data-tip"],fr={class:"pd-field"},gr={class:"pd-label"},br=["checked"],hr={class:"pd-field"},yr={class:"pd-label"},Er={class:"pd-label-t"},kr=["data-tip"],Vr=["value"],Nr={key:0},wr={key:2,class:"pd-empty"},Cr=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(y){return l.searching?l.matchedKeys?.has(y)??!0:!0}const i=e.computed(()=>l.element.printElementType.type==="table"),d=e.computed(()=>l.element.printElementType.type==="longText"),c=e.computed(()=>p.createDefaultOptions(l.element.printElementType.type)),a=y=>p.propertyDefault(y),n=e.computed(()=>l.element.printElementType.type==="image"),r=p.propertyTip("ap-long-text-indent"),s=p.propertyTip("ap-img-fit"),u=e.computed(()=>{const y=String(l.element.options.src??"");return y.includes("{")?String(p.evaluateTemplate(y,p.DEFAULT_DEMO_DATA)):y}),k=e.computed(()=>p.resolveElementTextFit(l.element.printElementType.type||"text",l.element.options));function v(y){l.element.options.textFit=y.target.value}return(y,h)=>(e.openBlock(),e.createBlock(Le,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:h[20]||(h[20]=e.withModifiers(()=>{},["prevent"]))},[t.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Mi,[e.createElementVNode("span",zi,[h[21]||(h[21]=e.createElementVNode("span",{class:"pd-label-t"},"字体",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"fontFamily","tip-value":a("ap-font-family")?.value,"tip-unit":a("ap-font-family")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(ct,{modelValue:t.element.options.fontFamily,"onUpdate:modelValue":h[0]||(h[0]=m=>t.element.options.fontFamily=m)},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",Ai,[e.createElementVNode("span",Li,[h[22]||(h[22]=e.createElementVNode("span",{class:"pd-label-t"},"字体大小",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"fontSize","tip-value":a("ap-font-size")?.value,"tip-unit":a("ap-font-size")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{modelValue:t.element.options.fontSize,"onUpdate:modelValue":h[1]||(h[1]=m=>t.element.options.fontSize=m),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",Ri,[e.createElementVNode("span",Pi,[h[23]||(h[23]=e.createElementVNode("span",{class:"pd-label-t"},"字体粗细",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"fontWeight","tip-value":a("ap-font-weight")?.value,"tip-unit":a("ap-font-weight")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":h[2]||(h[2]=m=>t.element.options.fontWeight=m),style:{width:"100%"}},[...h[24]||(h[24]=[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,[e.createElementVNode("span",Ui,[h[25]||(h[25]=e.createElementVNode("span",{class:"pd-label-t"},"对齐",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"textAlign","tip-value":a("ap-align")?.value,"tip-unit":a("ap-align")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("div",Ii,[e.createElementVNode("label",Oi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[3]||(h[3]=m=>t.element.options.textAlign=m),value:"left"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),h[26]||(h[26]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Hi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[4]||(h[4]=m=>t.element.options.textAlign=m),value:"center"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),h[27]||(h[27]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Wi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[5]||(h[5]=m=>t.element.options.textAlign=m),value:"right"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),h[28]||(h[28]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Gi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[6]||(h[6]=m=>t.element.options.textAlign=m),value:"justify"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),h[29]||(h[29]=e.createElementVNode("span",null,"两端",-1))])])],512),[[e.vShow,o("ap-align")]]),e.withDirectives(e.createElementVNode("div",Ki,[e.createElementVNode("span",qi,[h[30]||(h[30]=e.createElementVNode("span",{class:"pd-label-t"},"垂直对齐",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"verticalAlign","tip-value":a("ap-vertical-align")?.value,"tip-unit":a("ap-vertical-align")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("div",ji,[e.createElementVNode("label",Yi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[7]||(h[7]=m=>t.element.options.verticalAlign=m),value:"top"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),h[31]||(h[31]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",Zi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[8]||(h[8]=m=>t.element.options.verticalAlign=m),value:"middle"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),h[32]||(h[32]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Xi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":h[9]||(h[9]=m=>t.element.options.verticalAlign=m),value:"bottom"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),h[33]||(h[33]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,o("ap-vertical-align")]]),e.createElementVNode("div",Qi,[e.withDirectives(e.createElementVNode("div",Ji,[e.createElementVNode("span",_i,[h[34]||(h[34]=e.createElementVNode("span",{class:"pd-label-t"},"颜色",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"color","tip-value":a("ap-color")?.value,"tip-unit":a("ap-color")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(Me,{modelValue:t.element.options.color,"onUpdate:modelValue":h[10]||(h[10]=m=>t.element.options.color=m)},null,8,["modelValue"])],512),[[e.vShow,o("ap-color")]]),e.withDirectives(e.createElementVNode("div",er,[e.createElementVNode("span",tr,[h[35]||(h[35]=e.createElementVNode("span",{class:"pd-label-t"},"背景色",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"backgroundColor","tip-value":a("ap-bg-color")?.value,"tip-unit":a("ap-bg-color")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(Me,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":h[11]||(h[11]=m=>t.element.options.backgroundColor=m)},null,8,["modelValue"])],512),[[e.vShow,o("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",or,[e.createElementVNode("span",lr,[h[36]||(h[36]=e.createElementVNode("span",{class:"pd-label-t"},"行高",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"lineHeight","tip-value":a("ap-line-height")?.value,"tip-unit":a("ap-line-height")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{modelValue:t.element.options.lineHeight,"onUpdate:modelValue":h[12]||(h[12]=m=>t.element.options.lineHeight=m),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,o("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",nr,[e.createElementVNode("span",ar,[h[37]||(h[37]=e.createElementVNode("span",{class:"pd-label-t"},"字间距",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"letterSpacing","tip-value":a("ap-letter-spacing")?.value,"tip-unit":a("ap-letter-spacing")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{modelValue:t.element.options.letterSpacing,"onUpdate:modelValue":h[13]||(h[13]=m=>t.element.options.letterSpacing=m),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,o("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",ir,[e.createElementVNode("span",rr,[h[38]||(h[38]=e.createElementVNode("span",{class:"pd-label-t"},"文字溢出",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"textFit","tip-value":a("ap-text-fit")?.value,"tip-unit":a("ap-text-fit")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("select",{class:"pd-select",value:k.value,style:{width:"100%"},onChange:v},[...h[39]||(h[39]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,sr)],512),[[e.vShow,o("ap-text-fit")]]),k.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",dr,[e.createElementVNode("span",cr,[h[40]||(h[40]=e.createElementVNode("span",{class:"pd-label-t"},"最小字号 (pt)",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"shrinkMinFontSize","tip-value":a("ap-shrink-min")?.value,"tip-unit":a("ap-shrink-min")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":h[14]||(h[14]=m=>t.element.options.shrinkMinFontSize=m??void 0)},null,8,["model-value"])],512)),[[e.vShow,o("ap-shrink-min")]]):e.createCommentVNode("",!0),d.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",ur,[e.createElementVNode("span",mr,[e.createElementVNode("span",pr,[h[41]||(h[41]=e.createTextVNode("首行缩进 (字符)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(r),"aria-label":"字段说明"},null,8,vr)]),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"longTextIndent","tip-value":a("ap-long-text-indent")?.value,"tip-unit":a("ap-long-text-indent")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{modelValue:t.element.options.longTextIndent,"onUpdate:modelValue":h[15]||(h[15]=m=>t.element.options.longTextIndent=m),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",fr,[e.createElementVNode("span",gr,[h[42]||(h[42]=e.createElementVNode("span",{class:"pd-label-t"},"自动换行",-1)),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"wordWrap","tip-value":a("ap-word-wrap")?.value,"tip-unit":a("ap-word-wrap")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("input",{checked:t.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:h[16]||(h[16]=m=>t.element.options.wordWrap=m.target.checked?void 0:!1)},null,40,br)],512),[[e.vShow,o("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",hr,[e.createElementVNode("span",yr,[e.createElementVNode("span",Er,[h[43]||(h[43]=e.createTextVNode("缩放模式",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(s),"aria-label":"字段说明"},null,8,kr)]),e.createVNode(re,{target:t.element.options,base:c.value,"prop-key":"fit","tip-value":a("ap-img-fit")?.value,"tip-unit":a("ap-img-fit")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":h[17]||(h[17]=m=>t.element.options.fit=m),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.IMAGE_FIT_OPTIONS),m=>(e.openBlock(),e.createElementBlock("option",{key:m.value,value:m.value},e.toDisplayString(m.label),9,Vr))),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",Nr,[e.createVNode(Ht,{"field-key":"ap-img-object-position",label:"裁剪锚点",options:t.element.options,base:c.value,src:u.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":h[18]||(h[18]=m=>t.element.options.objectPosition=m),"onUpdate:scale":h[19]||(h[19]=m=>t.element.options.fitScale=m)},null,8,["options","base","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&&!n.value&&!i.value?(e.openBlock(),e.createElementBlock("p",wr,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),xr=Ee(Cr,[["__scopeId","data-v-26d8725d"]]),Sr={class:"pd-field"},Br=["value"],$r={class:"pd-field"},Dr={class:"pd-label"},Tr=["value"],Mr={class:"pd-hint"},zr={class:"pd-field"},Ar={class:"pd-label"},Lr={class:"pd-field"},Rr={class:"pd-label"},Pr={class:"pd-label-t"},Fr=["data-tip"],Ur={class:"pd-field"},Ir={class:"pd-label"},Or={class:"pd-label-t"},Hr=["data-tip"],Wr={class:"pd-field"},Gr={class:"pd-label"},Kr=["checked"],qr={class:"pd-field"},jr={class:"pd-label"},Yr={class:"pd-field"},Zr={class:"pd-label"},Xr=["value"],Qr={class:"pd-field"},Jr={class:"pd-label"},_r={class:"pd-label-t"},es=["data-tip"],ts={key:2,class:"pd-hint"},os={key:3,class:"pd-field"},ls={class:"pd-label"},ns=["value"],as=["value"],is={class:"pd-field"},rs={class:"pd-label"},ss={class:"pd-field"},ds={class:"pd-label"},cs=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=p.propertyTip("cd-quiet-zone"),i=p.propertyTip("cd-bar-quiet-zone"),d=p.propertyTip("cd-bar-height"),c=t,a=e.computed(()=>p.createDefaultOptions(c.element.printElementType.type)),n=Y=>p.propertyDefault(Y),r=l,s=e.computed(()=>c.element.printElementType.type==="barcode"),u=e.computed(()=>c.element.printElementType.type==="qrcode"),k=e.computed(()=>(c.element.options.barcodeType||"CODE128").toUpperCase()),v=e.computed(()=>c.element.options.printerDpi?String(c.element.options.printerDpi):""),y=e.computed(()=>!!c.element.options.printerDpi),h=e.computed(()=>s.value&&y.value),m=e.computed(()=>{const Y=h.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定",C=p.barcodeBarWidthRecommendText(c.element.options.printerDpi,c.element.options.barWidth);return C?`${Y}。${C}`:Y});function E(Y){const C=Number(Y.target.value);c.element.options.printerDpi=C>0?C:void 0,Q()}function f(Y){const C=Y.target.value;c.element.options.barcodeType=C==="CODE128"?void 0:C,Q()}function N(Y){c.element.options.fit=Y.target.value||void 0,Q()}function B(Y){return c.searching?c.matchedKeys?.has(Y)??!0:!0}function Q(){r("change")}return(Y,C)=>(e.openBlock(),e.createBlock(Le,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:C[20]||(C[20]=e.withModifiers(()=>{},["prevent"]))},[s.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Sr,[C[22]||(C[22]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:k.value,onChange:f},[...C[21]||(C[21]=[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,Br)],512),[[e.vShow,B("cd-type")]]),e.withDirectives(e.createElementVNode("div",$r,[e.createElementVNode("span",Dr,[C[23]||(C[23]=e.createElementVNode("span",{class:"pd-label-t"},"打印机分辨率",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"printerDpi","tip-value":n("cd-dpi")?.value,"tip-unit":n("cd-dpi")?.unit,onChange:C[0]||(C[0]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("select",{class:"pd-select",value:v.value,onChange:E},[...C[24]||(C[24]=[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,Tr)],512),[[e.vShow,B("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",Mr,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,B("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",zr,[e.createElementVNode("span",Ar,[C[25]||(C[25]=e.createElementVNode("span",{class:"pd-label-t"},"条宽(倍率)",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"barWidth","tip-value":n("cd-bar-width")?.value,"tip-unit":n("cd-bar-width")?.unit,onChange:C[1]||(C[1]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.barWidth??2,min:2,max:8,step:.5,"onUpdate:modelValue":C[2]||(C[2]=b=>{t.element.options.barWidth=b,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(m.value),513),[[e.vShow,B("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",Lr,[e.createElementVNode("span",Rr,[e.createElementVNode("span",Pr,[C[26]||(C[26]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(i),"aria-label":"字段说明"},null,8,Fr)]),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"barQuietZone","tip-value":n("cd-bar-quiet-zone")?.value,"tip-unit":n("cd-bar-quiet-zone")?.unit,onChange:C[3]||(C[3]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.barQuietZone,min:0,max:20,placeholder:"默认 10","onUpdate:modelValue":C[4]||(C[4]=b=>{t.element.options.barQuietZone=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-bar-quiet-zone")]]),e.withDirectives(e.createElementVNode("div",Ur,[e.createElementVNode("span",Ir,[e.createElementVNode("span",Or,[C[27]||(C[27]=e.createTextVNode("条高 (mm)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(d),"aria-label":"字段说明"},null,8,Hr)]),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"barHeight","tip-value":n("cd-bar-height")?.value,"tip-unit":n("cd-bar-height")?.unit,onChange:C[5]||(C[5]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.barHeight,min:1,max:100,placeholder:"默认 30 模块","onUpdate:modelValue":C[6]||(C[6]=b=>{t.element.options.barHeight=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-bar-height")]]),e.withDirectives(e.createElementVNode("div",Wr,[e.createElementVNode("span",Gr,[C[28]||(C[28]=e.createElementVNode("span",{class:"pd-label-t"},"显示文本",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"hideTitle","tip-value":n("cd-show-text")?.value,"tip-unit":n("cd-show-text")?.unit,onChange:C[7]||(C[7]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("input",{checked:t.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:C[8]||(C[8]=b=>{t.element.options.hideTitle=b.target.checked?void 0:!0,Q()})},null,40,Kr)],512),[[e.vShow,B("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",qr,[e.createElementVNode("span",jr,[C[29]||(C[29]=e.createElementVNode("span",{class:"pd-label-t"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"fontSize","tip-value":n("cd-font-size")?.value,"tip-unit":n("cd-font-size")?.unit,onChange:C[9]||(C[9]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":C[10]||(C[10]=b=>{t.element.options.fontSize=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-font-size")]])],64)):u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Yr,[e.createElementVNode("span",Zr,[C[30]||(C[30]=e.createElementVNode("span",{class:"pd-label-t"},"纠错级别",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"qrCodeLevel","tip-value":n("cd-ec-level")?.value,"tip-unit":n("cd-ec-level")?.unit,onChange:C[11]||(C[11]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("select",{class:"pd-select",value:String(t.element.options.qrCodeLevel??"M"),onChange:C[12]||(C[12]=b=>{t.element.options.qrCodeLevel=b.target.value,Q()})},[...C[31]||(C[31]=[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,Xr)],512),[[e.vShow,B("cd-ec-level")]]),e.withDirectives(e.createElementVNode("div",Qr,[e.createElementVNode("span",Jr,[e.createElementVNode("span",_r,[C[32]||(C[32]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,es)]),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"qrQuietZone","tip-value":n("cd-quiet-zone")?.value,"tip-unit":n("cd-quiet-zone")?.unit,onChange:C[13]||(C[13]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":C[14]||(C[14]=b=>{t.element.options.qrQuietZone=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-quiet-zone")]])],64)):e.createCommentVNode("",!0),C[36]||(C[36]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),s.value?(e.openBlock(),e.createElementBlock("p",ts,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限。要放大条码:先加条宽倍率,再收窄静区(左右白边会换成条宽),必要时关掉显示文本以让出文本区高度")):e.createCommentVNode("",!0),s.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",os,[e.createElementVNode("span",ls,[C[33]||(C[33]=e.createElementVNode("span",{class:"pd-label-t"},"缩放模式",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"fit","tip-value":n("cd-fit")?.value,"tip-unit":n("cd-fit")?.unit,onChange:C[15]||(C[15]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createElementVNode("select",{class:"pd-select",value:t.element.options.fit||"contain",onChange:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.IMAGE_FIT_OPTIONS),b=>(e.openBlock(),e.createElementBlock("option",{key:b.value,value:b.value},e.toDisplayString(b.label),9,as))),128))],40,ns)],512)),[[e.vShow,B("cd-fit")]]),e.withDirectives(e.createElementVNode("div",is,[e.createElementVNode("span",rs,[C[34]||(C[34]=e.createElementVNode("span",{class:"pd-label-t"},"最大宽度 (mm)",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"maxWidth","tip-value":n("cd-max-width")?.value,"tip-unit":n("cd-max-width")?.unit,onChange:C[16]||(C[16]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":C[17]||(C[17]=b=>{t.element.options.maxWidth=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",ss,[e.createElementVNode("span",ds,[C[35]||(C[35]=e.createElementVNode("span",{class:"pd-label-t"},"最大高度 (mm)",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"maxHeight","tip-value":n("cd-max-height")?.value,"tip-unit":n("cd-max-height")?.unit,onChange:C[18]||(C[18]=b=>Q())},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":t.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":C[19]||(C[19]=b=>{t.element.options.maxHeight=b??void 0,Q()})},null,8,["model-value"])],512),[[e.vShow,B("cd-max-height")]])],32)]),_:1}))}}),us={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},ms={class:"pd-dialog-header"},ps={class:"expression-editor"},vs={class:"ee-nav"},fs={class:"ee-nav-tabs"},gs={class:"ee-content"},bs={class:"ee-content-search"},hs=["placeholder"],ys={class:"ee-content-list"},Es={class:"ee-field-group-icon"},ks=["onDblclick"],Vs={class:"ee-field-info"},Ns={class:"ee-item-label"},ws={class:"ee-item-key"},Cs={key:0,class:"pd-empty"},xs=["onDblclick"],Ss={class:"ee-field-info"},Bs={class:"ee-item-label"},$s={class:"ee-item-key"},Ds={class:"ee-func-group"},Ts=["onDblclick"],Ms={class:"ee-field-info"},zs={class:"ee-item-label"},As={class:"ee-item-key"},Ls={class:"ee-func-group"},Rs=["onDblclick"],Ps={class:"ee-field-info"},Fs={class:"ee-item-label"},Us={class:"ee-item-key"},Is={class:"ee-func-group"},Os=["onDblclick"],Hs={class:"ee-field-info"},Ws={class:"ee-item-label"},Gs={class:"ee-item-key"},Ks={class:"ee-editor"},qs={class:"ee-editor-section"},js={class:"ee-editor-section"},Ys={class:"pd-dialog-footer"},Zs=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(t,{emit:l}){const o=t,i=l,d=e.computed({get:()=>o.modelValue,set:q=>i("update:modelValue",q)}),c=e.ref("field"),a=e.computed(()=>{switch(c.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),n=e.ref(""),r=e.computed(()=>p.filterGroups(p.groupFields(o.fields??[]),n.value));e.watch(d,q=>{q&&(f.value=o.expression||"")});function s(q){const{insideParens:w}=v();P(w?q.fieldKey:`{${q.fieldKey}}`)}function u(q){const{insideParens:w}=v();P(w?q.template.replace(/^\{|\}$/g,""):q.template)}function k(q){const{insideBlock:w}=v(),z=w?q.template:`{${q.template}}`,I=z.indexOf("(")+1;P(z,I)}function v(){const w=N.value?.selectionStart??f.value.length,z=f.value.substring(0,w);let I=!1;const Z=z.lastIndexOf("{");Z!==-1&&!z.slice(Z+1).includes("}")&&(I=!0);let J=!1;const ue=z.lastIndexOf("(");return ue!==-1&&!z.slice(ue+1).includes(")")&&(J=!0),{insideBlock:I,insideParens:J}}const y=e.computed(()=>{if(!n.value.trim())return C;const q=n.value.trim().toLowerCase();return C.filter(w=>w.label.toLowerCase().includes(q)||w.name.toLowerCase().includes(q))}),h=e.computed(()=>{if(!n.value.trim())return B;const q=n.value.trim().toLowerCase();return B.filter(w=>w.label.toLowerCase().includes(q)||w.name.toLowerCase().includes(q))}),m=e.computed(()=>{if(!n.value.trim())return Q;const q=n.value.trim().toLowerCase();return Q.filter(w=>w.label.toLowerCase().includes(q)||w.name.toLowerCase().includes(q))}),E=e.computed(()=>{if(!n.value.trim())return Y;const q=n.value.trim().toLowerCase();return Y.filter(w=>w.label.toLowerCase().includes(q)||w.name.toLowerCase().includes(q))}),f=e.ref(o.expression||""),N=e.ref(null);e.watch(()=>o.expression,q=>{f.value=q||""});const B=[{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()"}],Q=[{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()"}],Y=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],C=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],b=e.computed(()=>{if(!f.value.trim())return"(输入表达式后预览)";try{const q={...p.DEFAULT_DEMO_DATA,...me.resolveSystemVariables()},w=p.evaluateTemplate(f.value,q);return w==null?"(无法计算)":String(w)}catch{return"(表达式错误)"}});function P(q,w=q.length){const z=N.value;if(!z){f.value+=q;return}const I=z.selectionStart,Z=z.selectionEnd,J=f.value.substring(0,I),ue=f.value.substring(Z);f.value=J+q+ue;const D=I+w;e.nextTick(()=>{z.focus(),z.selectionStart=z.selectionEnd=D})}function ae(){i("update:expression",f.value),d.value=!1}return(q,w)=>d.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:w[7]||(w[7]=e.withKeys(z=>d.value=!1,["esc"]))},[e.createElementVNode("section",us,[e.createElementVNode("header",ms,[w[8]||(w[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:w[0]||(w[0]=z=>d.value=!1)},"×")]),e.createElementVNode("div",ps,[e.createElementVNode("div",vs,[w[9]||(w[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",fs,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="field"}]),onClick:w[1]||(w[1]=z=>c.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="variable"}]),onClick:w[2]||(w[2]=z=>c.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="function"}]),onClick:w[3]||(w[3]=z=>c.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",gs,[e.createElementVNode("div",bs,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":w[4]||(w[4]=z=>n.value=z),placeholder:a.value},null,8,hs),[[e.vModelText,n.value]])]),e.createElementVNode("div",ys,[c.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,z=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:z.key||"_top"},[z.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":z.isList}])},[e.createElementVNode("span",Es,e.toDisplayString(z.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(z.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.fields,I=>(e.openBlock(),e.createElementBlock("div",{key:I.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:z.key?"22px":"10px"}),onDblclick:Z=>s(I)},[e.createElementVNode("div",Vs,[e.createElementVNode("span",Ns,e.toDisplayString(I.fieldLabel),1),e.createElementVNode("span",ws,e.toDisplayString(I.fieldKey),1)])],44,ks))),128))],64))),128)),r.value.length===0?(e.openBlock(),e.createElementBlock("p",Cs,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),c.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(y.value,z=>(e.openBlock(),e.createElementBlock("div",{key:z.name,class:"ee-list-item",onDblclick:I=>u(z)},[e.createElementVNode("div",Ss,[e.createElementVNode("span",Bs,e.toDisplayString(z.label),1),e.createElementVNode("span",$s,e.toDisplayString(z.template),1)])],40,xs))),128)):e.createCommentVNode("",!0),c.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Ds,[w[10]||(w[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,z=>(e.openBlock(),e.createElementBlock("div",{key:z.name,class:"ee-list-item",onDblclick:I=>k(z)},[e.createElementVNode("div",Ms,[e.createElementVNode("span",zs,e.toDisplayString(z.label),1),e.createElementVNode("span",As,e.toDisplayString(z.name)+"()",1)])],40,Ts))),128))]),e.createElementVNode("div",Ls,[w[11]||(w[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,z=>(e.openBlock(),e.createElementBlock("div",{key:z.name,class:"ee-list-item",onDblclick:I=>k(z)},[e.createElementVNode("div",Ps,[e.createElementVNode("span",Fs,e.toDisplayString(z.label),1),e.createElementVNode("span",Us,e.toDisplayString(z.name)+"()",1)])],40,Rs))),128))]),e.createElementVNode("div",Is,[w[12]||(w[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,z=>(e.openBlock(),e.createElementBlock("div",{key:z.name,class:"ee-list-item",onDblclick:I=>k(z)},[e.createElementVNode("div",Hs,[e.createElementVNode("span",Ws,e.toDisplayString(z.label),1),e.createElementVNode("span",Gs,e.toDisplayString(z.name)+"()",1)])],40,Os))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",Ks,[e.createElementVNode("div",qs,[w[13]||(w[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:N,"onUpdate:modelValue":w[5]||(w[5]=z=>f.value=z),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,f.value]])]),e.createElementVNode("div",js,[w[14]||(w[14]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":b.value==="(表达式错误)"}])},e.toDisplayString(b.value),3)]),w[15]||(w[15]=e.createStaticVNode('<div class="ee-help-section" data-v-a8863ba9><div class="ee-help-title" data-v-a8863ba9>帮助信息</div><div class="ee-help-grid" data-v-a8863ba9><div class="ee-help-card ee-help-field" data-v-a8863ba9><div class="ee-help-card-title" data-v-a8863ba9>输入方式</div><div class="ee-help-card-content" data-v-a8863ba9> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-a8863ba9> 静态数据直接输入即可,如:供应商名称<br data-v-a8863ba9> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-a8863ba9> 示例:{SUM(supplier.name)}<br data-v-a8863ba9> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-a8863ba9><div class="ee-help-card-title" data-v-a8863ba9>函数使用</div><div class="ee-help-card-content" data-v-a8863ba9> SUM(字段) - 求和<br data-v-a8863ba9> AVG(字段) - 平均值<br data-v-a8863ba9> COUNT(字段) - 计数<br data-v-a8863ba9> IF(条件, 真值, 假值) - 条件判断<br data-v-a8863ba9> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-a8863ba9> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-a8863ba9><div class="ee-help-card-title" data-v-a8863ba9>系统变量</div><div class="ee-help-card-content" data-v-a8863ba9> {pageIndex} - 当前页码<br data-v-a8863ba9> {totalPages} - 总页数<br data-v-a8863ba9> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-a8863ba9><div class="ee-help-card-title" data-v-a8863ba9>示例</div><div class="ee-help-card-content" data-v-a8863ba9> 静态文本:供应商名称<br data-v-a8863ba9> 动态字段:{supplier.name}<br data-v-a8863ba9> 函数调用:{SUM(amount)}<br data-v-a8863ba9> 条件判断:{IF(amount&gt;1000, &quot;大单&quot;, &quot;小单&quot;)}<br data-v-a8863ba9> 运算并修约:{ROUND(qty * price, 2)} </div></div></div></div>',1))])]),e.createElementVNode("footer",Ys,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:w[6]||(w[6]=z=>d.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:ae},"确定")])])],32)):e.createCommentVNode("",!0)}}),ut=Ee(Zs,[["__scopeId","data-v-a8863ba9"]]),Xs={class:"pd-field"},Qs={class:"pd-label"},Js=["value","placeholder"],_s=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=l,i=e.ref(!1);function d(){i.value=!0}return(c,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Xs,[e.createElementVNode("span",Qs,e.toDisplayString(t.descriptor.label),1),e.createElementVNode("input",{value:t.modelValue,class:"pd-input",placeholder:t.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:a[0]||(a[0]=n=>o("update:modelValue",n.target.value)),onDblclick:d},null,40,Js)]),e.createVNode(ut,{modelValue:i.value,"onUpdate:modelValue":a[1]||(a[1]=n=>i.value=n),fields:t.fields,expression:t.modelValue,"onUpdate:expression":a[2]||(a[2]=n=>o("update:modelValue",n))},null,8,["modelValue","fields","expression"])],64))}}),ed={class:"pd-field"},td=["value"],od=["value"],ld={class:"pd-field"},nd={class:"pd-label"},ad={class:"pd-field"},id={class:"pd-label"},rd={class:"pd-field"},sd={class:"pd-label"},dd={class:"pd-field"},cd={class:"pd-label"},ud={class:"pd-field"},md={style:{width:"60px"}},pd=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(t){const l=t,o=e.inject(nt,null),i=e.computed(()=>p.createDefaultOptions(l.element.printElementType.type)),d=r=>s=>{l.element.options[r]=s,o?.recordHistory()},c=e.computed(()=>l.fields.filter(r=>r.fieldType==="list").map(r=>({label:r.fieldLabel,value:r.fieldKey})));function a(r){l.element.options.dataSource=r||void 0,o?.recordHistory()}function n(r,s){if(s===void 0)return;const u=l.element.options.tableColWidths,k=o?.maxTableWidth.value??1/0,v=u.reduce((y,h,m)=>m===r?y:y+h,0);if(v+s>k){const y=Math.max(5,Math.round((k-v)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${k}mm,列${r+1} 已调整为 ${y}mm`),u[r]=y}else u[r]=s;p.syncTableElementSize(l.element.options),o?.recordHistory()}return(r,s)=>(e.openBlock(),e.createBlock(Le,{title:"表格设置",icon:"Grid","default-expanded":"","group-key":"table-settings"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:s[5]||(s[5]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ed,[s[6]||(s[6]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:t.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:s[0]||(s[0]=u=>a(u.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,u=>(e.openBlock(),e.createElementBlock("option",{key:u.value,value:u.value},e.toDisplayString(u.label),9,od))),128))],40,td)]),e.createElementVNode("div",ld,[e.createElementVNode("span",nd,[s[7]||(s[7]=e.createElementVNode("span",{class:"pd-label-t"},"默认字体",-1)),e.createVNode(re,{target:t.element.options,base:i.value,"prop-key":"tableDefaultFontFamily",write:d("tableDefaultFontFamily")},null,8,["target","base","write"])]),e.createVNode(ct,{modelValue:t.element.options.tableDefaultFontFamily,"onUpdate:modelValue":s[1]||(s[1]=u=>t.element.options.tableDefaultFontFamily=u)},null,8,["modelValue"])]),e.createElementVNode("div",ad,[e.createElementVNode("span",id,[s[8]||(s[8]=e.createElementVNode("span",{class:"pd-label-t"},"默认字号 (pt)",-1)),e.createVNode(re,{target:t.element.options,base:i.value,"prop-key":"tableDefaultFontSize",write:d("tableDefaultFontSize")},null,8,["target","base","write"])]),e.createVNode(de,{modelValue:t.element.options.tableDefaultFontSize,"onUpdate:modelValue":s[2]||(s[2]=u=>t.element.options.tableDefaultFontSize=u),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",rd,[e.createElementVNode("span",sd,[s[9]||(s[9]=e.createElementVNode("span",{class:"pd-label-t"},"默认文字颜色",-1)),e.createVNode(re,{target:t.element.options,base:i.value,"prop-key":"tableDefaultColor",write:d("tableDefaultColor")},null,8,["target","base","write"])]),e.createVNode(Me,{modelValue:t.element.options.tableDefaultColor,"onUpdate:modelValue":s[3]||(s[3]=u=>t.element.options.tableDefaultColor=u)},null,8,["modelValue"])]),e.createElementVNode("div",dd,[e.createElementVNode("span",cd,[s[10]||(s[10]=e.createElementVNode("span",{class:"pd-label-t"},"默认内边距 (mm)",-1)),e.createVNode(re,{target:t.element.options,base:i.value,"prop-key":"tableDefaultPadding",write:d("tableDefaultPadding")},null,8,["target","base","write"])]),e.createVNode(de,{modelValue:t.element.options.tableDefaultPadding,"onUpdate:modelValue":s[4]||(s[4]=u=>t.element.options.tableDefaultPadding=u),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",ud,[s[11]||(s[11]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.element.options.tableColWidths,(u,k)=>(e.openBlock(),e.createElementBlock("div",{key:k,class:"col-width-row"},[e.createElementVNode("span",md,"列"+e.toDisplayString(k+1),1),e.createVNode(de,{"model-value":u,min:5,max:200,"onUpdate:modelValue":v=>n(k,v)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),vd=Ee(pd,[["__scopeId","data-v-0bbd93c5"]]),fd={class:"pd-field"},gd={class:"pd-label"},bd={class:"pd-label-t"},hd=["data-tip"],yd={class:"pd-field"},Ed={class:"pd-label"},kd={class:"pd-label-t"},Vd=["data-tip"],Nd={class:"pd-field"},wd={class:"pd-label"},Cd={class:"pd-label-t"},xd=["data-tip"],Sd={class:"pd-field"},Bd=["checked"],$d={class:"pd-field"},Dd={class:"pd-label"},Td={class:"pd-label-t"},Md=["data-tip"],zd={key:0,class:"pd-hint"},Ad=e.defineComponent({__name:"FlowListGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=p.propertyTip("fl-columns"),o=p.propertyTip("fl-row-height"),i=p.propertyTip("fl-gap-x"),d=p.propertyTip("fl-max-span"),c=t;function a(N){return!c.searching||!c.matchedKeys?!0:c.matchedKeys.has(N)}const n=e.computed(()=>p.resolveFlowColumns(c.element.options.flowColumns)),r=e.computed(()=>p.resolveFlowRowHeight(c.element.options.flowRowHeight)),s=e.computed(()=>p.resolveFlowGapX(c.element.options.flowGapX)),u=e.computed(()=>c.element.options.flowAutoSpan===!0),k=e.computed(()=>p.resolveFlowMaxSpan(c.element.options.flowMaxSpan,n.value));function v(N){const B=p.resolveFlowColumns(N);c.element.options.flowColumns=B,c.element.options.flowMaxSpan=p.resolveFlowMaxSpan(c.element.options.flowMaxSpan,B)}function y(N){c.element.options.flowRowHeight=p.resolveFlowRowHeight(N)}function h(N){c.element.options.flowGapX=p.resolveFlowGapX(N)}function m(N){c.element.options.flowAutoSpan=N,N&&(c.element.options.flowMaxSpan=p.resolveFlowMaxSpan(c.element.options.flowMaxSpan,n.value))}function E(N){c.element.options.flowMaxSpan=p.resolveFlowMaxSpan(N,n.value)}const f=e.computed(()=>{const N=c.element.options,B=p.suggestFlowColumns(N.width??0,s.value,N.fontSize??12);return n.value<=B?"":`按当前字号与框宽,${n.value} 列偏挤(可放约 ${B} 列)。数值保持不变,出纸按 ${n.value} 列排。`});return(N,B)=>(e.openBlock(),e.createBlock(Le,{title:"流式列表",icon:"Grid3x3","group-key":"flowList"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:B[1]||(B[1]=e.withModifiers(()=>{},["prevent"]))},[e.withDirectives(e.createElementVNode("div",fd,[e.createElementVNode("span",gd,[e.createElementVNode("span",bd,[B[2]||(B[2]=e.createTextVNode("每行列数",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(l),"aria-label":"字段说明"},null,8,hd)])]),e.createVNode(de,{"model-value":n.value,min:1,max:12,"onUpdate:modelValue":v},null,8,["model-value"])],512),[[e.vShow,a("fl-columns")]]),e.withDirectives(e.createElementVNode("div",yd,[e.createElementVNode("span",Ed,[e.createElementVNode("span",kd,[B[3]||(B[3]=e.createTextVNode("行高 (mm)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,Vd)])]),e.createVNode(de,{"model-value":r.value,min:3,max:100,step:.5,"onUpdate:modelValue":y},null,8,["model-value"])],512),[[e.vShow,a("fl-row-height")]]),e.withDirectives(e.createElementVNode("div",Nd,[e.createElementVNode("span",wd,[e.createElementVNode("span",Cd,[B[4]||(B[4]=e.createTextVNode("单元横向间距 (mm)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(i),"aria-label":"字段说明"},null,8,xd)])]),e.createVNode(de,{"model-value":s.value,min:0,max:50,step:.5,"onUpdate:modelValue":h},null,8,["model-value"])],512),[[e.vShow,a("fl-gap-x")]]),e.withDirectives(e.createElementVNode("div",Sd,[B[5]||(B[5]=e.createElementVNode("span",{class:"pd-label"},"内容过长时跨列",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:u.value,onChange:B[0]||(B[0]=Q=>m(Q.target.checked))},null,40,Bd)],512),[[e.vShow,a("fl-auto-span")]]),e.withDirectives(e.createElementVNode("div",$d,[e.createElementVNode("span",Dd,[e.createElementVNode("span",Td,[B[6]||(B[6]=e.createTextVNode("最多跨几列",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(d),"aria-label":"字段说明"},null,8,Md)])]),e.createVNode(de,{"model-value":k.value,min:1,max:n.value,"onUpdate:modelValue":E},null,8,["model-value","max"])],512),[[e.vShow,u.value&&a("fl-max-span")]]),f.value?(e.openBlock(),e.createElementBlock("div",zd,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],32)]),_:1}))}}),Ld={class:"pd-field"},Rd=["value"],Pd={key:0,value:"",disabled:""},Fd=["value"],Ud={class:"border-row"},Id={class:"pd-field"},Od={class:"pd-label"},Hd={class:"pd-field"},Wd={class:"pd-label"},Gd={class:"pd-button-group border-presets"},Kd={class:"pd-checkbox-group"},qd=["checked","onChange"],jd={class:"pd-hint"},Yd={class:"pd-field"},Zd={class:"pd-label"},Xd=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=t,i=l,d=[{value:"top",label:"上"},{value:"right",label:"右"},{value:"bottom",label:"下"},{value:"left",label:"左"}],c=e.computed(()=>p.acceptsElementBorder(o.element.printElementType?.type)),a=e.computed(()=>p.createDefaultOptions(o.element.printElementType.type)),n=h=>p.propertyDefault(h),r=e.computed(()=>p.resolveElementBorderDisplay(o.element.options));function s(h,m){p.setElementBorderField(o.element.options,h,m),i("change")}function u(h){p.applyElementBorderPreset(o.element.options,h,p.effectiveElementBorderSpec(o.element.options)),i("change")}function k(h){return p.elementBorderEdgeVisible(o.element.options,h)}function v(h){p.setElementBorderEdgeVisible(o.element.options,h,!k(h)),i("change")}function y(h){return o.searching?o.matchedKeys?.has(h)??!0:!0}return(h,m)=>(e.openBlock(),e.createBlock(Le,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:m[7]||(m[7]=e.withModifiers(()=>{},["prevent"]))},[e.withDirectives(e.createElementVNode("div",Ld,[m[8]||(m[8]=e.createElementVNode("span",{class:"pd-label"},"线型",-1)),e.createElementVNode("select",{class:"pd-select",value:r.value.style==="mixed"?"":r.value.style,onChange:m[0]||(m[0]=E=>s("borderStyle",E.target.value))},[r.value.style==="mixed"?(e.openBlock(),e.createElementBlock("option",Pd,"混合")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.BORDER_LINE_STYLES),E=>(e.openBlock(),e.createElementBlock("option",{key:E.value,value:E.value},e.toDisplayString(E.label),9,Fd))),128))],40,Rd)],512),[[e.vShow,y("bb-border-style")]]),e.createElementVNode("div",Ud,[e.withDirectives(e.createElementVNode("div",Id,[e.createElementVNode("span",Od,[m[9]||(m[9]=e.createElementVNode("span",{class:"pd-label-t"},"边框宽度",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"borderWidth","tip-value":n("bb-border-width")?.value,"tip-unit":n("bb-border-width")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(de,{"model-value":r.value.width==="mixed"?void 0:r.value.width,placeholder:r.value.width==="mixed"?"混合":void 0,min:0,max:20,step:.25,"onUpdate:modelValue":m[1]||(m[1]=E=>s("borderWidth",E))},null,8,["model-value","placeholder"])],512),[[e.vShow,y("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",Hd,[e.createElementVNode("span",Wd,[m[10]||(m[10]=e.createElementVNode("span",{class:"pd-label-t"},"边框颜色",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"borderColor","tip-value":n("bb-border-color")?.value,"tip-unit":n("bb-border-color")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(Me,{"model-value":r.value.color==="mixed"?void 0:r.value.color,"onUpdate:modelValue":m[2]||(m[2]=E=>s("borderColor",E))},null,8,["model-value"])],512),[[e.vShow,y("bb-border-color")]])]),c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",Gd,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:m[3]||(m[3]=E=>u("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:m[4]||(m[4]=E=>u("outer"))},"外侧"),m[11]||(m[11]=e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:""},"内部",-1)),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:m[5]||(m[5]=E=>u("none"))},"无")]),e.createElementVNode("div",Kd,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,E=>e.createElementVNode("label",{class:"pd-checkbox",key:E.value},[e.createElementVNode("input",{type:"checkbox",checked:k(E.value),onChange:f=>v(E.value)},null,40,qd),e.createElementVNode("span",null,e.toDisplayString(E.label),1)])),64))]),e.createElementVNode("p",jd,e.toDisplayString(e.unref(p.ELEMENT_BORDER_APPLY_HINT)),1)],64)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",Yd,[e.createElementVNode("span",Zd,[m[12]||(m[12]=e.createElementVNode("span",{class:"pd-label-t"},"背景色",-1)),e.createVNode(re,{target:t.element.options,base:a.value,"prop-key":"backgroundColor","tip-value":n("bb-bg-color")?.value,"tip-unit":n("bb-bg-color")?.unit},null,8,["target","base","tip-value","tip-unit"])]),e.createVNode(Me,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":m[6]||(m[6]=E=>t.element.options.backgroundColor=E)},null,8,["modelValue"])],512),[[e.vShow,y("bb-bg-color")]])],32)]),_:1}))}}),Qd=Ee(Xd,[["__scopeId","data-v-e5f4bb9b"]]),Jd={class:"advanced-row"},_d={class:"pd-field"},ec={class:"pd-label"},tc={class:"pd-field"},oc={class:"pd-label"},lc={class:"pd-field"},nc={class:"pd-label"},ac={class:"pd-field"},ic=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(t){const l=t,o=e.computed(()=>p.createDefaultOptions(l.element.printElementType.type));function i(d){return l.searching?l.matchedKeys?.has(d)??!0:!0}return(d,c)=>(e.openBlock(),e.createBlock(Le,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:c[4]||(c[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Jd,[e.withDirectives(e.createElementVNode("div",_d,[e.createElementVNode("span",ec,[c[5]||(c[5]=e.createElementVNode("span",{class:"pd-label-t"},"锁定",-1)),e.createVNode(re,{target:t.element.options,base:o.value,"prop-key":"locked"},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":c[0]||(c[0]=a=>t.element.options.locked=a)},null,512),[[e.vModelCheckbox,t.element.options.locked]])],512),[[e.vShow,i("ad-locked")]]),e.withDirectives(e.createElementVNode("div",tc,[e.createElementVNode("span",oc,[c[6]||(c[6]=e.createElementVNode("span",{class:"pd-label-t"},"每页重复",-1)),e.createVNode(re,{target:t.element.options,base:o.value,"prop-key":"fixed"},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":c[1]||(c[1]=a=>t.element.options.fixed=a)},null,512),[[e.vModelCheckbox,t.element.options.fixed]])],512),[[e.vShow,i("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",lc,[e.createElementVNode("span",nc,[c[7]||(c[7]=e.createElementVNode("span",{class:"pd-label-t"},"层级",-1)),e.createVNode(re,{target:t.element.options,base:o.value,"prop-key":"zIndex"},null,8,["target","base"])]),e.createVNode(de,{modelValue:t.element.options.zIndex,"onUpdate:modelValue":c[2]||(c[2]=a=>t.element.options.zIndex=a),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,i("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",ac,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:c[3]||(c[3]=a=>d.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,i("ad-delete")]])],32)]),_:1}))}}),rc=Ee(ic,[["__scopeId","data-v-e4555e33"]]),sc={key:0,class:"pd-field"},dc=["checked"],cc={class:"pd-field"},uc=["checked"],mc={class:"pd-field"},pc=["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"),i=e.computed({get:()=>l.element.options.tablePagination?.enabled??!0,set:()=>{}});function d(u){l.element.options.tablePagination={enabled:u}}const c=e.computed({get:()=>l.element.options.pagination?.pageable??!0,set:()=>{}}),a=e.computed({get:()=>l.element.options.pagination?.keepWithNext??!1,set:()=>{}});function n(u){l.element.options.pagination={pageable:u,keepWithNext:a.value}}function r(u){l.element.options.pagination={pageable:c.value,keepWithNext:u}}function s(u){return l.searching?l.matchedKeys?.has(u)??!0:!0}return(u,k)=>(e.openBlock(),e.createBlock(Le,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:k[3]||(k[3]=e.withModifiers(()=>{},["prevent"]))},[o.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",sc,[k[4]||(k[4]=e.createElementVNode("span",{class:"pd-label"},"启用分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:i.value,onChange:k[0]||(k[0]=v=>d(v.target.checked))},null,40,dc)],512)),[[e.vShow,s("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",cc,[k[5]||(k[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:c.value,onChange:k[1]||(k[1]=v=>n(v.target.checked))},null,40,uc)],512),[[e.vShow,s("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",mc,[k[6]||(k[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:a.value,onChange:k[2]||(k[2]=v=>r(v.target.checked))},null,40,pc)],512),[[e.vShow,s("pg-keep-with-next")]])],64))],32)]),_:1}))}}),vc={class:"image-content-upload"},fc=["disabled"],gc=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(t,{emit:l}){const o=t,i=l,d=e.ref(!1),c=e.inject(yt,e.computed(()=>{})),a=e.computed(()=>o.disabled||d.value||!c.value);async function n(r){const s=r.target,u=s.files?.[0];if(u){if(!u.type.startsWith("image/")){alert("仅支持上传图片文件"),s.value="";return}if(!c.value){alert("图片上传能力未配置"),s.value="";return}d.value=!0;try{const k=await c.value(u);k?i("success",k):alert("图片上传失败")}catch(k){alert(k instanceof Error?k.message:"图片上传失败")}finally{d.value=!1,s.value=""}}}return(r,s)=>(e.openBlock(),e.createElementBlock("div",vc,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:a.value}])},[s[0]||(s[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(d.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:n},null,40,fc)],2),s[1]||(s[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),bc=Ee(gc,[["__scopeId","data-v-b730e8e6"]]),hc={class:"pd-field"},yc=["value"],Ec={class:"pd-field"},kc={key:0,class:"pd-field"},Vc=["checked"],Nc=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(t){const l=t,o=e.inject(nt),i=e.computed(()=>l.element.options.tableRows[l.selection.r1]);function d(n){const r=p.setRowType(l.element.options.tableRows,l.selection.r1,n);if(r){alert(r);return}o.recordHistory()}function c(n){n!==void 0&&(i.value.height=n,p.syncTableElementSize(l.element.options),o.recordHistory())}function a(n){p.setHeaderRepeat(l.element.options.tableRows,n),o.recordHistory()}return(n,r)=>(e.openBlock(),e.createBlock(Le,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:r[2]||(r[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",hc,[r[4]||(r[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:i.value.type,class:"pd-select",style:{width:"100%"},onChange:r[0]||(r[0]=s=>d(s.target.value))},[...r[3]||(r[3]=[e.createElementVNode("option",{value:"header"},"标题行",-1),e.createElementVNode("option",{value:"data"},"数据行",-1),e.createElementVNode("option",{value:"subtotal"},"小计行(每页小计)",-1),e.createElementVNode("option",{value:"summary"},"汇总行",-1)])],40,yc)]),e.createElementVNode("div",Ec,[r[5]||(r[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(de,{"model-value":i.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":c},null,8,["model-value"])]),i.value.type==="header"?(e.openBlock(),e.createElementBlock("div",kc,[r[6]||(r[6]=e.createElementVNode("span",{class:"pd-label",title:"多级表头作为一个结构整体重复,勾选后表头区所有行都会在每页顶部重复"},"表头每页重复",-1)),e.createElementVNode("input",{checked:i.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:r[1]||(r[1]=s=>a(!!s.target.checked))},null,40,Vc)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),wc={key:0,class:"pd-hint"},Cc={class:"pd-field"},xc={class:"pd-radio-group",role:"radiogroup"},Sc={class:"pd-radio"},Bc=["checked"],$c={class:"pd-radio"},Dc=["checked"],Tc={class:"pd-radio"},Mc=["checked"],zc={class:"pd-radio"},Ac=["checked"],Lc={key:1,class:"pd-field"},Rc=["value"],Pc={key:2,class:"pd-field"},Fc={class:"pd-label"},Uc=["checked"],Ic={key:3,class:"pd-field"},Oc={class:"pd-label"},Hc={key:4,class:"pd-hint"},Wc={key:5,class:"pd-field"},Gc={class:"pd-label"},Kc={class:"pd-label-t"},qc=["data-tip"],jc={key:6,class:"pd-field"},Yc={class:"pd-label"},Zc={class:"pd-label-t"},Xc=["data-tip"],Qc={key:7,class:"pd-field"},Jc={class:"pd-label"},_c={key:8,class:"pd-field"},eu={class:"pd-label"},tu=["value"],ou={key:9,class:"pd-hint"},lu={key:10,class:"pd-field"},nu={class:"pd-label"},au=["value"],iu={key:11,class:"pd-field"},ru={class:"pd-label"},su={class:"pd-label-t"},du=["data-tip"],cu={key:12,class:"pd-hint"},uu={key:13,class:"pd-field"},mu={class:"pd-label"},pu=["value"],vu=["value"],fu={key:14,class:"pd-cell-anchor"},gu={key:15,class:"pd-field"},bu={class:"pd-label"},hu={key:16,class:"pd-field"},yu={class:"pd-label"},Eu={class:"pd-field"},ku=["value","placeholder"],Vu={class:"pd-field"},Nu={class:"pd-label"},wu={class:"pd-radio-group",role:"radiogroup"},Cu={class:"pd-radio"},xu=["checked"],Su={class:"pd-radio"},Bu=["checked"],$u={class:"pd-radio"},Du=["checked"],Tu={class:"pd-radio"},Mu=["checked"],zu={class:"pd-field"},Au={class:"pd-label"},Lu={class:"pd-radio-group",role:"radiogroup"},Ru={class:"pd-radio"},Pu=["checked"],Fu={class:"pd-radio"},Uu=["checked"],Iu={class:"pd-radio"},Ou=["checked"],Hu={class:"cell-style-grid"},Wu={class:"pd-field cell-font-field"},Gu={class:"pd-label"},Ku={class:"pd-field"},qu={class:"pd-label"},ju={class:"pd-field"},Yu={class:"pd-label"},Zu=["checked"],Xu={class:"pd-field"},Qu={class:"pd-label"},Ju={class:"pd-field"},_u={class:"pd-label"},em={class:"border-style-row"},tm=["value"],om=["value"],lm={style:{width:"112px","flex-shrink":"0"}},nm={class:"pd-button-group border-presets"},am={class:"pd-checkbox-group"},im=["checked",".indeterminate","onChange"],rm={class:"pd-hint"},sm={class:"pd-field"},dm={class:"pd-label"},cm={class:"pd-field"},um={class:"pd-label"},mm=["checked"],pm={key:17,class:"pd-field"},vm={class:"pd-label"},fm=["value"],gm={key:18,class:"pd-field"},bm={class:"pd-label"},hm={class:"merge-btns"},ym=["disabled","title"],Em=["disabled"],De="__multi__",we="恢复默认值(跟随表格默认)",ft="__mixed__",km=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(t,{expose:l}){const o=p.propertyTip("cd-quiet-zone"),i=p.propertyTip("cd-bar-quiet-zone"),d=p.propertyTip("cd-bar-height"),c=t,a=e.inject(nt),n=e.computed(()=>c.element.options.tableRows),r=e.computed(()=>p.findMainCell(n.value,c.selection.r1,c.selection.c1)),s=e.computed(()=>n.value[r.value.r].cells[r.value.c]),u=e.computed(()=>p.resolveCellGroupMode(n.value,c.selection)),k=e.computed(()=>u.value.count),v=e.computed(()=>u.value.mode==="multi"),y=e.ref({}),h=e.ref({});function m(X){return v.value?y.value[X]:s.value[X]}const E=e.computed(()=>v.value?y.value.cellType:s.value.cellType),f=e.computed(()=>v.value?"cellType"in y.value&&(y.value.cellType??"text")==="text":(s.value.cellType??"text")==="text"),N=e.computed(()=>v.value?"cellType"in y.value?y.value.cellType??"text":p.resolveSharedCellType(n.value,c.selection):s.value.cellType??"text"),B=e.computed(()=>N.value==="barcode"),Q=e.computed(()=>N.value==="qrcode"),Y=e.computed(()=>N.value==="image"),C=e.computed(()=>N.value==="text"),b=e.computed(()=>B.value&&!!m("printerDpi")),P=e.computed(()=>{const X=b.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定",g=p.barcodeBarWidthRecommendText(m("printerDpi"),m("barWidth"));return g?`${X}。${g}`:X}),ae=e.computed(()=>p.resolveCellTextFit(s.value)),q=e.computed(()=>v.value?y.value.textFit:ae.value),w=X=>v.value&&X in y.value,z=e.computed(()=>v.value?y.value.barcodeType??De:s.value.barcodeType||"CODE128"),I=e.computed(()=>{if(!v.value)return s.value.printerDpi?String(s.value.printerDpi):"";if(!w("printerDpi"))return De;const X=y.value.printerDpi;return X?String(X):""}),Z=e.computed(()=>v.value?y.value.qrCodeLevel??De:s.value.qrCodeLevel||"M"),J=e.computed(()=>v.value?y.value.fit??De:s.value.fit||"contain"),ue=e.computed(()=>v.value?y.value.barWidth:s.value.barWidth??2),D=e.computed(()=>v.value?y.value.barFontSize:s.value.barFontSize??10),ne=e.computed(()=>v.value?y.value.showBarcodeText===!0:s.value.showBarcodeText!==!1),ee=e.computed(()=>v.value?y.value.wordWrap===!0:s.value.wordWrap??!0),F=e.computed(()=>{const X=s.value,g=c.element.options.tableColWidths??[],x=c.element.options.tableDefaultPadding??1;return{width:p.cellFitWidthMm(g,r.value.c,X,x),height:p.cellFitCapMm(n.value,r.value.r,X,x)}}),fe=e.computed(()=>{const X=String(s.value.formatter??"");return X.includes("{")?String(p.evaluateTemplate(X,p.DEFAULT_DEMO_DATA)):X}),he=e.ref(!1),oe=e.ref("");function O(X){const g=X.target.value;g!==De&&W("textFit",g)}function $(X){X!==De&&W("barcodeType",X||void 0)}function S(X){X!==De&&W("qrCodeLevel",X||void 0)}function L(X){X!==De&&W("fit",X)}function K(X){W("align",X)}function _(X){W("valign",X)}function ce(X){if(X===De)return;const g=Number(X);W("printerDpi",g>0?g:void 0)}function ke(X){const g=X==="text"?void 0:X,x={cellType:g};X!=="barcode"&&Object.assign(x,{barcodeType:void 0,showBarcodeText:void 0,printerDpi:void 0,barQuietZone:void 0,barHeight:void 0}),X!=="qrcode"&&Object.assign(x,{qrCodeLevel:void 0,qrQuietZone:void 0}),se(Ce=>{Ce.cellType=g,X!=="barcode"&&(Ce.barcodeType=void 0,Ce.showBarcodeText=void 0,Ce.printerDpi=void 0,Ce.barQuietZone=void 0,Ce.barHeight=void 0),X!=="qrcode"&&(Ce.qrCodeLevel=void 0,Ce.qrQuietZone=void 0)},x)}function R(){oe.value=String(m("formatter")??""),he.value=!0}function M(X){W("formatter",X||void 0)}const A={};function se(X,g){for(const x of p.collectWritableCells(n.value,c.selection))X(x);v.value&&g&&(y.value={...y.value,...g}),a.recordHistory()}function W(X,g){se(x=>{x[X]=g},{[X]:g})}const ge=e.ref({}),U=e.computed(()=>v.value?{width:void 0,style:void 0,color:void 0}:p.resolveCellBorderDisplay(n.value,c.selection)),H=e.computed(()=>!v.value&&p.collectWritableCells(n.value,c.selection).some(X=>!!X.borders&&!!(X.borders.top||X.borders.right||X.borders.bottom||X.borders.left))),j=e.computed(()=>{const X=U.value,g=!v.value&&!H.value;return{width:g?0:typeof X.width=="number"?X.width:p.DEFAULT_BORDER.width,style:g?"none":typeof X.style=="string"&&X.style!=="mixed"?X.style:p.DEFAULT_BORDER.style,color:typeof X.color=="string"&&X.color!=="mixed"?X.color:p.DEFAULT_BORDER.color,...ge.value}}),T=e.computed(()=>({style:!v.value&&U.value.style==="mixed",width:!v.value&&U.value.width==="mixed",color:!v.value&&U.value.color==="mixed"})),V=e.computed(()=>({style:T.value.style&&ge.value.style===void 0,width:T.value.width&&ge.value.width===void 0,color:T.value.color&&ge.value.color===void 0})),le=e.computed(()=>V.value.style||V.value.width||V.value.color),be=e.computed(()=>V.value.style?ft:j.value.style),Ne=e.computed(()=>V.value.width?void 0:j.value.width),Se=e.computed(()=>V.value.color?void 0:j.value.color);function Be(X){if(X===ft)return;const g=X;Re("style",g),g!=="none"&&Ne.value===0?Re("width",p.DEFAULT_BORDER.width):g==="none"&&!H.value&&Re("width",0)}const He=e.computed(()=>{const X=c.selection;return`${c.element.id}:${X.r1}:${X.c1}:${X.r2}:${X.c2}`});e.watch(He,()=>{ge.value={},y.value={},h.value={}});function Re(X,g){ge.value={...ge.value,[X]:g}}const We=[{value:"top",label:"上"},{value:"right",label:"右"},{value:"bottom",label:"下"},{value:"left",label:"左"}],Ke=e.computed(()=>{if(v.value){const X={};for(const g of We)X[g.value]=h.value[g.value]?"on":"off";return X}return p.resolveBorderEdgeStates(p.collectWritableCells(n.value,c.selection).map(X=>X.borders))});function qe(){return j.value}function Fe(X){p.applyBorderPreset(n.value,c.selection,j.value.style==="none"?"none":X,qe()),a.recordHistory()}function _e(X,g){const Ce=g.target.checked&&j.value.style!=="none";v.value&&(h.value={...h.value,[X]:Ce}),se(et=>{p.setCellBorderEdge(et,X,Ce?qe():null)})}const je=e.computed(()=>p.canMergeReason(n.value,c.selection)),Ye=e.computed(()=>{const X=c.selection;for(let g=X.r1;g<=X.r2;g++)for(let x=X.c1;x<=X.c2;x++){const Ce=n.value[g].cells[x];if(!Ce.merged&&((Ce.rowspan??1)>1||(Ce.colspan??1)>1))return!0}return!1});function Ue(){p.mergeCells(n.value,c.selection),a.recordHistory()}function Ze(){p.splitCells(n.value,c.selection),a.recordHistory()}return l({openFormatterEditor:R}),(X,g)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(Le,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:g[41]||(g[41]=e.withModifiers(()=>{},["prevent"]))},[v.value?(e.openBlock(),e.createElementBlock("p",wc,"已选 "+e.toDisplayString(k.value)+" 格 · 批量设置:不显示单格配置,改动会应用到全部选中格",1)):e.createCommentVNode("",!0),e.createElementVNode("div",Cc,[g[47]||(g[47]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",xc,[e.createElementVNode("label",Sc,[e.createElementVNode("input",{type:"radio",value:"text",checked:f.value,onChange:g[0]||(g[0]=x=>ke(x.target.value))},null,40,Bc),g[43]||(g[43]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",$c,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:E.value==="barcode",onChange:g[1]||(g[1]=x=>ke(x.target.value))},null,40,Dc),g[44]||(g[44]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",Tc,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:E.value==="qrcode",onChange:g[2]||(g[2]=x=>ke(x.target.value))},null,40,Mc),g[45]||(g[45]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",zc,[e.createElementVNode("input",{type:"radio",value:"image",checked:E.value==="image",onChange:g[3]||(g[3]=x=>ke(x.target.value))},null,40,Ac),g[46]||(g[46]=e.createElementVNode("span",null,"图片",-1))])])]),B.value?(e.openBlock(),e.createElementBlock("div",Lc,[g[54]||(g[54]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:z.value,class:"pd-select",onChange:g[4]||(g[4]=x=>$(x.target.value))},[v.value?(e.openBlock(),e.createElementBlock("option",{key:0,value:De,disabled:""},"多选")):e.createCommentVNode("",!0),g[48]||(g[48]=e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1)),g[49]||(g[49]=e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1)),g[50]||(g[50]=e.createElementVNode("option",{value:"EAN8"},"EAN8",-1)),g[51]||(g[51]=e.createElementVNode("option",{value:"UPC"},"UPC",-1)),g[52]||(g[52]=e.createElementVNode("option",{value:"CODE39"},"CODE39",-1)),g[53]||(g[53]=e.createElementVNode("option",{value:"ITF14"},"ITF14",-1))],40,Rc)])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",Pc,[e.createElementVNode("span",Fc,[g[55]||(g[55]=e.createElementVNode("span",{class:"pd-label-t"},"显示文本",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"showBarcodeText","tip-override":we,write:x=>W("showBarcodeText",x)},null,8,["force","target","write"])]),e.createElementVNode("input",{checked:ne.value,type:"checkbox",class:"pd-switch",onInput:g[5]||(g[5]=x=>W("showBarcodeText",!!x.target.checked))},null,40,Uc)])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",Ic,[e.createElementVNode("span",Oc,[g[56]||(g[56]=e.createElementVNode("span",{class:"pd-label-t"},"条宽(倍率)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"barWidth","tip-override":we,write:x=>W("barWidth",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":ue.value,min:2,max:8,step:.5,placeholder:v.value?"多选":void 0,"onUpdate:modelValue":g[6]||(g[6]=x=>W("barWidth",x))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("p",Hc,e.toDisplayString(P.value),1)):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",Wc,[e.createElementVNode("span",Gc,[e.createElementVNode("span",Kc,[g[57]||(g[57]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(i),"aria-label":"字段说明"},null,8,qc)]),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"barQuietZone","tip-override":we,write:x=>W("barQuietZone",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("barQuietZone"),min:0,max:20,placeholder:v.value?"多选":"默认 10","onUpdate:modelValue":g[7]||(g[7]=x=>W("barQuietZone",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",jc,[e.createElementVNode("span",Yc,[e.createElementVNode("span",Zc,[g[58]||(g[58]=e.createTextVNode("条高 (mm)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(d),"aria-label":"字段说明"},null,8,Xc)]),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"barHeight","tip-override":we,write:x=>W("barHeight",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("barHeight"),min:1,max:100,placeholder:v.value?"多选":"默认 30 模块","onUpdate:modelValue":g[8]||(g[8]=x=>W("barHeight",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",Qc,[e.createElementVNode("span",Jc,[g[59]||(g[59]=e.createElementVNode("span",{class:"pd-label-t"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"barFontSize","tip-override":we,write:x=>W("barFontSize",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":D.value,min:5,max:24,placeholder:v.value?"多选":"默认 10","onUpdate:modelValue":g[9]||(g[9]=x=>W("barFontSize",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",_c,[e.createElementVNode("span",eu,[g[60]||(g[60]=e.createElementVNode("span",{class:"pd-label-t"},"打印机分辨率",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"printerDpi","tip-override":we,write:x=>W("printerDpi",x)},null,8,["force","target","write"])]),e.createElementVNode("select",{value:I.value,class:"pd-select",onChange:g[10]||(g[10]=x=>ce(x.target.value))},[v.value?(e.openBlock(),e.createElementBlock("option",{key:0,value:De,disabled:""},"多选")):e.createCommentVNode("",!0),g[61]||(g[61]=e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1)),g[62]||(g[62]=e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1)),g[63]||(g[63]=e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1)),g[64]||(g[64]=e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1))],40,tu)])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("p",ou,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",lu,[e.createElementVNode("span",nu,[g[65]||(g[65]=e.createElementVNode("span",{class:"pd-label-t"},"纠错级别",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"qrCodeLevel","tip-override":we,write:x=>W("qrCodeLevel",x)},null,8,["force","target","write"])]),e.createElementVNode("select",{value:Z.value,class:"pd-select",onChange:g[11]||(g[11]=x=>S(x.target.value))},[v.value?(e.openBlock(),e.createElementBlock("option",{key:0,value:De,disabled:""},"多选")):e.createCommentVNode("",!0),g[66]||(g[66]=e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1)),g[67]||(g[67]=e.createElementVNode("option",{value:"M"},"M(推荐)",-1)),g[68]||(g[68]=e.createElementVNode("option",{value:"Q"},"Q",-1)),g[69]||(g[69]=e.createElementVNode("option",{value:"H"},"H(最高)",-1))],40,au)])):e.createCommentVNode("",!0),Q.value?(e.openBlock(),e.createElementBlock("div",iu,[e.createElementVNode("span",ru,[e.createElementVNode("span",su,[g[70]||(g[70]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,du)]),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"qrQuietZone","tip-override":we,write:x=>W("qrQuietZone",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("qrQuietZone"),min:0,max:8,placeholder:v.value?"多选":"默认 0","onUpdate:modelValue":g[12]||(g[12]=x=>W("qrQuietZone",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("p",cu,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限。要放大条码:先加条宽倍率,再收窄静区(左右白边会换成条宽),必要时关掉显示文本以让出文本区高度")):e.createCommentVNode("",!0),Q.value||Y.value?(e.openBlock(),e.createElementBlock("div",uu,[e.createElementVNode("span",mu,[g[71]||(g[71]=e.createElementVNode("span",{class:"pd-label-t"},"缩放模式",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"fit","tip-override":we,write:x=>W("fit",x)},null,8,["force","target","write"])]),e.createElementVNode("select",{value:J.value,class:"pd-select",onChange:g[13]||(g[13]=x=>L(x.target.value))},[v.value?(e.openBlock(),e.createElementBlock("option",{key:0,value:De,disabled:""},"多选")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.IMAGE_FIT_OPTIONS),x=>(e.openBlock(),e.createElementBlock("option",{key:x.value,value:x.value},e.toDisplayString(x.label),9,vu))),128))],40,pu)])):e.createCommentVNode("",!0),Y.value&&!v.value&&s.value.fit==="cover"?(e.openBlock(),e.createElementBlock("div",fu,[e.createVNode(Ht,{"field-key":"ap-img-object-position",label:"裁剪锚点",options:s.value,base:A,"tip-override":we,"write-anchor":x=>W("objectPosition",x),"write-scale":x=>W("fitScale",x),src:fe.value,fit:s.value.fit,"width-mm":F.value.width,"height-mm":F.value.height,scale:s.value.fitScale,"model-value":s.value.objectPosition,"onUpdate:modelValue":g[14]||(g[14]=x=>W("objectPosition",x)),"onUpdate:scale":g[15]||(g[15]=x=>W("fitScale",x))},null,8,["options","write-anchor","write-scale","src","fit","width-mm","height-mm","scale","model-value"])])):e.createCommentVNode("",!0),B.value||Q.value||Y.value?(e.openBlock(),e.createElementBlock("div",gu,[e.createElementVNode("span",bu,[g[72]||(g[72]=e.createElementVNode("span",{class:"pd-label-t"},"最大宽度 (mm)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"maxWidth","tip-override":we,write:x=>W("maxWidth",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("maxWidth"),min:1,max:200,placeholder:v.value?"多选":"默认","onUpdate:modelValue":g[16]||(g[16]=x=>W("maxWidth",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),B.value||Q.value||Y.value?(e.openBlock(),e.createElementBlock("div",hu,[e.createElementVNode("span",yu,[g[73]||(g[73]=e.createElementVNode("span",{class:"pd-label-t"},"最大高度 (mm)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"maxHeight","tip-override":we,write:x=>W("maxHeight",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("maxHeight"),min:1,max:200,placeholder:v.value?"多选":"默认","onUpdate:modelValue":g[17]||(g[17]=x=>W("maxHeight",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Eu,[g[74]||(g[74]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:m("formatter")||"",class:"pd-input",placeholder:v.value?"多选(输入后覆盖全部选中格)":"输入内容,支持 {字段} 表达式",onInput:g[18]||(g[18]=x=>W("formatter",x.target.value||void 0)),onDblclick:R},null,40,ku)]),e.createElementVNode("div",Vu,[e.createElementVNode("span",Nu,[g[75]||(g[75]=e.createElementVNode("span",{class:"pd-label-t"},"水平对齐",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"align","tip-override":we,write:x=>W("align",x)},null,8,["force","target","write"])]),e.createElementVNode("div",wu,[e.createElementVNode("label",Cu,[e.createElementVNode("input",{type:"radio",value:"left",checked:m("align")==="left",onChange:g[19]||(g[19]=x=>K(x.target.value))},null,40,xu),g[76]||(g[76]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Su,[e.createElementVNode("input",{type:"radio",value:"center",checked:m("align")==="center",onChange:g[20]||(g[20]=x=>K(x.target.value))},null,40,Bu),g[77]||(g[77]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",$u,[e.createElementVNode("input",{type:"radio",value:"right",checked:m("align")==="right",onChange:g[21]||(g[21]=x=>K(x.target.value))},null,40,Du),g[78]||(g[78]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Tu,[e.createElementVNode("input",{type:"radio",value:"justify",checked:m("align")==="justify",onChange:g[22]||(g[22]=x=>K(x.target.value))},null,40,Mu),g[79]||(g[79]=e.createElementVNode("span",null,"两端",-1))])])]),e.createElementVNode("div",zu,[e.createElementVNode("span",Au,[g[80]||(g[80]=e.createElementVNode("span",{class:"pd-label-t"},"垂直对齐",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"valign","tip-override":we,write:x=>W("valign",x)},null,8,["force","target","write"])]),e.createElementVNode("div",Lu,[e.createElementVNode("label",Ru,[e.createElementVNode("input",{type:"radio",value:"top",checked:m("valign")==="top",onChange:g[23]||(g[23]=x=>_(x.target.value))},null,40,Pu),g[81]||(g[81]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",Fu,[e.createElementVNode("input",{type:"radio",value:"middle",checked:m("valign")==="middle",onChange:g[24]||(g[24]=x=>_(x.target.value))},null,40,Uu),g[82]||(g[82]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Iu,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:m("valign")==="bottom",onChange:g[25]||(g[25]=x=>_(x.target.value))},null,40,Ou),g[83]||(g[83]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",Hu,[e.createElementVNode("div",Wu,[e.createElementVNode("span",Gu,[g[84]||(g[84]=e.createElementVNode("span",{class:"pd-label-t"},"字体",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"fontFamily","tip-override":we,write:x=>W("fontFamily",x)},null,8,["force","target","write"])]),e.createVNode(ct,{"model-value":m("fontFamily"),placeholder:v.value?"多选":"继承默认","onUpdate:modelValue":g[26]||(g[26]=x=>W("fontFamily",x))},null,8,["model-value","placeholder"])]),e.createElementVNode("div",Ku,[e.createElementVNode("span",qu,[g[85]||(g[85]=e.createElementVNode("span",{class:"pd-label-t"},"字号 (pt)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"fontSize","tip-override":we,write:x=>W("fontSize",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("fontSize"),min:5,max:72,placeholder:v.value?"多选":"默认","onUpdate:modelValue":g[27]||(g[27]=x=>W("fontSize",x??void 0))},null,8,["model-value","placeholder"])]),e.createElementVNode("div",ju,[e.createElementVNode("span",Yu,[g[86]||(g[86]=e.createElementVNode("span",{class:"pd-label-t"},"加粗",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"fontWeight","tip-override":we,write:x=>W("fontWeight",x)},null,8,["force","target","write"])]),e.createElementVNode("input",{checked:m("fontWeight")==="bold",type:"checkbox",class:"pd-switch",onInput:g[28]||(g[28]=x=>W("fontWeight",x.target.checked?"bold":void 0))},null,40,Zu)]),e.createElementVNode("div",Xu,[e.createElementVNode("span",Qu,[g[87]||(g[87]=e.createElementVNode("span",{class:"pd-label-t"},"文字颜色",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"color","tip-override":we,write:x=>W("color",x)},null,8,["force","target","write"])]),e.createVNode(Me,{"model-value":m("color"),"onUpdate:modelValue":g[29]||(g[29]=x=>W("color",x))},null,8,["model-value"])]),e.createElementVNode("div",Ju,[e.createElementVNode("span",_u,[g[88]||(g[88]=e.createElementVNode("span",{class:"pd-label-t"},"背景色",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"backgroundColor","tip-override":we,write:x=>W("backgroundColor",x)},null,8,["force","target","write"])]),e.createVNode(Me,{"model-value":m("backgroundColor"),"onUpdate:modelValue":g[30]||(g[30]=x=>W("backgroundColor",x))},null,8,["model-value"])])]),g[96]||(g[96]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",em,[e.createElementVNode("select",{class:"pd-select",value:be.value,style:{width:"90px"},onChange:g[31]||(g[31]=x=>Be(x.target.value))},[V.value.style?(e.openBlock(),e.createElementBlock("option",{key:0,value:ft,disabled:""},"混合")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p.BORDER_LINE_STYLES),x=>(e.openBlock(),e.createElementBlock("option",{key:x.value,value:x.value},e.toDisplayString(x.label),9,om))),128))],40,tm),e.createElementVNode("div",lm,[e.createVNode(de,{"model-value":Ne.value,min:.25,max:5,step:.25,placeholder:v.value?"多选":V.value.width?"混合":void 0,"onUpdate:modelValue":g[32]||(g[32]=x=>Re("width",x??e.unref(p.DEFAULT_BORDER).width))},null,8,["model-value","placeholder"])]),e.createVNode(Me,{"model-value":Se.value,clearable:!1,"empty-title":V.value.color?"混合":void 0,"onUpdate:modelValue":g[33]||(g[33]=x=>Re("color",x))},null,8,["model-value","empty-title"])]),e.createElementVNode("div",nm,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[34]||(g[34]=x=>Fe("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[35]||(g[35]=x=>Fe("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[36]||(g[36]=x=>Fe("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[37]||(g[37]=x=>Fe("none"))},"无")]),e.createElementVNode("div",am,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(We,x=>e.createElementVNode("label",{class:"pd-checkbox",key:x.value},[e.createElementVNode("input",{type:"checkbox",checked:Ke.value[x.value]==="on",".indeterminate":Ke.value[x.value]==="mixed",onChange:Ce=>_e(x.value,Ce)},null,40,im),e.createElementVNode("span",null,e.toDisplayString(x.label),1)])),64))]),e.createElementVNode("p",rm,e.toDisplayString(v.value?e.unref(p.CELL_BORDER_APPLY_HINT_MULTI):le.value?e.unref(p.CELL_BORDER_APPLY_HINT_MIXED):e.unref(p.CELL_BORDER_APPLY_HINT)),1),e.createElementVNode("div",sm,[e.createElementVNode("span",dm,[g[89]||(g[89]=e.createElementVNode("span",{class:"pd-label-t"},"内边距 (mm)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"padding","tip-override":we,write:x=>W("padding",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("padding"),min:0,max:10,step:.5,placeholder:v.value?"多选":"默认","onUpdate:modelValue":g[38]||(g[38]=x=>W("padding",x??void 0))},null,8,["model-value","placeholder"])]),e.createElementVNode("div",cm,[e.createElementVNode("span",um,[g[90]||(g[90]=e.createElementVNode("span",{class:"pd-label-t"},"自动换行",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"wordWrap","tip-override":we,write:x=>W("wordWrap",x)},null,8,["force","target","write"])]),e.createElementVNode("input",{checked:ee.value,type:"checkbox",class:"pd-switch",onInput:g[39]||(g[39]=x=>W("wordWrap",!!x.target.checked))},null,40,mm)]),C.value?(e.openBlock(),e.createElementBlock("div",pm,[e.createElementVNode("span",vm,[g[91]||(g[91]=e.createElementVNode("span",{class:"pd-label-t"},"文字溢出",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"textFit","tip-override":we,write:x=>W("textFit",x)},null,8,["force","target","write"])]),e.createElementVNode("select",{class:"pd-select",value:q.value??De,style:{width:"100%"},onChange:O},[v.value?(e.openBlock(),e.createElementBlock("option",{key:0,value:De,disabled:""},"多选")):e.createCommentVNode("",!0),g[92]||(g[92]=e.createElementVNode("option",{value:"clip"},"截断",-1)),g[93]||(g[93]=e.createElementVNode("option",{value:"shrink"},"自动缩小",-1)),g[94]||(g[94]=e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1))],40,fm)])):e.createCommentVNode("",!0),C.value&&q.value==="shrink"?(e.openBlock(),e.createElementBlock("div",gm,[e.createElementVNode("span",bm,[g[95]||(g[95]=e.createElementVNode("span",{class:"pd-label-t"},"最小字号 (pt)",-1)),e.createVNode(re,{force:v.value,target:s.value,base:A,"prop-key":"shrinkMinFontSize","tip-override":we,write:x=>W("shrinkMinFontSize",x)},null,8,["force","target","write"])]),e.createVNode(de,{"model-value":m("shrinkMinFontSize"),min:1,max:72,step:.5,placeholder:v.value?"多选":"默认 6","onUpdate:modelValue":g[40]||(g[40]=x=>W("shrinkMinFontSize",x??void 0))},null,8,["model-value","placeholder"])])):e.createCommentVNode("",!0),e.createElementVNode("div",hm,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!je.value,title:je.value||"",onClick:Ue}," 合并单元格 ",8,ym),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!Ye.value,onClick:Ze},"拆分单元格",8,Em)])],32)]),_:1}),e.createVNode(ut,{modelValue:he.value,"onUpdate:modelValue":g[42]||(g[42]=x=>he.value=x),fields:t.fields,expression:oe.value,"onUpdate:expression":M},null,8,["modelValue","fields","expression"])],64))}}),Vm=Ee(km,[["__scopeId","data-v-f2c36da8"]]),Nm={class:"watermark-config"},wm={class:"pd-field"},Cm={key:0,class:"pd-field"},xm={class:"pd-field"},Sm={class:"pd-label"},Bm={class:"pd-hint"},$m={class:"pd-field"},Dm={class:"pd-label"},Tm={class:"pd-field"},Mm={class:"pd-label"},zm={class:"pd-hint"},Am={class:"pd-field"},Lm=["value"],Rm={class:"pd-field"},Pm={class:"pd-label"},Fm=["min"],Um={class:"pd-field"},Im={class:"pd-label"},Om=["min"],Hm=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,i=l,d=me.WATERMARK_DENSITY_PRESETS,c=me.WATERMARK_DEFAULTS.minTileWidth,a=me.WATERMARK_DEFAULTS.minTileHeight;function n(C){const b=C.trim();return b?/[{}]/.test(b)||/^[A-Za-z_$][\w$]*\s*\(/.test(b)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(b):!1}function r(C){return C?C.mode==="binding"?C.binding??"":C.content??"":""}const s=e.ref(r(o.modelValue)),u=e.ref(o.modelValue?.testData||""),k=e.ref(!1),v=e.ref(o.modelValue?.mode==="binding"?"binding":"fixed"),y=e.reactive({rotate:o.modelValue?.rotate??me.WATERMARK_DEFAULTS.rotate,color:o.modelValue?.color||me.WATERMARK_DEFAULTS.color,opacity:o.modelValue?.opacity??me.WATERMARK_DEFAULTS.opacity,tileWidth:o.modelValue?.tileWidth??me.WATERMARK_DEFAULTS.tileWidth,tileHeight:o.modelValue?.tileHeight??me.WATERMARK_DEFAULTS.tileHeight}),h=e.computed(()=>v.value==="binding");e.watch(()=>o.modelValue,C=>{C&&(s.value=r(C),v.value=C.mode==="binding"?"binding":"fixed",u.value=C.testData||"",y.rotate=C.rotate??me.WATERMARK_DEFAULTS.rotate,y.color=C.color||me.WATERMARK_DEFAULTS.color,y.opacity=C.opacity??me.WATERMARK_DEFAULTS.opacity,y.tileWidth=C.tileWidth??me.WATERMARK_DEFAULTS.tileWidth,y.tileHeight=C.tileHeight??me.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const m=e.computed({get(){const{tileWidth:C,tileHeight:b}=y;for(const[P,ae]of Object.entries(d))if(C===ae.width&&b===ae.height)return P;return"custom"},set(C){const b=d[C];b&&(y.tileWidth=b.width,y.tileHeight=b.height)}});function E(){v.value=n(s.value)?"binding":"fixed",Y()}function f(){E()}function N(){k.value=!0}function B(C){s.value=C,E()}function Q(C){y.color=C,Y()}function Y(){const C={testData:u.value,rotate:y.rotate,color:y.color,opacity:y.opacity,tileWidth:y.tileWidth,tileHeight:y.tileHeight};i("update:modelValue",v.value==="binding"?{...C,mode:"binding",binding:s.value,content:""}:{...C,mode:"fixed",content:s.value,binding:""})}return(C,b)=>(e.openBlock(),e.createElementBlock("div",Nm,[b[23]||(b[23]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:b[13]||(b[13]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",wm,[b[14]||(b[14]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[0]||(b[0]=P=>s.value=P),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:f,onDblclick:N},null,544),[[e.vModelText,s.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:N},"编辑表达式")]),h.value?(e.openBlock(),e.createElementBlock("div",Cm,[b[15]||(b[15]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[1]||(b[1]=P=>u.value=P),placeholder:"表达式取不到值时预览显示",onInput:Y},null,544),[[e.vModelText,u.value]])])):e.createCommentVNode("",!0),e.createVNode(ut,{modelValue:k.value,"onUpdate:modelValue":b[2]||(b[2]=P=>k.value=P),fields:t.fields,expression:s.value,"onUpdate:expression":B},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",xm,[e.createElementVNode("span",Sm,[b[16]||(b[16]=e.createElementVNode("span",{class:"pd-label-t"},"旋转角度",-1)),e.createVNode(re,{target:y,base:e.unref(me.WATERMARK_DEFAULTS),"prop-key":"rotate",onChange:b[3]||(b[3]=P=>Y())},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[4]||(b[4]=P=>y.rotate=P),min:-90,max:90,step:5,onChange:Y},null,544),[[e.vModelText,y.rotate,void 0,{number:!0}]]),e.createElementVNode("span",Bm,e.toDisplayString(y.rotate)+"°",1)]),e.createElementVNode("div",$m,[e.createElementVNode("span",Dm,[b[17]||(b[17]=e.createElementVNode("span",{class:"pd-label-t"},"颜色",-1)),e.createVNode(re,{target:y,base:e.unref(me.WATERMARK_DEFAULTS),"prop-key":"color",onChange:b[5]||(b[5]=P=>Y())},null,8,["target","base"])]),e.createVNode(Me,{"model-value":y.color,"onUpdate:modelValue":Q},null,8,["model-value"])]),e.createElementVNode("div",Tm,[e.createElementVNode("span",Mm,[b[18]||(b[18]=e.createElementVNode("span",{class:"pd-label-t"},"透明度",-1)),e.createVNode(re,{target:y,base:e.unref(me.WATERMARK_DEFAULTS),"prop-key":"opacity",onChange:b[6]||(b[6]=P=>Y())},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[7]||(b[7]=P=>y.opacity=P),min:.05,max:.5,step:.05,onChange:Y},null,544),[[e.vModelText,y.opacity,void 0,{number:!0}]]),e.createElementVNode("span",zm,e.toDisplayString(y.opacity.toFixed(2)),1)]),e.createElementVNode("div",Am,[b[20]||(b[20]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":b[8]||(b[8]=P=>m.value=P),style:{width:"100%"},onChange:Y},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),(P,ae)=>(e.openBlock(),e.createElementBlock("option",{key:ae,value:ae},e.toDisplayString(P.label)+"("+e.toDisplayString(P.width)+"×"+e.toDisplayString(P.height)+")",9,Lm))),128)),b[19]||(b[19]=e.createElementVNode("option",{value:"custom"},"自定义",-1))],544),[[e.vModelSelect,m.value]])]),m.value==="custom"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Rm,[e.createElementVNode("span",Pm,[b[21]||(b[21]=e.createElementVNode("span",{class:"pd-label-t"},"瓦片宽",-1)),e.createVNode(re,{target:y,base:e.unref(me.WATERMARK_DEFAULTS),"prop-key":"tileWidth",onChange:b[9]||(b[9]=P=>Y())},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[10]||(b[10]=P=>y.tileWidth=P),min:e.unref(c),step:10,onChange:Y},null,40,Fm),[[e.vModelText,y.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",Um,[e.createElementVNode("span",Im,[b[22]||(b[22]=e.createElementVNode("span",{class:"pd-label-t"},"瓦片高",-1)),e.createVNode(re,{target:y,base:e.unref(me.WATERMARK_DEFAULTS),"prop-key":"tileHeight",onChange:b[11]||(b[11]=P=>Y())},null,8,["target","base"])]),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[12]||(b[12]=P=>y.tileHeight=P),min:e.unref(a),step:10,onChange:Y},null,40,Om),[[e.vModelText,y.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),Wm=Ee(Hm,[["__scopeId","data-v-d4a7617a"]]),Gm={class:"design-background-config"},Km=["title"],qm={class:"design-background-actions"},jm=["disabled"],Ym=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,i=l,d=e.ref(!1),c=e.inject(Et,e.computed(()=>{})),a=e.computed(()=>d.value||!c.value),n=e.computed(()=>o.modelValue?.rotation??0);async function r(k){const v=k.target,y=v.files?.[0];if(y){if(!y.type.startsWith("image/")){alert("仅支持上传图片文件"),v.value="";return}if(!c.value){alert("设计背景上传能力未配置"),v.value="";return}d.value=!0;try{const h=await c.value(y);h?i("update:modelValue",{src:h,rotation:0}):alert("设计背景上传失败")}catch(h){alert(h instanceof Error?h.message:"设计背景上传失败")}finally{d.value=!1,v.value=""}}}function s(){if(!o.modelValue?.src)return;const k=(n.value+90)%360;i("update:modelValue",{src:o.modelValue.src,rotation:k})}function u(){i("update:modelValue",void 0)}return(k,v)=>(e.openBlock(),e.createElementBlock("div",Gm,[v[0]||(v[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),v[1]||(v[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,Km),e.createElementVNode("div",qm,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:s}," 旋转("+e.toDisplayString(n.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:a.value}])},[e.createTextVNode(e.toDisplayString(d.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:r},null,40,jm)],2))]))}}),Zm=Ee(Ym,[["__scopeId","data-v-3f4d2e32"]]),Xm={class:"tiling-config","data-test":"tiling-config"},Qm={class:"pd-field"},Jm={class:"tiling-switch"},_m=["checked","disabled"],ep={key:0,class:"pd-hint tiling-error"},tp={class:"pd-field"},op={class:"pd-label"},lp=["value"],np=["value"],ap={key:0,class:"pd-field"},ip={class:"custom-size-grid"},rp={key:1,class:"pd-field"},sp={class:"pd-label"},dp={class:"pd-radio-group",role:"radiogroup"},cp={class:"pd-radio"},up=["checked"],mp={class:"pd-radio"},pp=["checked"],vp={class:"margin-grid"},fp={class:"pd-field"},gp={class:"pd-label"},bp={class:"pd-field"},hp={class:"pd-label"},yp={class:"pd-field"},Ep={class:"pd-label"},kp={class:"pd-field"},Vp={class:"pd-label"},Np={class:"pd-field"},wp={class:"pd-label"},Cp={class:"pd-field"},xp={class:"pd-label"},Sp={class:"pd-field"},Bp={key:2,class:"pd-hint tiling-summary"},$p=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,i=l,d=Object.keys(p.PAPER_PRESETS).filter(E=>E!=="CUSTOM"&&!p.PAPER_PRESETS[E]?.continuous),c=e.computed(()=>p.isContinuousPaperSize(o.templateData?.paperSize)),a=e.computed(()=>({...me.TILE_DEFAULTS,...o.modelValue??{},enabled:o.modelValue?.enabled??!1,sheetMargin:{...me.TILE_DEFAULTS.sheetMargin,...o.modelValue?.sheetMargin??{}}})),n=e.computed(()=>o.templateData?{...o.templateData,tiling:a.value}:void 0),r=e.computed(()=>n.value?me.validateTiling(n.value):[]),s=e.computed(()=>{const E=n.value;return E?Math.max(me.computeMaxColumns(E),1):1}),u=e.computed(()=>{const E=n.value;if(!(!E||r.value.length))try{return me.computeTileLayout(E)}catch{return}}),k=e.computed(()=>{const E=u.value,f=n.value;if(!E||!f)return"";const N=me.resolveSheetMm(f),B=a.value.sheetPaperSize==="CUSTOM"?"自定义":a.value.sheetPaperSize??"A4",Q=a.value.sheetPaperSize==="CUSTOM"?"":a.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${B}${Q} ${N.width}×${N.height}mm · ${E.columns} 列 × ${E.rows} 行 = 每张 ${E.perSheet} 格`});function v(E){i("update:modelValue",{...a.value,...E})}function y(E,f){v({sheetMargin:{...a.value.sheetMargin,[E]:f??0}})}function h(E){if(E!=="CUSTOM"){v({sheetPaperSize:E});return}const f=n.value,N=f?me.resolveSheetMm(f):{width:210,height:297};v({sheetPaperSize:"CUSTOM",sheetCustomWidth:a.value.sheetCustomWidth??N.width,sheetCustomHeight:a.value.sheetCustomHeight??N.height})}function m(E){if(!E){v({enabled:!1});return}const f=s.value,N=f>=1?Math.min(me.TILE_DEFAULTS.columns,f):1;v({...me.TILE_DEFAULTS,columns:N})}return(E,f)=>(e.openBlock(),e.createElementBlock("div",Xm,[f[30]||(f[30]=e.createElementVNode("h3",{class:"pd-divider"},"拼版打印",-1)),f[31]||(f[31]=e.createElementVNode("p",{class:"pd-hint"},"把标签按「列 × 行」铺到一张大纸上批量打印",-1)),e.createElementVNode("div",Qm,[e.createElementVNode("label",Jm,[e.createElementVNode("input",{type:"checkbox",checked:a.value.enabled,disabled:c.value,onChange:f[0]||(f[0]=N=>m(N.target.checked))},null,40,_m),f[13]||(f[13]=e.createElementVNode("span",null,"启用拼版",-1))]),c.value?(e.openBlock(),e.createElementBlock("p",ep,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),a.value.enabled&&!c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",tp,[e.createElementVNode("span",op,[f[14]||(f[14]=e.createElementVNode("span",{class:"pd-label-t"},"目标纸张",-1)),e.createVNode(re,{target:a.value,base:e.unref(me.TILE_DEFAULTS),"prop-key":"sheetPaperSize",write:N=>v({sheetPaperSize:N})},null,8,["target","base","write"])]),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:a.value.sheetPaperSize??"A4",onChange:f[1]||(f[1]=N=>h(N.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),N=>(e.openBlock(),e.createElementBlock("option",{key:N,value:N},e.toDisplayString(e.unref(p.PAPER_PRESETS)[N]?.label??N),9,np))),128)),f[15]||(f[15]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,lp)]),a.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",ap,[f[17]||(f[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",ip,[e.createVNode(de,{"model-value":a.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":f[2]||(f[2]=N=>v({sheetCustomWidth:N}))},null,8,["model-value"]),f[16]||(f[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":a.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":f[3]||(f[3]=N=>v({sheetCustomHeight:N}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",rp,[e.createElementVNode("span",sp,[f[18]||(f[18]=e.createElementVNode("span",{class:"pd-label-t"},"目标纸方向",-1)),e.createVNode(re,{target:a.value,base:e.unref(me.TILE_DEFAULTS),"prop-key":"sheetOrientation",write:N=>v({sheetOrientation:N})},null,8,["target","base","write"])]),e.createElementVNode("div",dp,[e.createElementVNode("label",cp,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(a.value.sheetOrientation??"portrait")==="portrait",onChange:f[4]||(f[4]=N=>v({sheetOrientation:"portrait"}))},null,40,up),f[19]||(f[19]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",mp,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:a.value.sheetOrientation==="landscape",onChange:f[5]||(f[5]=N=>v({sheetOrientation:"landscape"}))},null,40,pp),f[20]||(f[20]=e.createElementVNode("span",null,"横向",-1))])])])),f[28]||(f[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",vp,[e.createElementVNode("div",fp,[e.createElementVNode("span",gp,[f[21]||(f[21]=e.createElementVNode("span",{class:"pd-label-t"},"上",-1)),e.createVNode(re,{target:a.value.sheetMargin,base:e.unref(me.TILE_DEFAULTS).sheetMargin,"prop-key":"top",write:N=>y("top",N)},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":f[6]||(f[6]=N=>y("top",N))},null,8,["model-value"])]),e.createElementVNode("div",bp,[e.createElementVNode("span",hp,[f[22]||(f[22]=e.createElementVNode("span",{class:"pd-label-t"},"下",-1)),e.createVNode(re,{target:a.value.sheetMargin,base:e.unref(me.TILE_DEFAULTS).sheetMargin,"prop-key":"bottom",write:N=>y("bottom",N)},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":f[7]||(f[7]=N=>y("bottom",N))},null,8,["model-value"])]),e.createElementVNode("div",yp,[e.createElementVNode("span",Ep,[f[23]||(f[23]=e.createElementVNode("span",{class:"pd-label-t"},"左",-1)),e.createVNode(re,{target:a.value.sheetMargin,base:e.unref(me.TILE_DEFAULTS).sheetMargin,"prop-key":"left",write:N=>y("left",N)},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":f[8]||(f[8]=N=>y("left",N))},null,8,["model-value"])]),e.createElementVNode("div",kp,[e.createElementVNode("span",Vp,[f[24]||(f[24]=e.createElementVNode("span",{class:"pd-label-t"},"右",-1)),e.createVNode(re,{target:a.value.sheetMargin,base:e.unref(me.TILE_DEFAULTS).sheetMargin,"prop-key":"right",write:N=>y("right",N)},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":f[9]||(f[9]=N=>y("right",N))},null,8,["model-value"])])]),f[29]||(f[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",Np,[e.createElementVNode("span",wp,[f[25]||(f[25]=e.createElementVNode("span",{class:"pd-label-t"},"横向间距",-1)),e.createVNode(re,{target:a.value,base:e.unref(me.TILE_DEFAULTS),"prop-key":"gapX",write:N=>v({gapX:N})},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.gapX,min:0,max:50,"onUpdate:modelValue":f[10]||(f[10]=N=>v({gapX:N??0}))},null,8,["model-value"])]),e.createElementVNode("div",Cp,[e.createElementVNode("span",xp,[f[26]||(f[26]=e.createElementVNode("span",{class:"pd-label-t"},"纵向间距",-1)),e.createVNode(re,{target:a.value,base:e.unref(me.TILE_DEFAULTS),"prop-key":"gapY",write:N=>v({gapY:N})},null,8,["target","base","write"])]),e.createVNode(de,{"model-value":a.value.gapY,min:0,max:50,"onUpdate:modelValue":f[11]||(f[11]=N=>v({gapY:N??0}))},null,8,["model-value"])]),e.createElementVNode("div",Sp,[f[27]||(f[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(de,{"model-value":a.value.columns,min:1,max:s.value,"onUpdate:modelValue":f[12]||(f[12]=N=>v({columns:N??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,N=>(e.openBlock(),e.createElementBlock("p",{key:N.code,class:"pd-hint tiling-error"},e.toDisplayString(N.message),1))),128)),!r.value.length&&k.value?(e.openBlock(),e.createElementBlock("p",Bp,e.toDisplayString(k.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),Dp=Ee($p,[["__scopeId","data-v-032ae045"]]),Tp={key:0,class:"prop-collapsed"},Mp={class:"prop-head"},zp={class:"pd-tabs prop-tabs"},Ap={class:"pd-tab-bar",role:"tablist"},Lp={class:"pd-tab-pane",role:"tabpanel"},Rp={class:"property-content"},Pp={key:1,class:"pd-empty"},Fp={class:"pd-tab-pane",role:"tabpanel"},Up={class:"pd-field"},Ip=["value"],Op=["label"],Hp=["value"],Wp={key:0,class:"pd-hint"},Gp={key:1,class:"pd-field"},Kp={class:"pd-label"},qp={class:"custom-size-grid"},jp={key:2,class:"pd-field"},Yp={class:"pd-radio-group",role:"radiogroup"},Zp={class:"pd-radio"},Xp=["checked"],Qp={class:"pd-radio"},Jp=["checked"],_p={key:3,class:"pd-field"},ev={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},tv={class:"pd-radio"},ov=["checked"],lv={class:"pd-radio"},nv=["checked"],av={class:"pd-radio"},iv=["checked"],rv={class:"pd-radio"},sv=["checked"],dv={class:"pd-field"},cv={class:"pd-label"},uv={class:"page-bg-row"},mv={class:"page-bg-picker"},pv={key:5,class:"pd-hint"},vv={class:"margin-grid"},fv={class:"pd-field"},gv={class:"pd-field"},bv={class:"pd-field"},hv={class:"pd-field"},yv={class:"pd-field"},Ev={class:"pd-field"},kv=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,i=l,d=e.computed(()=>{const T=[];for(const[V,le]of Object.entries(p.PAPER_PRESETS)){if(o.multiPage&&p.isContinuousPaperSize(V))continue;const be=le.group??"其他";let Ne=T.find(Se=>Se.group===be);Ne||(Ne={group:be,items:[]},T.push(Ne)),Ne.items.push({key:V,label:le.label??V})}return T}),c=e.ref(""),a=e.computed(()=>o.element?["text","longText"].includes(o.element.printElementType.type):!1),n=e.computed(()=>o.element?o.element.printElementType.type==="image":!1),r=e.computed(()=>o.element?["barcode","qrcode"].includes(o.element.printElementType.type):!1),s=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),k=e.computed(()=>{const T=o.tableSelection,V=o.element?.options.tableRows;return!s.value||!T||!V?!1:p.resolveCellGroupMode(V,T).mode==="multi"}),v=e.computed(()=>p.searchProperties(c.value)),y=e.computed(()=>v.value.groups),h=e.computed(()=>v.value.itemKeys),m=e.computed(()=>!!c.value.trim()),E=e.computed(()=>{if(!o.element)return[];if(o.element.printElementType.type==="table"&&o.tableSelection){const{r1:T,c1:V}=o.tableSelection,le=o.element.options.tableRows;if(le&&le[T]){const be=le[T],Ne=o.element.options.fields?.[0]?.dataSource;return p.getTableCellBindings(be.type,T,V,Ne)}}return p.getElementBindings(o.element)});function f(T){return T.split(".").flatMap(V=>{const le=V.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!le)return[V];const be=le[1],Ne=[...le[2].matchAll(/\[(\d+)\]/g)].map(Se=>Number(Se[1]));return[be,...Ne]})}function N(T){return o.element?f(T).reduce((be,Ne)=>be==null?"":be[Ne],o.element)??"":""}function B(T,V){if(!o.element)return;const le=f(T),be=le.pop(),Ne=le.reduce((Se,Be)=>((Se[Be]===void 0||Se[Be]===null)&&(Se[Be]={}),Se[Be]),o.element);Ne[be]=V||void 0,o.recordHistory?.()}function Q(T){c.value=T}function Y(T){o.element&&B("options.src",T)}const C=e.computed(()=>o.templateData?.paperSize||"A4"),b=e.computed(()=>!o.multiPage&&p.isContinuousPaperSize(C.value)),P=e.computed(()=>p.isLabelPaperSize(C.value)),ae=e.computed(()=>o.templateData?.orientation||"portrait"),q=e.computed(()=>!!o.templateData?.tiling?.enabled),w=e.computed(()=>o.templateData?.outputRotation??0),z=e.computed({get:()=>o.templateData?.pageBackground||"#ffffff",set:T=>_(T)}),I=e.computed(()=>o.templateData?.margins.top??10),Z=e.computed(()=>o.templateData?.margins.bottom??10),J=e.computed(()=>o.templateData?.margins.left??10),ue=e.computed(()=>o.templateData?.margins.right??10),D=e.computed(()=>o.templateData?.header.height??10),ne=e.computed(()=>o.templateData?.footer.height??10),ee=e.computed(()=>o.templateData?.customWidth??p.PAPER_PRESETS[C.value]?.width??210),F=e.computed(()=>o.templateData?.customHeight??297),fe=e.computed(()=>o.templateData?.designBackground);function he(T){if(o.templateData){if(!T){const V={...o.templateData};delete V.designBackground,i("update:templateData",V);return}$({designBackground:T})}}const oe=e.computed(()=>o.templateData?.watermark??{});function O(T){$({watermark:T})}function $(T){if(!o.templateData)return;const V={...o.templateData,...T};i("update:templateData",V)}function S(T){if(o.templateData){if(p.isContinuousPaperSize(T)){$({paperSize:T,customWidth:T==="CONTINUOUS"?o.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...o.templateData.margins,bottom:o.templateData?.margins.bottom??0}});return}if(T==="CUSTOM"){$({paperSize:"CUSTOM"});return}if(p.PAPER_PRESETS[T]){if(p.isLabelPaperSize(T)){$({paperSize:T,...p.labelPaperDefaults(o.templateData)});return}$({paperSize:T})}}}function L(T){$({orientation:String(T)})}function K(T){$({outputRotation:Number(T)})}function _(T){const V=T&&T.toLowerCase()!=="#ffffff"&&T.toLowerCase()!=="#fff"?T:void 0;$(V===void 0?{pageBackground:void 0}:{pageBackground:V})}function ce(){$({pageBackground:void 0})}function ke(T){T!==void 0&&$({customWidth:T})}function R(T){T!==void 0&&$({customHeight:T})}function M(T){T!==void 0&&$({margins:{...o.templateData.margins,top:T}})}function A(T){T!==void 0&&$({margins:{...o.templateData.margins,bottom:T}})}function se(T){T!==void 0&&$({margins:{...o.templateData.margins,left:T}})}function W(T){T!==void 0&&$({margins:{...o.templateData.margins,right:T}})}function ge(T){T!==void 0&&$({header:{...o.templateData.header,height:T}})}function U(T){T!==void 0&&$({footer:{...o.templateData.footer,height:T}})}const H=e.computed(()=>o.activeTab||"page");function j(T){i("update:activeTab",T),i("toggle-collapse")}return(T,V)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",Tp,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:V[0]||(V[0]=le=>j(H.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:H.value==="element"}]),title:"元素属性",onClick:V[1]||(V[1]=le=>j("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:H.value==="page"}]),title:"页面属性",onClick:V[2]||(V[2]=le=>j("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Mp,[V[19]||(V[19]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:V[3]||(V[3]=le=>T.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",zp,[e.createElementVNode("div",Ap,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(t.activeTab||"page")==="element"}]),onClick:V[4]||(V[4]=le=>T.$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]=le=>T.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",Lp,[t.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(ei,{onSearch:Q}),e.createElementVNode("div",Rp,[y.value.includes("position-size")&&!s.value?(e.openBlock(),e.createBlock(pi,{key:0,element:t.element,"matched-keys":h.value,searching:m.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("appearance")?(e.openBlock(),e.createBlock(xr,{key:1,element:t.element,"is-text-type":a.value,"matched-keys":h.value,searching:m.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("code")&&r.value?(e.openBlock(),e.createBlock(cs,{key:2,element:t.element,"matched-keys":h.value,searching:m.value,onChange:V[6]||(V[6]=le=>t.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("binding")&&!k.value?(e.openBlock(),e.createBlock(Le,{key:3,title:"内容",icon:"Document","default-expanded":"","group-key":"binding"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value,le=>(e.openBlock(),e.createBlock(_s,{key:le.targetPath,descriptor:le,fields:t.fields,"model-value":N(le.targetPath),"onUpdate:modelValue":be=>B(le.targetPath,be)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),n.value?(e.openBlock(),e.createBlock(bc,{key:0,onSuccess:Y})):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(Nc,{element:t.element,selection:t.tableSelection},null,8,["element","selection"]),e.createVNode(Vm,{element:t.element,selection:t.tableSelection,fields:t.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),u.value&&y.value.includes("content")?(e.openBlock(),e.createBlock(vd,{key:5,element:t.element,fields:t.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),t.element.printElementType.type==="flowList"&&y.value.includes("flow-list")?(e.openBlock(),e.createBlock(Ad,{key:6,element:t.element,"matched-keys":h.value,searching:m.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("border-bg")?(e.openBlock(),e.createBlock(Qd,{key:7,element:t.element,"matched-keys":h.value,searching:m.value,onChange:V[7]||(V[7]=le=>t.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("pagination")&&u.value?(e.openBlock(),e.createBlock(zt,{key:8,element:t.element,"matched-keys":h.value,searching:m.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("pagination")&&!u.value?(e.openBlock(),e.createBlock(zt,{key:9,element:t.element,"matched-keys":h.value,searching:m.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),y.value.includes("advanced")?(e.openBlock(),e.createBlock(rc,{key:10,element:t.element,"matched-keys":h.value,searching:m.value,onDeleteElement:V[8]||(V[8]=le=>T.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",Pp,"请在画布中选择一个元素"))],512),[[e.vShow,(t.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",Fp,[e.createElementVNode("form",{class:"pd-form",onSubmit:V[18]||(V[18]=e.withModifiers(()=>{},["prevent"]))},[V[40]||(V[40]=e.createElementVNode("h3",{class:"pd-divider"},"纸张设置",-1)),e.createElementVNode("div",Up,[V[21]||(V[21]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:C.value,class:"pd-select",onChange:V[9]||(V[9]=le=>S(le.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,le=>(e.openBlock(),e.createElementBlock("optgroup",{key:le.group,label:le.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(le.items,be=>(e.openBlock(),e.createElementBlock("option",{key:be.key,value:be.key},e.toDisplayString(be.label),9,Hp))),128))],8,Op))),128)),V[20]||(V[20]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,Ip)]),P.value?(e.openBlock(),e.createElementBlock("p",Wp,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),b.value||C.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Gp,[e.createElementVNode("span",Kp,e.toDisplayString(b.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",qp,[e.createVNode(de,{"model-value":ee.value,min:25,max:2e3,"onUpdate:modelValue":ke},null,8,["model-value"]),C.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[V[22]||(V[22]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(de,{"model-value":F.value,min:25,max:2e3,"onUpdate:modelValue":R},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),b.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",jp,[V[25]||(V[25]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",Yp,[e.createElementVNode("label",Zp,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:ae.value==="portrait",onChange:V[10]||(V[10]=le=>L(le.target.value))},null,40,Xp),V[23]||(V[23]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Qp,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:ae.value==="landscape",onChange:V[11]||(V[11]=le=>L(le.target.value))},null,40,Jp),V[24]||(V[24]=e.createElementVNode("span",null,"横向",-1))])]),V[26]||(V[26]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!b.value&&!q.value?(e.openBlock(),e.createElementBlock("div",_p,[V[31]||(V[31]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",ev,[e.createElementVNode("label",tv,[e.createElementVNode("input",{type:"radio",value:"0",checked:w.value===0,onChange:V[12]||(V[12]=le=>K(le.target.value))},null,40,ov),V[27]||(V[27]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",lv,[e.createElementVNode("input",{type:"radio",value:"90",checked:w.value===90,onChange:V[13]||(V[13]=le=>K(le.target.value))},null,40,nv),V[28]||(V[28]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",av,[e.createElementVNode("input",{type:"radio",value:"180",checked:w.value===180,onChange:V[14]||(V[14]=le=>K(le.target.value))},null,40,iv),V[29]||(V[29]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",rv,[e.createElementVNode("input",{type:"radio",value:"270",checked:w.value===270,onChange:V[15]||(V[15]=le=>K(le.target.value))},null,40,sv),V[30]||(V[30]=e.createElementVNode("span",null,"270°",-1))])]),V[32]||(V[32]=e.createElementVNode("p",{class:"pd-hint"},"整页内容旋转对应角度出纸;90°/270° 时纸张长宽互换以贴合内容,内容不变形不裁切;0° 为不旋转(默认)",-1))])):e.createCommentVNode("",!0),e.createElementVNode("div",dv,[e.createElementVNode("span",cv,[V[33]||(V[33]=e.createElementVNode("span",{class:"pd-label-t"},"页面背景色",-1)),e.createVNode(re,{target:{pageBackground:t.templateData?.pageBackground},base:{pageBackground:void 0},"prop-key":"pageBackground",write:()=>ce()},null,8,["target","write"])]),e.createElementVNode("div",uv,[e.createElementVNode("div",mv,[e.createVNode(Me,{modelValue:z.value,"onUpdate:modelValue":V[16]||(V[16]=le=>z.value=le)},null,8,["modelValue"])])])]),e.createVNode(Zm,{"model-value":fe.value,"onUpdate:modelValue":he},null,8,["model-value"]),t.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Dp,{key:4,"model-value":t.templateData?.tiling,"template-data":t.templateData,"onUpdate:modelValue":V[17]||(V[17]=le=>$({tiling:le}))},null,8,["model-value","template-data"])),V[41]||(V[41]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),b.value?(e.openBlock(),e.createElementBlock("p",pv,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",vv,[e.createElementVNode("div",fv,[V[34]||(V[34]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(de,{"model-value":I.value,min:0,max:50,"onUpdate:modelValue":M},null,8,["model-value"])]),e.createElementVNode("div",gv,[V[35]||(V[35]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(de,{"model-value":Z.value,min:0,max:100,"onUpdate:modelValue":A},null,8,["model-value"])]),e.createElementVNode("div",bv,[V[36]||(V[36]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(de,{"model-value":J.value,min:0,max:50,"onUpdate:modelValue":se},null,8,["model-value"])]),e.createElementVNode("div",hv,[V[37]||(V[37]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(de,{"model-value":ue.value,min:0,max:50,"onUpdate:modelValue":W},null,8,["model-value"])])]),V[42]||(V[42]=e.createElementVNode("h3",{class:"pd-divider"},"页眉/页脚高度 (mm)",-1)),e.createElementVNode("div",yv,[V[38]||(V[38]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(de,{"model-value":D.value,min:0,max:100,step:.1,"onUpdate:modelValue":ge},null,8,["model-value"])]),e.createElementVNode("div",Ev,[V[39]||(V[39]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(de,{"model-value":ne.value,min:0,max:100,step:.1,"onUpdate:modelValue":U},null,8,["model-value"])])],32),e.createVNode(Wm,{"model-value":oe.value,fields:t.fields,"onUpdate:modelValue":O},null,8,["model-value","fields"])],512),[[e.vShow,(t.activeTab||"page")==="page"]])])],64))],2))}}),Vv=Ee(kv,[["__scopeId","data-v-6af47491"]]),Nv={class:"status-bar"},wv={key:0,class:"status-item coord"},Cv={class:"status-item"},xv={class:"status-item"},Sv={class:"status-item status-paper"},Bv=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("div",Nv,[t.coordinate?(e.openBlock(),e.createElementBlock("span",wv," x:"+e.toDisplayString(t.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(t.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",Cv,"缩放 "+e.toDisplayString(t.scale)+"%",1),e.createElementVNode("span",xv,"元素 "+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",Sv,e.toDisplayString(t.paper),1)]))}}),$v=Ee(Bv,[["__scopeId","data-v-a91952ff"]]),Dv={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
- `},Nm={id:"features",title:"功能说明",content:`
46
+ `},Tv={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
- `},wm={id:"shortcuts",title:"快捷键",content:`
217
+ `},Mv={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
- `},Cm={id:"faq",title:"常见问题",content:`
287
+ `},zv={id:"faq",title:"常见问题",content:`
288
288
  <h2>如何调整纸张大小?</h2>
289
289
  <ol>
290
290
  <li>在右侧面板选择"页面设置"</li>
@@ -410,7 +410,41 @@
410
410
  <blockquote>
411
411
  <p><strong>提示</strong>:水印配置保存在模板 JSON 的 <code>watermark</code> 字段中,仅对当前模板生效。</p>
412
412
  </blockquote>
413
- `},Sm={id:"changelog",title:"更新记录",content:`
413
+ `},Av={id:"changelog",title:"更新记录",content:`
414
+ <h2>V1.3.10<small>(2026-10-24)</small></h2>
415
+
416
+ <h3>新增</h3>
417
+ <ul>
418
+ <li><strong>打印预览可缩放</strong>:预览顶部新增「点阵 / 适配 / 100% / 200% / 400%」档位。模板设置了打印机分辨率时默认落在「点阵」档,屏幕上 1 像素正好对应纸上 1 个打印点,细条码不会再糊成一片;「适配」档按真实纸宽计算,A3 / A5 横版、Letter / 热敏纸同样正确。</li>
419
+ <li><strong>流式列表</strong>:新增一栏类型,把一组明细按「每行几列」横着密排、排满自动换行,适合处方药材、配件清单这类没有格线的栏位。每行列数、行高与横向间距都由你填;打开「内容过长时跨列」后,比一列更宽的条目会占两列以上,当前行放不下时整条挪到下一行行首,不会把词切两半。列数挤不下只提示「可放约几列」,不会替你改值。一个框只排一页,需要续排请用表格。</li>
420
+ <li><strong>每一行都能一键恢复默认值</strong>:凡是有出厂默认值的属性行,标签最右侧多了一个恢复图标,只在当前值与默认值不同时点亮,点一下把这一行写回默认值;已是默认值时置灰,点了不产生历史记录。悬浮提示会直接说清要恢复成什么。没有整组或整个元素的一键重置。</li>
421
+ <li><strong>元素也能分边设边框</strong>:「边框与背景」补齐线型与「全部 / 外侧 / 内部 / 无」预设、上右下左单边勾选,与表格单元格同一形态。元素只有一圈边、没有相邻格共用的内部线,所以「内部」对元素保持置灰。</li>
422
+ <li><strong>示例库新增三份模板</strong>:中药处方笺(演示流式列表)、电池模块出货标签两份(含条码格与不含标签格,只差一行的格子划分,便于对照)。</li>
423
+ <li><strong>条形码条高与静区可调</strong>:条形码元素与表格单元格都能设置「条高 (mm)」与「静区 (模块)」。条高只量黑白条本体;静区缺省 10 模块,调小可以让同样宽度里的条更粗。条宽倍率上限由 4 提高到 8。选好打印机分辨率后,条宽一行会给出推荐档与当前折算毫米数,只作参考,不会替你改值。</li>
424
+ </ul>
425
+
426
+ <h3>变更</h3>
427
+ <ul>
428
+ <li><strong>不再预置字体</strong>:新建元素不再自动写上字体名,字体下拉也不再列出内置字体档——黑体、微软雅黑等是厂商授权字体,项目不再替你的产出物决定用谁的字体。没配置字体的模板落纸交还各端的系统默认字体;要三端字面完全一致,请声明随模板分发的字体文件,或填写本机已装的字体名。已有模板里写好的字体名照常生效。</li>
429
+ <li><strong>表格边框改成所见即所得</strong>:单选一个单元格时,线型 / 宽度 / 颜色与上右下左四边会读回这个格子的真实设置;四边规格不一致的项显示「混合」,一条边都没有时显示「无 / 0」;选中多个格子时只做批量设置,不拿其中某一格冒充全部。勾某一条边不再把该格已有的其余三条边写没。顶部工具栏的边框面板与属性台同一套回显。</li>
430
+ <li><strong>线型新增「无」</strong>:属性台与顶部工具栏都能表达「这里没有边框」;工具栏的线型按钮再点一次即取消,四个图标可以全不亮。给一个没有边框的元素选任一条线型,会按缺省粗细开一条框。</li>
431
+ <li><strong>单元格里的换行符真的换行</strong>:可换行的格子按换行断行,英文按整词折行(不再逐字拆开),中文仍按字断。数据里带换行的字段(地址、备注)出纸会占更多行、表格变长,可能引起分页位移。</li>
432
+ </ul>
433
+
434
+ <h3>修复</h3>
435
+ <ul>
436
+ <li><strong>表格单元格的条宽与条码字号现在会出纸</strong>:以前在属性台把单元格条宽调到 3/4/8 只有设计器里变化,出纸仍是缺省宽度;单元格条码的文字字号也取错了字段,现已与画布一致。</li>
437
+ <li><strong>预览「适配」档按真实纸宽计算</strong>:此前缩放自带一份纸型宽度表,A3 / A5 横版、部分针式与热敏纸的宽度漏算或按纵向 A4 处理,适配比例有偏差;现已与出纸几何同源。</li>
438
+ <li><strong>素材台与页签的悬停提示更易读</strong>:长字段名被省略后,悬停会显示统一风格的提示气泡并展示完整的「中文名 (变量名)」;页签与素材台不再同时冒出两个气泡。</li>
439
+ </ul>
440
+
441
+ <h2>V1.3.9<small>(2026-10-22)</small></h2>
442
+
443
+ <h3>修复</h3>
444
+ <ul>
445
+ <li><strong>补上字段长名那条更新说明</strong>:「变量名过长时中文名自动占满一行」其实已经随 1.3.8 生效,只是这条说明当时漏在了应用内的更新记录里,现在补上;功能没有再改动。</li>
446
+ </ul>
447
+
414
448
  <h2>V1.3.8<small>(2026-10-22)</small></h2>
415
449
 
416
450
  <h3>新增</h3>
@@ -431,6 +465,7 @@
431
465
  <li><strong>字体下拉不再撑乱页面</strong>:展开候选时改为浮层,顶栏、属性台不再被撑高或错位,空间不足时向上翻。</li>
432
466
  <li><strong>表格与横竖线不再被误拆页</strong>:单页模板不会因为竖线占用高度被拆成两页,元素回到设计位置;表格跟随区的数据驱动位移仍在处理中。</li>
433
467
  <li><strong>裁剪示意更可信</strong>:图片未设置或表达式还没求值时显示示例图并说明;换图、加载失败不再沿用上一张图的可挪量,示意框也不再被拉成横条。</li>
468
+ <li><strong>字段名过长不再挤掉中文名</strong>:素材台里变量名太长时会自动挪到第二行,中文名始终占满一整行;确实放不下时才省略,鼠标停在字段上可看到完整的中文名和变量名,分组名同样有提示。</li>
434
469
  </ul>
435
470
 
436
471
  <h2>V1.3.7<small>(2026-10-19)</small></h2>
@@ -679,4 +714,4 @@
679
714
  <blockquote>
680
715
  <p>完整更新记录请查阅仓库 <code>docs/中文/CHANGELOG.md</code> 与 <code>docs/en/CHANGELOG.en.md</code>。</p>
681
716
  </blockquote>
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;
717
+ `},Lv=[Dv,Tv,Mv,zv,Av],Rv={class:"help-modal"},Pv={class:"help-modal-header"},Fv={class:"help-modal-body"},Uv={class:"help-modal-sidebar"},Iv=["onClick"],Ov={class:"help-modal-content"},Hv=["innerHTML"],gt="worm-print-help-tab",Wv=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(t,{emit:l}){const o=t,i=l,d=Lv,c=e.ref(o.initialTab);e.onMounted(()=>{const s=localStorage.getItem(gt);s&&d.some(u=>u.id===s)&&(c.value=s)}),e.watch(()=>o.visible,s=>{if(s){const u=localStorage.getItem(gt);u&&d.some(k=>k.id===u)&&(c.value=u)}});function a(s){c.value=s,localStorage.setItem(gt,s),i("update:tab",s)}const n=e.computed(()=>d.find(u=>u.id===c.value)?.content||"");function r(s){s.key==="Escape"&&o.visible&&i("close")}return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(s,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(k=>s.$emit("close"),["self"]))},[e.createElementVNode("div",Rv,[e.createElementVNode("div",Pv,[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]=k=>s.$emit("close"))}," × ")]),e.createElementVNode("div",Fv,[e.createElementVNode("div",Uv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),k=>(e.openBlock(),e.createElementBlock("button",{key:k.id,class:e.normalizeClass(["help-tab",{active:c.value===k.id}]),onClick:v=>a(k.id)},e.toDisplayString(k.title),11,Iv))),128))]),e.createElementVNode("div",Ov,[e.createElementVNode("div",{class:"help-content",innerHTML:n.value},null,8,Hv)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),Gv=Ee(Wv,[["__scopeId","data-v-31115934"]]),Kv={class:"page-tabs-list"},qv=["onBlur","onKeydown"],jv=["data-tip","onClick","onDblclick"],Yv={class:"page-tabs-actions"},Zv=["data-tip","disabled"],Xv=["data-tip","disabled"],Qv=["data-tip","disabled"],Jv=["data-tip","disabled"],_v=["data-tip","disabled"],ef=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,i=l,d=e.ref(-1),c=e.ref(""),a=e.computed(()=>o.pages[o.activeIndex]?.name||`页面 ${o.activeIndex+1}`),n=e.computed(()=>o.tilingEnabled?bt:"新增页面(在当前页后追加空白页)"),r=e.computed(()=>o.tilingEnabled?bt:`复制当前页「${a.value}」`);function s(f){d.value=f,c.value=o.pages[f]?.name??""}function u(f){if(d.value!==f)return;const N=c.value.trim();N&&i("rename",f,N),d.value=-1}function k(){d.value=-1}const{tip:v,tipEl:y,onTipOver:h,onTipOut:m,hideTip:E}=Ot();return(f,N)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:N[6]||(N[6]=(...B)=>e.unref(h)&&e.unref(h)(...B)),onMouseout:N[7]||(N[7]=(...B)=>e.unref(m)&&e.unref(m)(...B)),onMouseleave:N[8]||(N[8]=(...B)=>e.unref(E)&&e.unref(E)(...B))},[e.createElementVNode("div",Kv,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.pages,(B,Q)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:Q},[d.value===Q?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":N[0]||(N[0]=Y=>c.value=Y),class:"page-tab-rename","data-test":"page-rename-input",onBlur:Y=>u(Q),onKeydown:[e.withKeys(Y=>u(Q),["enter"]),e.withKeys(k,["esc"])]},null,40,qv)),[[e.vModelText,c.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:Q===t.activeIndex}]),"data-tip":B.name?`${B.name}(双击重命名)`:"双击重命名",onClick:Y=>f.$emit("select",Q),onDblclick:Y=>s(Q)},e.toDisplayString(B.name||`页面 ${Q+1}`),43,jv))],64))),128))]),e.createElementVNode("div",Yv,[e.createElementVNode("button",{"data-test":"add-page","data-tip":n.value,disabled:t.tilingEnabled,onClick:N[1]||(N[1]=B=>f.$emit("add"))},"+",8,Zv),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":r.value,disabled:t.tilingEnabled,onClick:N[2]||(N[2]=B=>f.$emit("duplicate"))},"⧉",8,Xv),e.createElementVNode("button",{"data-test":"delete-page","data-tip":t.multi?`删除当前页「${a.value}」`:"仅多页面模板可删除页面",disabled:!t.multi,onClick:N[3]||(N[3]=B=>f.$emit("delete",t.activeIndex))},"✕",8,Qv),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${a.value}」`,disabled:t.activeIndex<=0,onClick:N[4]||(N[4]=B=>f.$emit("move",t.activeIndex,t.activeIndex-1))},"←",8,Jv),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${a.value}」`,disabled:t.activeIndex>=t.pages.length-1,onClick:N[5]||(N[5]=B=>f.$emit("move",t.activeIndex,t.activeIndex+1))},"→",8,_v)]),e.unref(v)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"tipEl",ref:y,class:"pd-hover-tip",style:e.normalizeStyle({left:`${e.unref(v).x}px`,top:`${e.unref(v).y}px`})},e.toDisplayString(e.unref(v).text),5)):e.createCommentVNode("",!0)],32))}}),tf=Ee(ef,[["__scopeId","data-v-76c9c70d"]]),At="print-studio:left",Lt="print-studio:right";function Rt(t,l){try{const o=localStorage.getItem(t);return o===null?l:o==="1"}catch{return l}}function of(){const t=e.ref(Rt(At,!1)),l=e.ref(Rt(Lt,!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(Lt,a?"1":"0")}catch{}},{flush:"sync"});function i(){t.value=!t.value}function d(){l.value=!l.value}function c(){o.value=!1}return{leftCollapsed:t,rightCollapsed:l,toggleLeft:i,toggleRight:d,dirty:o,markSaved:c}}const lf={class:"designer-body"},nf=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 i=t,d=o,c=e.ref(!1);e.watch(()=>i.showHelp,te=>{te===!1&&(c.value=!1)});const{leftCollapsed:a,rightCollapsed:n,toggleLeft:r,toggleRight:s,dirty:u,markSaved:k}=of(),{scale:v,showRuler:y,showGrid:h,snapToGrid:m,showTableGhostBorder:E,templateData:f,elements:N,fields:B,tilingEnabled:Q,selectedIds:Y,selectedElement:C,selectedElements:b,select:P,selectElement:ae,clearSelection:q,selectAll:w,previewIds:z,setPreview:I,commitPreview:Z,hasClipboard:J,copy:ue,paste:D,cutSelected:ne,canUndo:ee,canRedo:F,undo:fe,redo:he,alignSelected:oe,groupSelected:O,ungroupSelected:$,deleteSelected:S,dragStart:L,dragStop:K,addElement:_,addFieldElement:ce,moveLayer:ke,updateTemplateData:R,getTemplateJson:M,loadTemplate:A,pages:se,activePageIndex:W,switchPage:ge,addPage:U,duplicatePage:H,deletePage:j,renamePage:T,movePage:V,tableSelection:le,setTableSelection:be,recordHistory:Ne}=eo({initialTemplate:i.initialTemplate,initialElements:i.initialElements,initialFields:i.fields}),Se=to({elements:N,selectedIds:Y,tableSelection:le,recordHistory:Ne}),Be=lo({elements:N,selectedIds:Y,recordHistory:Ne}),He=e.computed(()=>Be.active.value);e.watch([N,f],()=>{u.value=!0},{deep:!0});const Re=e.computed(()=>b.value.some(te=>!!te.options.groupId)),{guides:We,addGuide:Ke,moveGuide:qe,removeGuide:Fe}=ao(f,Ne),_e=e.computed(()=>{const te=f.value,{width:ie}=p.getPaperDimensions(te);return ie-te.margins.left-te.margins.right});e.provide(nt,{tableSelection:le,setTableSelection:be,recordHistory:Ne,maxTableWidth:_e}),e.provide(dt,Y),e.provide(Ft,z),e.provide(yt,e.computed(()=>i.uploadImage)),e.provide(Et,e.computed(()=>i.uploadDesignBackground));const{catalog:je}=ro(e.computed(()=>i.fonts));e.provide(kt,je),uo(e.computed(()=>me.buildFontFaceCss(i.fonts)));function Ye(){const te=M();return i.fonts?.length?Array.isArray(te.pages)?{...te,pages:te.pages.map(ie=>({...ie,fonts:[...i.fonts]}))}:{...te,fonts:[...i.fonts]}:te}e.watch(C,te=>{(!te||te.printElementType.type!=="table")&&be(null)});const Ue=e.ref(null),Ze=e.ref(null);function X(te){Ze.value=te}const g=e.computed(()=>{const te=f.value,ie=p.getPaperDimensions(te),Ve=te.orientation==="landscape"?"横向":"纵向",Ie=`${p.PAPER_PRESETS[te.paperSize]?.label??te.paperSize} ${Ve} ${Math.round(ie.width)}×${Math.round(ie.height)}mm`,Oe=te.outputRotation;return Oe?`${Ie}(旋转${Oe}°)`:Ie});function x(){const te=Ue.value?.$el;if(te){const ie=getComputedStyle(te),Ve=parseFloat(ie.paddingLeft)+parseFloat(ie.paddingRight),Te=parseFloat(ie.paddingTop)+parseFloat(ie.paddingBottom),Ie=p.getPaperDimensions(f.value),Oe=96/25.4,ot=p.computeFitScale(te.clientWidth-Ve,te.clientHeight-Te,Ie.width*Oe,Ie.height*Oe);Ue.value?.fitToWindow(ot)}}function Ce(te){v.value=Math.max(p.FIT_SCALE_MIN_PERCENT,v.value+te)}function et(te){Ue.value?.zoomByStep(te>0?1:-1)}function G(te){const ie=te.target.tagName;ie==="INPUT"||ie==="TEXTAREA"||ie==="SELECT"||(te.ctrlKey||te.metaKey)&&te.key==="0"&&(te.preventDefault(),x())}e.onMounted(()=>document.addEventListener("keydown",G)),e.onUnmounted(()=>document.removeEventListener("keydown",G));function pe(te){const ie=f.value.header.height,Ve=f.value.footer.height;R(te),te.header.height<ie&&ze("header"),te.footer.height<Ve&&ze("footer")}function ye(te,ie){f.value={...f.value,[te]:{...f.value[te],height:ie}}}function $e(te){R({...f.value}),ze(te)}function ze(te){const ie=p.getZoneRects(f.value)[te];N.value.some(Te=>Te.zone===te&&(Te.options.top+Te.options.height>ie.height||Te.options.left+Te.options.width>ie.width))&&alert(`${te==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}const xe=ae;function Pe(te){const ie=N.value.find(Ve=>Ve.id===te);ie&&(ie.options.visible=ie.options.visible===!1)}function Xe(te){const ie=N.value.find(Ve=>Ve.id===te);ie&&(ie.options.locked=!ie.options.locked)}const Qe=e.ref("page");e.watch(C,te=>{Qe.value=te?"element":"page"});const Wt={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},tt=e.ref(!1),at=e.ref(null),mt=e.ref("");function Gt(te){const ie=N.value.find(Te=>Te.id===te);if(!ie||(P(te,!1),Qe.value="element",ie.options.locked))return;const Ve=Wt[ie.printElementType.type];Ve&&(at.value={kind:"element",element:ie,field:Ve},mt.value=ie.options[Ve]||"",tt.value=!0)}function Kt(te,ie,Ve){const Te=N.value.find(Zt=>Zt.id===te);if(!Te||(P(te,!1),Qe.value="element",Te.options.locked))return;const Ie=Te.options.tableRows??[],Oe=p.findMainCell(Ie,ie,Ve),ot=Ie[Oe.r]?.cells[Oe.c];ot&&(at.value={kind:"cell",cell:ot},mt.value=ot.formatter||"",tt.value=!0)}function qt(te){const ie=at.value;ie?.kind==="element"?ie.element.options[ie.field]=te||void 0:ie?.kind==="cell"&&(ie.cell.formatter=te||void 0),Ne(),tt.value=!1,at.value=null}function jt(te,ie){N.value.push(te),P(te.id,!1),Ne()}e.watch(()=>i.initialTemplate,te=>{te&&A(te,i.initialElements)}),e.watch(()=>i.initialElements,te=>{te&&!i.initialTemplate&&(f.value={...f.value,elements:te.map(ie=>({...ie,options:{...ie.options},printElementType:{...ie.printElementType}}))})}),e.watch(()=>i.fields,te=>{B.value=te||[]});const xt=e.computed(()=>{const te=f.value;return te?.tiling?.enabled!==!0?[]:me.validateTiling(te)});l({getTemplateJson:Ye,validateTemplate:()=>xt.value});function Yt(){const te=xt.value;if(te.length){alert(te[0].message),Qe.value="page";return}const ie=Ye();if(Array.isArray(ie.pages))try{me.normalizeTemplate(ie)}catch(Ve){alert(Ve instanceof Error?Ve.message:String(Ve));return}d("save",JSON.stringify(ie)),k()}return(te,ie)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["designer-container",{"format-painting":He.value}])},[e.createVNode(rl,{"is-edit":t.isEdit,"can-undo":e.unref(ee),"can-redo":e.unref(F),"has-multi-selection":e.unref(Y).size>=2,"has-selection":e.unref(Y).size>=1,"show-ruler":e.unref(y),"show-grid":e.unref(h),"snap-to-grid":e.unref(m),"show-table-ghost-border":e.unref(E),"selected-element-has-group":Re.value,"show-help":t.showHelp!==!1,"clipboard-disabled":e.unref(Se).context.value!=="elements","has-clipboard":e.unref(J),scale:e.unref(v),"onUpdate:scale":ie[0]||(ie[0]=Ve=>e.isRef(v)?v.value=Ve:null),onPreview:ie[1]||(ie[1]=Ve=>te.$emit("preview")),onSave:Yt,onUndo:e.unref(fe),onRedo:e.unref(he),onAlign:ie[2]||(ie[2]=Ve=>e.unref(oe)(Ve)),onMoveLayer:e.unref(ke),onToggleRuler:ie[3]||(ie[3]=Ve=>y.value=!e.unref(y)),onToggleGrid:ie[4]||(ie[4]=Ve=>h.value=!e.unref(h)),onToggleSnap:ie[5]||(ie[5]=Ve=>m.value=!e.unref(m)),onToggleTableGhostBorder:ie[6]||(ie[6]=Ve=>E.value=!e.unref(E)),onGroup:e.unref(O),onUngroup:e.unref($),onFitWindow:x,onZoom:et,onHelp:ie[7]||(ie[7]=Ve=>c.value=!0),onCopy:e.unref(ue),onPaste:e.unref(D),onDelete:e.unref(S)},{default:e.withCtx(()=>[e.createVNode(Jl,{format:e.unref(Se),painter:e.unref(Be)},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(tf,{pages:e.unref(se),"active-index":e.unref(W),multi:e.unref(se).length>1,"tiling-enabled":e.unref(Q),onSelect:e.unref(ge),onAdd:e.unref(U),onDuplicate:e.unref(H),onDelete:e.unref(j),onRename:e.unref(T),onMove:e.unref(V)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",lf,[e.createVNode(zn,{fields:e.unref(B),elements:e.unref(N),"selected-ids":e.unref(Y),collapsed:e.unref(a),onSelect:e.unref(xe),onMoveLayer:e.unref(ke),onGroup:e.unref(O),onUngroup:e.unref($),onToggleVisible:Pe,onToggleLocked:Xe,onToggleCollapse:e.unref(r)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onGroup","onUngroup","onToggleCollapse"]),e.createVNode(Qa,{ref_key:"canvasAreaRef",ref:Ue,"template-data":e.unref(f),elements:e.unref(N),scale:e.unref(v)/100,"show-ruler":e.unref(y),"show-grid":e.unref(h),"snap-to-grid":e.unref(m),"show-table-ghost-border":e.unref(E),"has-clipboard":e.unref(J),guides:e.unref(We),onSelect:e.unref(xe),onDropElement:e.unref(_),onDropField:e.unref(ce),onDragStart:e.unref(L),onDragStop:e.unref(K),onDblclickElement:Gt,onDblclickCell:Kt,onZoneHeightChange:ye,onZoneHeightCommit:$e,onSelectAll:e.unref(w),onClearSelection:e.unref(q),onPreview:e.unref(I),onCommitPreview:e.unref(Z),onPaste:e.unref(D),onCopy:e.unref(ue),onCut:e.unref(ne),onDelete:e.unref(S),onMoveLayer:e.unref(ke),onCoordinate:X,onAddGuide:e.unref(Ke),onGuideMove:e.unref(qe),onGuideRemove:e.unref(Fe),onZoom:Ce,onCloneElement:jt},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(Vv,{element:e.unref(C),"template-data":e.unref(f),fields:e.unref(B),"table-selection":e.unref(le),"record-history":e.unref(Ne),collapsed:e.unref(n),"multi-page":e.unref(se).length>1,"active-tab":Qe.value,"onUpdate:activeTab":ie[8]||(ie[8]=Ve=>Qe.value=Ve),onDeleteElement:e.unref(S),"onUpdate:templateData":pe,onToggleCollapse:e.unref(s)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode($v,{coordinate:Ze.value,scale:e.unref(v),"element-count":e.unref(N).length,"selected-count":e.unref(Y).size,paper:g.value,dirty:e.unref(u)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(ut,{modelValue:tt.value,"onUpdate:modelValue":ie[9]||(ie[9]=Ve=>tt.value=Ve),fields:e.unref(B),expression:mt.value,"onUpdate:expression":qt},null,8,["modelValue","fields","expression"]),e.createVNode(Gv,{visible:c.value,onClose:ie[10]||(ie[10]=Ve=>c.value=!1)},null,8,["visible"])],2))}}),af=Ee(nf,[["__scopeId","data-v-4c3c139f"]]),rf={key:0,class:"print-html-preview-error"},sf={key:1,class:"print-html-preview-loading"},df={key:2,class:"print-html-preview-zoom"},cf=["title","onClick"],uf=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(t,{expose:l,emit:o}){const i=t,d=o,c=e.ref(),a=e.ref(),n=e.ref(!1),r=e.ref("");let s=0;const u=e.computed(()=>p.resolvePrinterDpi(i.templateJson)),k=e.ref(0),v=e.computed(()=>p.zoomPresets(u.value,k.value,p.paperWidthPx(i.templateJson))),y=e.ref(p.defaultZoomKey(u.value)),h=e.computed(()=>p.zoomValueOf(v.value,y.value));function m(){k.value=a.value?.clientWidth??0}function E(){y.value=p.resolveZoomKey(v.value,y.value,u.value)}function f(){p.applyPreviewViewZoom(c.value?.contentWindow?.document,h.value)}function N(){m(),f()}async function B(){if(!i.templateJson){r.value="",n.value=!1;return}const C=++s;n.value=!0,r.value="";try{const{html:b,pageCount:P,copies:ae}=await Ge.renderHtmlPages(i.templateJson,i.printData,i.baseUrl,Ge.browserCodeRenderer,{fontBaseUrl:i.fontBaseUrl});if(C!==s)return;const q=c.value?.contentWindow?.document;q&&(q.open(),q.write(b),q.close()),m(),E(),f(),d("rendered",P,ae)}catch(b){if(C!==s)return;r.value=b instanceof Error?b.message:"未知错误",d("error",r.value)}finally{C===s&&(n.value=!1)}}function Q(){const C=c.value?.contentWindow;C&&(C.focus(),C.print())}e.watch(()=>[i.templateJson,i.printData,i.baseUrl,i.fontBaseUrl],()=>{B()},{immediate:!0,deep:!0}),e.watch(h,()=>f()),e.onMounted(()=>{m(),E(),f(),window.addEventListener("resize",N)}),e.onBeforeUnmount(()=>{s++,window.removeEventListener("resize",N)});function Y(C){v.value.some(b=>b.key===C)&&(y.value=C)}return l({print:Q,rerender:B,setViewZoom:Y,zoomKey:y,presets:v}),(C,b)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"print-html-preview"},[r.value?(e.openBlock(),e.createElementBlock("div",rf,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(r.value),1)])):n.value?(e.openBlock(),e.createElementBlock("div",sf,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:c,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!n.value&&!r.value]]),t.templateJson&&!n.value&&!r.value?(e.openBlock(),e.createElementBlock("div",df,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,P=>(e.openBlock(),e.createElementBlock("button",{key:P.key,type:"button",class:e.normalizeClass(["print-html-preview-zoom-btn",{active:P.key===y.value}]),title:P.tip,onClick:ae=>y.value=P.key},e.toDisplayString(P.label),11,cf))),128)),b[0]||(b[0]=e.createElementVNode("span",{class:"print-html-preview-zoom-note"},"仅屏幕缩放,打印不受影响",-1))])):e.createCommentVNode("",!0)],512))}}),mf=Ee(uf,[["__scopeId","data-v-769847cd"]]);Object.defineProperty(exports,"DEFAULT_DEMO_DATA",{enumerable:!0,get:()=>p.DEFAULT_DEMO_DATA});Object.defineProperty(exports,"getDemoData",{enumerable:!0,get:()=>p.getDemoData});Object.defineProperty(exports,"browserCodeRenderer",{enumerable:!0,get:()=>Ge.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Ge.renderHtmlPages});exports.FONT_CATALOG_KEY=kt;exports.PrintDesigner=af;exports.PrintHtmlPreview=mf;exports.TOOLBAR_OVERFLOW=Vt;exports.UPLOAD_DESIGN_BACKGROUND_KEY=Et;exports.UPLOAD_IMAGE_KEY=yt;exports.createDefaultTemplate=Je;exports.createOverflowUnitDirective=wt;exports.emptyToolbarOverflow=It;exports.provideToolbarOverflow=Ut;exports.toRuntimePool=st;exports.useToolbarOverflow=Nt;