@worm-vue3-print/canvas 1.3.6 → 1.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) 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 +1 -1
  14. package/dist/components/PrintDesigner.vue.d.ts +1 -1
  15. package/dist/components/PrintHtmlPreview.vue.d.ts +1 -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 +4 -1
  20. package/dist/components/ToolbarMore.vue.d.ts +9 -0
  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 +3 -1
  25. package/dist/components/elements/CellImage.vue.d.ts +6 -1
  26. package/dist/components/elements/HtmlElement.vue.d.ts +1 -1
  27. package/dist/components/elements/ImageElement.vue.d.ts +1 -1
  28. package/dist/components/elements/LineElement.vue.d.ts +1 -1
  29. package/dist/components/elements/LongTextElement.vue.d.ts +1 -1
  30. package/dist/components/elements/PageNumberElement.vue.d.ts +1 -1
  31. package/dist/components/elements/QrcodeElement.vue.d.ts +1 -1
  32. package/dist/components/elements/ShapeElement.vue.d.ts +1 -1
  33. package/dist/components/elements/TableContextMenu.vue.d.ts +1 -1
  34. package/dist/components/elements/TableElement.vue.d.ts +1 -1
  35. package/dist/components/elements/TextElement.vue.d.ts +1 -1
  36. package/dist/components/property/AdvancedGroup.vue.d.ts +1 -1
  37. package/dist/components/property/AppearanceGroup.vue.d.ts +1 -1
  38. package/dist/components/property/BindingControl.vue.d.ts +1 -1
  39. package/dist/components/property/BorderBgGroup.vue.d.ts +1 -1
  40. package/dist/components/property/CodeGroup.vue.d.ts +1 -1
  41. package/dist/components/property/CropAnchorField.vue.d.ts +35 -0
  42. package/dist/components/property/DesignBackgroundConfig.vue.d.ts +1 -1
  43. package/dist/components/property/FontSelect.vue.d.ts +1 -1
  44. package/dist/components/property/ImageContentUpload.vue.d.ts +1 -1
  45. package/dist/components/property/PaginationGroup.vue.d.ts +1 -1
  46. package/dist/components/property/PositionSizeGroup.vue.d.ts +1 -1
  47. package/dist/components/property/PropertyGroup.vue.d.ts +1 -1
  48. package/dist/components/property/PropertySearch.vue.d.ts +1 -1
  49. package/dist/components/property/StepperInput.vue.d.ts +1 -1
  50. package/dist/components/property/TableCellGroup.vue.d.ts +1 -1
  51. package/dist/components/property/TableRowGroup.vue.d.ts +1 -1
  52. package/dist/components/property/TableSettingsGroup.vue.d.ts +1 -1
  53. package/dist/components/property/TilingConfig.vue.d.ts +1 -1
  54. package/dist/composables/useAdsorb.d.ts +1 -1
  55. package/dist/composables/useAdsorbManager.d.ts +1 -1
  56. package/dist/composables/useClipboard.d.ts +13 -5
  57. package/dist/composables/useDesignerState.d.ts +73 -25
  58. package/dist/composables/useDocumentFontFace.d.ts +1 -1
  59. package/dist/composables/useDrag.d.ts +1 -1
  60. package/dist/composables/useFontCatalog.d.ts +1 -1
  61. package/dist/composables/useFormatPainter.d.ts +1 -1
  62. package/dist/composables/useFormatToolbar.d.ts +1 -1
  63. package/dist/composables/useGuides.d.ts +1 -1
  64. package/dist/composables/useHistory.d.ts +1 -1
  65. package/dist/composables/useHostAdapter.d.ts +1 -1
  66. package/dist/composables/useSelection.d.ts +1 -1
  67. package/dist/composables/useShrinkFit.d.ts +1 -1
  68. package/dist/composables/useStudioChrome.d.ts +1 -1
  69. package/dist/composables/useTableSelection.d.ts +1 -1
  70. package/dist/composables/useToolbarOverflow.d.ts +51 -0
  71. package/dist/help-content/changelog.d.ts +1 -1
  72. package/dist/help-content/faq.d.ts +1 -1
  73. package/dist/help-content/features.d.ts +1 -1
  74. package/dist/help-content/getting-started.d.ts +1 -1
  75. package/dist/help-content/index.d.ts +1 -1
  76. package/dist/help-content/shortcuts.d.ts +1 -1
  77. package/dist/index.cjs +55 -8
  78. package/dist/index.d.ts +3 -1
  79. package/dist/index.js +5872 -5211
  80. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -1,9 +1,9 @@
1
1
  /*!
2
- * @worm-vue3-print/canvas v1.3.6
2
+ * @worm-vue3-print/canvas v1.3.8
3
3
  * Copyright (c) 2026 worm <liu_long_qqcom@qq.com>
4
4
  * SPDX-FileCopyrightText: 2026 worm <liu_long_qqcom@qq.com>
5
5
  * SPDX-License-Identifier: MIT
6
- */"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),he=require("@worm-vue3-print/core"),E=require("@worm-vue3-print/core/designer"),ie=require("lucide-vue-next"),Ie=require("@worm-vue3-print/core/browser"),zt=require("jsbarcode"),At=require("qrcode"),Wt=require("dompurify"),Je=Symbol("selected-ids"),Pt=Symbol("preview-ids");function Gt(o){const r=e.ref(new Set),t=e.ref(new Set),s=e.computed(()=>o.value.filter(g=>r.value.has(g.id))),n=e.computed(()=>r.value.size>0);function l(g,h=!1){if(h){const R=new Set(r.value);R.has(g)?R.delete(g):R.add(g),r.value=R}else r.value=new Set([g])}function a(){r.value=new Set}function i(g){r.value=new Set(g)}function d(g){t.value=new Set(g)}function m(){t.value=new Set}function c(){r.value=new Set(t.value),t.value=new Set}function f(){const g=s.value;if(g.length===0)return null;let h=1/0,R=1/0,C=-1/0,v=-1/0;return g.forEach(p=>{h=Math.min(h,p.options.left),R=Math.min(R,p.options.top),C=Math.max(C,p.options.left+p.options.width),v=Math.max(v,p.options.top+p.options.height)}),{left:h,top:R,width:C-h,height:v-R}}return{selectedIds:r,selectedElements:s,hasSelection:n,select:l,clearSelection:a,selectAll:i,getSelectionBounds:f,previewIds:t,setPreview:d,clearPreview:m,commitPreview:c}}function Kt(){const o=e.ref(null);function r(n){o.value=n.map(l=>({options:{...l.options},printElementType:{...l.printElementType}}))}function t(n=10){if(!o.value)return null;const l=new Map;for(const i of o.value){const d=i.options.groupId;d&&l.set(d,(l.get(d)??0)+1)}const a=new Map;for(const[i,d]of l)a.set(i,d>=2?E.generateGroupId():void 0);return o.value.map(i=>({id:E.generateId(),options:{...i.options,left:i.options.left+n,top:i.options.top+n,groupId:i.options.groupId?a.get(i.options.groupId):void 0},printElementType:{...i.printElementType}}))}function s(){return o.value!==null&&o.value.length>0}return{clipboard:o,copy:r,paste:t,hasData:s}}function qt(o){const t=e.ref([]),s=e.ref([]),n=e.ref(!1),l=e.ref(!1);function a(){n.value=t.value.length>0,l.value=s.value.length>0}function i(h){const R={elements:JSON.parse(JSON.stringify(h?.elements??[])),templateData:JSON.parse(JSON.stringify(h?.templateData??{}))};return h?.pages&&(R.pages=JSON.parse(JSON.stringify(h.pages)),h.activePageIndex!==void 0&&(R.activePageIndex=h.activePageIndex)),R}function d(h){return i(h)}function m(h){t.value.push(d(h)),s.value=[],t.value.length>50&&t.value.shift(),a()}function c(h){if(t.value.length===0)return null;const R=t.value.pop();return s.value.push(h?d(h):i(R)),a(),t.value.length>0?i(t.value[t.value.length-1]):null}function f(h){if(s.value.length===0)return null;const R=s.value.pop();return t.value.push(h?d(h):i(R)),a(),i(R)}function g(){t.value=[],s.value=[],a()}return{push:m,undo:c,redo:f,canUndo:n,canRedo:l,clear:g}}const mt="开启拼版后只能有一个设计页面";function Pe(){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 Xe(o){const r=(t,s)=>(t??[]).map(n=>{const l={...n.options};return(n.printElementType?.type??n.type)==="table"&&E.syncTableElementSize(l),{id:n.id||E.generateId(),zone:s,options:l,printElementType:{...n.printElementType}}});return{...o,margins:{...o.margins},header:{height:o.header?.height??10,elements:[]},footer:{height:o.footer?.height??10,elements:[]},guides:[...o.guides??[]],elements:[...r(o.elements??[],"content"),...r(o.header?.elements??[],"header"),...r(o.footer?.elements??[],"footer")]}}function yt(o){const r=(s,n)=>{const l=Xe(E.normalizeTemplateUnits(s));return l.name||(l.name=`页面 ${n+1}`),l};if(!o)return[r(Pe(),0)];const t=Array.isArray(o.pages)?o.pages:[o];return t.length?t.map(r):[r(Pe(),0)]}function kt(o){const r=o.elements,t=s=>r.filter(n=>(n.zone||"content")===s).map(n=>({id:n.id,type:n.printElementType.type,options:{...n.options},printElementType:{...n.printElementType}}));return{unit:"mm",...o,header:{...o.header,elements:t("header")},footer:{...o.footer,elements:t("footer")},elements:t("content"),guides:[...o.guides??[]]}}function Yt(o={}){const r=e.ref(100),t=e.ref(!0),s=e.ref(!0),n=e.ref(!1),l=e.ref(!0),a=e.ref(yt(o.initialTemplate)),i=e.ref(0),d=e.ref(a.value[0]??Xe(Pe())),m=e.computed(()=>a.value.some(H=>H.tiling?.enabled===!0));function c(){return m.value?(alert(mt),!0):!1}function f(){a.value[i.value]=d.value}function g(H){H<0||H>=a.value.length||(f(),i.value=H,d.value=a.value[H],fe())}const h=e.computed({get:()=>d.value.elements,set:H=>{d.value.elements=H}}),R=e.ref(o.initialFields||[]),{selectedIds:C,selectedElements:v,select:p,clearSelection:B,selectAll:_,previewIds:ne,setPreview:G,clearPreview:J,commitPreview:b}=Gt(h),{group:W,ungroup:j,getGroupedIds:U}=E.useGroup(),{copy:y,paste:M,hasData:N}=Kt(),{align:O}=E.useAlign(),{push:A,undo:k,redo:z,canUndo:u,canRedo:x}=qt(),Y=e.computed(()=>{if(C.value.size===0)return null;const H=C.value.values().next().value;return h.value.find(le=>le.id===H)||null}),be=e.ref(null);function ge(H){be.value=H}function fe(){B(),ge(null)}function se(){return{elements:h.value.map(H=>({id:H.id,zone:H.zone,options:JSON.parse(JSON.stringify(H.options)),printElementType:{...H.printElementType}})),templateData:{paperSize:d.value.paperSize,orientation:d.value.orientation,outputRotation:d.value.outputRotation,margins:{...d.value.margins},header:{height:d.value.header.height,elements:[]},footer:{height:d.value.footer.height,elements:[]},elements:[],customWidth:d.value.customWidth,customHeight:d.value.customHeight,watermark:d.value.watermark?{...d.value.watermark}:void 0,guides:[...d.value.guides??[]]},pages:JSON.parse(JSON.stringify(a.value)),activePageIndex:i.value}}function q(){A(se())}function S(H){return H.pages?.[H.activePageIndex??0]?.elements??H.elements}function D(){const H=k(se());H?.pages?(a.value=H.pages,i.value=H.activePageIndex??0,d.value=a.value[i.value]??a.value[0],fe()):H?.templateData&&(d.value={...H.templateData,elements:H.elements})}function K(){const H=z(se());H?.pages?(a.value=H.pages,i.value=H.activePageIndex??0,d.value=a.value[i.value]??a.value[0],fe()):H?.templateData&&(d.value={...H.templateData,elements:H.elements})}function Z(){y(v.value)}function te(){y(v.value),me()}function pe(){const H=M();H&&H.length>0&&(h.value.push(...H),q())}function T(){y(v.value);const H=M();H&&H.length>0&&(H.forEach(le=>{le.options.left+=5,le.options.top+=5}),h.value.push(...H),p(H[0].id,!1),q())}function $(){r.value=100}const I=e.computed(()=>N());let ee=!1,oe=null;const ue=300;function L(H,le){const de=v.value.filter(ke=>!ke.options.locked);de.length!==0&&(de.forEach(ke=>{ke.options.left+=H,ke.options.top+=le}),ee||(ee=!0,q()),oe&&clearTimeout(oe),oe=setTimeout(()=>{ee=!1,oe=null},ue))}function F(){_(h.value.map(H=>H.id))}function V(H){O(v.value,H),q()}function w(H,le=!1){if(le){p(H,!0);return}C.value=new Set(U(h.value,H))}function P(){h.value=W(h.value,C.value),q()}function ae(){h.value=j(h.value,C.value),q()}function me(){C.value.size!==0&&(h.value=h.value.filter(H=>!C.value.has(H.id)),B(),q())}const{setup:ye,cleanup:we}=E.useKeyboard({onMove:L,onDelete:me,onCopy:Z,onPaste:pe,onSelectAll:F,onUndo:D,onRedo:K,onDuplicate:T,onResetZoom:$,onAlignLeft:()=>V("left"),onAlignRight:()=>V("right"),onAlignCenterH:()=>V("vertical"),onAlignTop:()=>V("top"),onAlignBottom:()=>V("bottom"),onGroup:P,onUngroup:ae});let xe=null;function Re(){xe=se()}function _e(){if(!xe)return;const H=new Map(xe.elements.map(Ee=>[Ee.id,Ee]));let le=!1;for(const Ee of h.value){const Be=H.get(Ee.id);if(!Be)continue;(Be.options.left!==Ee.options.left||Be.options.top!==Ee.options.top||Be.options.width!==Ee.options.width||Be.options.height!==Ee.options.height)&&E.finalizeElementZone(Ee,d.value).rejected&&(le=!0)}le&&alert("该元素类型不能放入页眉/页脚");const de=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ke=S(xe).map(de).join("|"),Se=S(se()).map(de).join("|");xe=null,ke!==Se&&q()}function Oe(H,le){const de=E.zoneFromPaperPoint(d.value,le.x,le.y);if(de!=="content"&&!E.ZONE_ALLOWED_TYPES.includes(H.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ke=E.getZoneRects(d.value)[de];return H.zone=de,H.options.left=le.x-ke.left,H.options.top=le.y-ke.top,de!=="content"&&E.clampToZone(H,ke),!0}function et(H,le){const de=E.createRuntimeElement(H);le&&!Oe(de,le)||(h.value.push(de),p(de.id,!1),q())}function tt(H,le){const de=E.createFieldElement(H);le&&!Oe(de,le)||(h.value.push(de),p(de.id,!1),q())}function ot(H){if(C.value.size===0)return;const le=C.value.values().next().value,de=h.value.find(ze=>ze.id===le);if(!de)return;const ke=de.options.zIndex??0,Se=h.value.map(ze=>ze.options.zIndex??0),Ee=Math.max(...Se,0),Be=Math.min(...Se,0);switch(H){case"top":de.options.zIndex=Ee+1;break;case"bottom":de.options.zIndex=Be-1;break;case"up":de.options.zIndex=ke+1;break;case"down":de.options.zIndex=ke-1;break}q()}function nt(H,le){const{width:de,height:ke}=E.getPaperDimensions(d.value),Se=96/25.4;r.value=E.computeFitScale(H,le,de*Se,ke*Se)}function lt(H){if(d.value={...H},a.value[i.value]=d.value,a.value.length>1){const le={paperSize:H.paperSize,orientation:H.orientation,outputRotation:H.outputRotation,customWidth:H.customWidth,customHeight:H.customHeight};for(const de of a.value)Object.assign(de,le)}q()}function We(){return f(),a.value.length<=1?kt(a.value[0]):{version:1,pages:a.value.map(kt)}}function Me(H,le){a.value=yt(H),i.value=0,d.value=a.value[0],le&&(d.value={...d.value,elements:le.map(de=>({...de,id:de.id||E.generateId(),zone:de.zone||"content",options:{...de.options},printElementType:{...de.printElementType}}))},a.value[i.value]=d.value),A(se())}function Ge(){const H=new Set(a.value.map(de=>de.name));let le=a.value.length+1;for(;H.has(`页面 ${le}`);)le++;return`页面 ${le}`}function at(){if(c())return;f();const H=a.value[i.value]??Pe(),le=Xe({...Pe(),paperSize:H.paperSize,orientation:H.orientation,customWidth:H.customWidth,customHeight:H.customHeight,name:Ge()});a.value.push(le),i.value=a.value.length-1,d.value=le,fe(),q()}function it(){if(c())return;f();const H=a.value[i.value],le=JSON.parse(JSON.stringify(H));le.name=`${H.name??`页面 ${i.value+1}`} 副本`,le.elements=le.elements.map(de=>({...de,id:E.generateId()})),a.value.splice(i.value+1,0,le),g(i.value+1),q()}function Ke(H){a.value.length<=1||(f(),a.value.splice(H,1),H<i.value?i.value--:H===i.value&&i.value>=a.value.length&&(i.value=a.value.length-1),d.value=a.value[i.value],fe(),q())}function rt(H,le){a.value[H]&&(a.value[H].name=le)}function st(H,le){if(H===le)return;f();const[de]=a.value.splice(H,1);a.value.splice(le,0,de),i.value=le,d.value=de,fe(),q()}return A(se()),e.onMounted(()=>ye()),e.onUnmounted(()=>{we(),oe&&(clearTimeout(oe),oe=null)}),{scale:r,showRuler:t,showGrid:s,snapToGrid:n,showTableGhostBorder:l,templateData:d,elements:h,fields:R,tilingEnabled:m,pages:a,activePageIndex:i,switchPage:g,addPage:at,duplicatePage:it,deletePage:Ke,renamePage:rt,movePage:st,selectedIds:C,selectedElements:v,selectedElement:Y,select:p,selectElement:w,clearSelection:B,selectAll:F,previewIds:ne,setPreview:G,clearPreview:J,commitPreview:b,hasClipboard:I,copy:Z,paste:pe,cutSelected:te,tableSelection:be,setTableSelection:ge,canUndo:u,canRedo:x,undo:D,redo:K,recordHistory:q,alignSelected:V,groupSelected:P,ungroupSelected:ae,deleteSelected:me,duplicateSelected:T,resetZoom:$,dragStart:Re,dragStop:_e,addElement:et,addFieldElement:tt,moveLayer:ot,fitToWindow:nt,updateTemplateData:lt,getTemplateJson:We,loadTemplate:Me}}const Ce=Symbol("mixed"),pt=new Set(["text","longText"]);function jt(o){const{elements:r,selectedIds:t,tableSelection:s,recordHistory:n}=o,l=e.computed(()=>r.value.filter(N=>t.value.has(N.id)&&!N.options.locked)),a=e.computed(()=>{const N=s.value;return N?r.value.find(O=>O.id===N.elementId)??null:null}),i=e.computed(()=>s.value&&a.value?"cells":l.value.length>0||t.value.size>0?"elements":"none"),d=e.computed(()=>{const N=s.value,O=a.value?.options.tableRows;if(!N||!O)return[];const A=[];for(let k=N.r1;k<=N.r2;k++)for(let z=N.c1;z<=N.c2;z++){const u=O[k]?.cells[z];u&&!u.merged&&A.push(u)}return A}),m=e.computed(()=>l.value.filter(N=>pt.has(N.printElementType.type))),c=e.computed(()=>i.value==="cells"?d.value.length>0:i.value!=="elements"?!1:l.value.length>0&&m.value.length===l.value.length),f=e.computed(()=>i.value==="cells"?d.value:m.value.map(N=>N.options));function g(N){if(!N.length)return;const O=N[0];return N.every(A=>A===O)?O:Ce}const h=(N,O)=>(N??"").split(/\s+/).includes(O),R=e.computed(()=>{const N=f.value;if(!N.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 O=N.map(k=>k.fontWeight==="bold"||k.fontWeight==="bolder"),A=N.map(k=>k.textDecoration);return{fontFamily:g(N.map(k=>k.fontFamily)),fontSize:g(N.map(k=>k.fontSize)),color:g(N.map(k=>k.color)),backgroundColor:g(N.map(k=>k.backgroundColor)),textAlign:g(N.map(k=>i.value==="cells"?k.align:k.textAlign)),verticalAlign:g(N.map(k=>i.value==="cells"?k.valign:k.verticalAlign)),bold:O.every(Boolean)?!0:O.some(Boolean)?Ce:!1,underline:A.map(k=>h(k,"underline")).every(Boolean)?!0:A.some(k=>h(k,"underline"))?Ce:!1,strike:A.map(k=>h(k,"line-through")).every(Boolean)?!0:A.some(k=>h(k,"line-through"))?Ce:!1}});function C(N){const O=d.value;O.length&&(O.forEach(N),n())}function v(N){if(i.value==="cells"){C(x=>{"fontFamily"in N&&(x.fontFamily=N.fontFamily),"fontSize"in N&&(x.fontSize=N.fontSize),"color"in N&&(x.color=N.color),"backgroundColor"in N&&(x.backgroundColor=N.backgroundColor),"textAlign"in N&&(x.align=N.textAlign),"verticalAlign"in N&&(x.valign=N.verticalAlign)});return}const O=m.value,A=l.value,z=["fontFamily","fontSize","color","textAlign","verticalAlign"].some(x=>x in N),u="backgroundColor"in N;!(O.length&&z)&&!(A.length&&u)||(O.forEach(x=>{const Y=x.options;"fontFamily"in N&&(Y.fontFamily=N.fontFamily),"fontSize"in N&&(Y.fontSize=N.fontSize),"color"in N&&(Y.color=N.color),"textAlign"in N&&(Y.textAlign=N.textAlign),"verticalAlign"in N&&(Y.verticalAlign=N.verticalAlign)}),u&&A.forEach(x=>{x.options.backgroundColor=N.backgroundColor}),n())}function p(){if(i.value==="cells"){const A=R.value.bold!==!0;C(k=>{k.fontWeight=A?"bold":void 0});return}const N=R.value.bold!==!0,O=m.value;O.length&&(O.forEach(A=>{A.options.fontWeight=N?"bold":"normal"}),n())}function B(N){if(i.value==="cells")return;const O=m.value;if(!O.length)return;const A=R.value[N==="underline"?"underline":"strike"]!==!0;O.forEach(k=>{const z=(k.options.textDecoration??"").split(/\s+/).filter(Boolean),u=z.indexOf(N);A&&u<0&&z.push(N),!A&&u>=0&&z.splice(u,1),k.options.textDecoration=z.length?z.join(" "):void 0}),n()}const _=()=>B("underline"),ne=()=>B("line-through");function G(N,O){const A=l.value;A.length&&(A.forEach(k=>{k.options.borders=void 0,N==="none"?k.options.borderWidth=0:(k.options.borderWidth=O.width,k.options.borderStyle=O.style,k.options.borderColor=O.color)}),n())}function J(N,O){const A=s.value,k=a.value?.options.tableRows;!A||!k||(E.applyBorderPreset(k,{r1:A.r1,c1:A.c1,r2:A.r2,c2:A.c2},N,O),n())}function b(N,O,A){C(k=>{const z={...k.borders??{}};for(const u of N)A?z[u]={...O}:delete z[u];k.borders=z})}const W=["top","right","bottom","left"],j=e.computed(()=>{if(i.value!=="cells")return null;const N=d.value;if(!N.length)return null;const O={};for(const A of W){const k=N.map(z=>!!z.borders?.[A]);O[A]=k.every(Boolean)?!0:k.some(Boolean)?Ce:!1}return O});function U(N,O){const A=j.value?.[N]!==!0;b([N],O,A)}const y=e.computed(()=>{if(i.value!=="elements")return null;const N=l.value;if(!N.length)return null;const O={};for(const A of W){const k=N.map(z=>!!z.options.borders?.[A]);O[A]=k.every(Boolean)?!0:k.some(Boolean)?Ce:!1}return O});function M(N,O){const A=l.value;if(!A.length)return;const k=y.value?.[N]!==!0;A.forEach(z=>{const u={...z.options.borders??{}};k?u[N]={width:O.width,style:O.style,color:O.color}:delete u[N],z.options.borders=u}),n()}return{context:i,fontEditable:c,values:R,applyStyle:v,toggleBold:p,toggleUnderline:_,toggleStrike:ne,applyElementBorder:G,applyCellBorderPreset:J,applyCellBorderEdges:b,cellEdges:j,toggleCellEdge:U,elementEdges:y,toggleElementEdge:M}}const Xt=["fontFamily","fontSize","fontWeight","color","textAlign","verticalAlign","textDecoration"];function Zt(o){const{elements:r,selectedIds:t,recordHistory:s}=o,n=e.ref(!1),l=e.ref(!1),a=e.ref(null);let i=null;const d=e.computed(()=>r.value.filter(C=>t.value.has(C.id)&&!C.options.locked)),m=e.computed(()=>d.value.length===1);function c(C){if(!C)return;const v={};for(const p of E.ELEMENT_BORDER_SIDES){const B=C[p];B&&(v[p]={...B})}return v}function f(C=!1){const v=d.value[0];if(!v)return!1;const p=v.options,B=v.printElementType.type;return i={text:pt.has(B)?Object.fromEntries(Xt.map(_=>[_,p[_]])):null,backgroundColor:p.backgroundColor,border:E.acceptsElementBorder(B)?{borderWidth:p.borderWidth,borderStyle:p.borderStyle,borderColor:p.borderColor,borders:c(p.borders)}:null},a.value=v.id,n.value=!0,l.value=C,!0}function g(){n.value=!1,l.value=!1,a.value=null,i=null}function h(C){const v=i;if(!v||C.options.locked||C.id===a.value)return!1;const p=C.options,B=C.printElementType.type;return v.text&&pt.has(B)&&Object.assign(p,v.text),p.backgroundColor=v.backgroundColor,v.border&&E.acceptsElementBorder(B)&&(p.borderWidth=v.border.borderWidth,p.borderStyle=v.border.borderStyle,p.borderColor=v.border.borderColor,p.borders=c(v.border.borders)),!0}e.watch(t,()=>{if(!n.value||!i)return;const C=d.value;if(!C.length){g();return}let v=!1;C.forEach(p=>{v=h(p)||v}),v&&(s(),l.value||g())});function R(C){if(C.key!=="Escape"||!n.value)return;const v=C.target?.tagName;v==="INPUT"||v==="TEXTAREA"||v==="SELECT"||g()}return document.addEventListener("keydown",R),e.onScopeDispose(()=>document.removeEventListener("keydown",R)),{active:n,locked:l,sourceId:a,capturable:m,capture:f,cancel:g}}let Vt=0;function Jt(){return Vt+=1,`guide-${Vt}`}function Qt(o,r){const t=e.computed(()=>o.value.guides??[]);function s(d){o.value={...o.value,guides:d([...o.value.guides??[]])},r()}function n(d,m){s(c=>(c.push({type:d,position:m,id:Jt()}),c))}function l(d,m){s(c=>c.map(f=>f.id===d?{...f,position:m}:f))}function a(d){s(m=>m.filter(c=>c.id!==d))}function i(){const d=[],m=[];for(const c of t.value)c.type==="vertical"?d.push(c.position):m.push(c.position);return{vertical:d,horizontal:m}}return{guides:t,addGuide:n,moveGuide:l,removeGuide:a,getGuidePositions:i}}const He=Symbol("table-edit"),vt=Symbol("print-upload-image"),ft=Symbol("print-upload-design-background"),gt=Symbol("print-font-catalog"),_t=e.computed(()=>[]);function eo(o){return{catalog:e.computed(()=>{const t=[],s=new Set;for(const n of e.toValue(o)??[]){const l=n?.family?.trim();if(!l)continue;const a=l.toLowerCase();if(s.has(a))continue;s.add(a);const i=n.label?.trim();t.push(i?{family:l,label:i}:{family:l})}return t})}}function to(){return e.inject(gt,_t)}function Nt(o,r){const t=r?.trim().toLowerCase();if(t)return o.find(s=>s.family.trim().toLowerCase()===t)}function wt(o){return o.label?`${o.label}(${o.family})`:o.family}function Fe(o){return o.toLowerCase().replace(/\s+/g,"")}function Ct(o,r){if(o===r)return 0;if(o.startsWith(r))return 1;if(o.includes(r))return 2;let t=0;for(const s of o)if(s===r[t]&&t++,t===r.length)return 3;return-1}function oo(o,r){const t=Fe(r.trim());return t?o.map((s,n)=>({font:s,index:n,rank:no(s,t)})).filter(s=>s.rank>=0).sort((s,n)=>s.rank-n.rank||s.index-n.index).map(s=>s.font):[...o]}function no(o,r){const t=Ct(Fe(o.family),r);if(!o.label)return t;const s=Ct(Fe(o.label),r);return t<0?s:s<0?t:Math.min(t,s)}const lo="print-designer-font-face";function ao(o){const r=`${lo}-${e.useId()}`;let t;e.watchEffect(()=>{const s=e.toValue(o);if(!s){t?.remove(),t=void 0;return}t||(t=document.createElement("style"),t.id=r,document.head.appendChild(t)),t.textContent=s}),e.onUnmounted(()=>{t?.remove(),t=void 0})}const io=e.defineComponent({__name:"HelpButton",emits:["click"],setup(o){return(r,t)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:t[0]||(t[0]=s=>r.$emit("click"))},[...t[1]||(t[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),ce=(o,r)=>{const t=o.__vccOpts||o;for(const[s,n]of r)t[s]=n;return t},ro=ce(io,[["__scopeId","data-v-80ccab03"]]),so=["disabled","data-test","data-tip"],co=e.defineComponent({__name:"ToolbarDropdown",props:{disabled:{type:Boolean,default:!1},testId:{default:"dd-trigger"},tip:{},panelClass:{}},setup(o){const r=o,t=e.ref(!1),s=e.ref(null);function n(l){t.value&&(s.value?.contains(l.target)||(t.value=!1))}return e.watch(()=>r.disabled,l=>{l&&(t.value=!1)}),e.onMounted(()=>document.addEventListener("pointerdown",n)),e.onUnmounted(()=>document.removeEventListener("pointerdown",n)),(l,a)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapRef",ref:s,class:"tb-dd"},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["tb-dd-trigger",{on:t.value}]),disabled:o.disabled,"data-test":o.testId,"data-tip":o.tip,onClick:a[0]||(a[0]=i=>t.value=!t.value)},[e.renderSlot(l.$slots,"trigger",{},void 0,!0),e.createVNode(e.unref(ie.ChevronDown),{size:12,class:e.normalizeClass(["tb-dd-arrow",{up:t.value}])},null,8,["class"])],10,so),t.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tb-dd-panel",o.panelClass])},[e.renderSlot(l.$slots,"default",{},void 0,!0)],2)):e.createCommentVNode("",!0)],512))}}),Ze=ce(co,[["__scopeId","data-v-74fd00c6"]]),uo={class:"designer-toolbar"},mo={class:"tb-group"},po={class:"tb-title"},vo={class:"tb-title-name"},fo={class:"tb-group"},go=["disabled"],ho=["disabled"],bo={class:"tb-group"},Eo={class:"tb-menu","data-test":"arrange-panel"},yo={class:"tb-menu-grid"},ko=["disabled"],Vo=["disabled"],No=["disabled"],wo=["disabled"],Co=["disabled"],So=["disabled"],xo=["disabled"],$o=["disabled"],Bo={class:"tb-menu-grid"},Do=["disabled"],To=["disabled"],Mo=["disabled"],zo=["disabled"],Ao={class:"tb-menu-grid"},Po=["disabled"],Ro=["disabled"],Lo={class:"tb-menu tb-menu-rows","data-test":"view-panel"},Uo={class:"tb-group"},Io={class:"tb-zoom"},Fo={class:"tb-group"},Ho=["disabled","data-tip"],Oo=["disabled","data-tip"],Wo=["disabled","data-tip"],Go={key:0,class:"tb-group"},Ko={class:"tb-group"},qo=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(o){const r=e.useModel(o,"scale"),t=o,s=e.computed(()=>t.clipboardDisabled?"粘贴 (Ctrl+V),需选中元素":t.hasClipboard?"粘贴 (Ctrl+V)":"粘贴 (Ctrl+V),剪贴板为空");return(n,l)=>(e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("div",mo,[l[30]||(l[30]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-019401e4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-019401e4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-019401e4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-019401e4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-019401e4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-019401e4></line></svg></span>',1)),e.createElementVNode("div",po,[e.createElementVNode("span",vo,e.toDisplayString(o.isEdit?"编辑模板":"新建模板"),1),l[29]||(l[29]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",fo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canUndo,onClick:l[0]||(l[0]=a=>n.$emit("undo")),"data-tip":"撤销"},[e.createVNode(e.unref(ie.Undo2),{size:15})],8,go),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.canRedo,onClick:l[1]||(l[1]=a=>n.$emit("redo")),"data-tip":"重做"},[e.createVNode(e.unref(ie.Redo2),{size:15})],8,ho)]),e.renderSlot(n.$slots,"default",{},void 0,!0),e.createElementVNode("div",bo,[e.createVNode(Ze,{"test-id":"arrange-dd",tip:"排列"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ie.Layers),{size:15}),l[31]||(l[31]=e.createElementVNode("span",{class:"tb-btn-text"},"排列",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Eo,[l[32]||(l[32]=e.createElementVNode("div",{class:"tb-menu-label"},"对齐 / 分布",-1)),e.createElementVNode("div",yo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[2]||(l[2]=a=>n.$emit("align","left")),"data-tip":"左对齐"},[e.createVNode(e.unref(ie.AlignStartVertical),{size:15})],8,ko),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[3]||(l[3]=a=>n.$emit("align","right")),"data-tip":"右对齐"},[e.createVNode(e.unref(ie.AlignEndVertical),{size:15})],8,Vo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[4]||(l[4]=a=>n.$emit("align","top")),"data-tip":"顶对齐"},[e.createVNode(e.unref(ie.AlignStartHorizontal),{size:15})],8,No),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[5]||(l[5]=a=>n.$emit("align","bottom")),"data-tip":"底对齐"},[e.createVNode(e.unref(ie.AlignEndHorizontal),{size:15})],8,wo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[6]||(l[6]=a=>n.$emit("align","vertical")),"data-tip":"水平居中"},[e.createVNode(e.unref(ie.AlignCenterVertical),{size:15})],8,Co),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[7]||(l[7]=a=>n.$emit("align","horizontal")),"data-tip":"垂直居中"},[e.createVNode(e.unref(ie.AlignCenterHorizontal),{size:15})],8,So),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[8]||(l[8]=a=>n.$emit("align","distributeHor")),"data-tip":"水平分布"},[e.createVNode(e.unref(ie.AlignHorizontalSpaceBetween),{size:15})],8,xo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[9]||(l[9]=a=>n.$emit("align","distributeVer")),"data-tip":"垂直分布"},[e.createVNode(e.unref(ie.AlignVerticalSpaceBetween),{size:15})],8,$o)]),l[33]||(l[33]=e.createElementVNode("div",{class:"tb-menu-label"},"层级",-1)),e.createElementVNode("div",Bo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasSelection,onClick:l[10]||(l[10]=a=>n.$emit("move-layer","top")),"data-tip":"置顶"},[e.createVNode(e.unref(ie.ArrowUpToLine),{size:15})],8,Do),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasSelection,onClick:l[11]||(l[11]=a=>n.$emit("move-layer","up")),"data-tip":"上移一层"},[e.createVNode(e.unref(ie.ArrowUp),{size:15})],8,To),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasSelection,onClick:l[12]||(l[12]=a=>n.$emit("move-layer","down")),"data-tip":"下移一层"},[e.createVNode(e.unref(ie.ArrowDown),{size:15})],8,Mo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasSelection,onClick:l[13]||(l[13]=a=>n.$emit("move-layer","bottom")),"data-tip":"置底"},[e.createVNode(e.unref(ie.ArrowDownToLine),{size:15})],8,zo)]),l[34]||(l[34]=e.createElementVNode("div",{class:"tb-menu-label"},"组合",-1)),e.createElementVNode("div",Ao,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.hasMultiSelection,onClick:l[14]||(l[14]=a=>n.$emit("group")),"data-tip":"组合 (Ctrl+G)"},[e.createVNode(e.unref(ie.Group),{size:15})],8,Po),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!o.selectedElementHasGroup,onClick:l[15]||(l[15]=a=>n.$emit("ungroup")),"data-tip":"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ie.Ungroup),{size:15})],8,Ro)])])]),_:1}),e.createVNode(Ze,{"test-id":"view-dd",tip:"视图"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ie.Eye),{size:15}),l[35]||(l[35]=e.createElementVNode("span",{class:"tb-btn-text"},"视图",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Lo,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:o.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:l[16]||(l[16]=a=>n.$emit("toggle-ruler"))},[...l[36]||(l[36]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:o.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:l[17]||(l[17]=a=>n.$emit("toggle-grid"))},[...l[37]||(l[37]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:o.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:l[18]||(l[18]=a=>n.$emit("toggle-table-ghost-border"))},[...l[38]||(l[38]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:o.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:l[19]||(l[19]=a=>n.$emit("toggle-snap"))},[...l[39]||(l[39]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2)])]),_:1})]),e.createElementVNode("div",Uo,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:l[20]||(l[20]=a=>n.$emit("fit-window")),"data-tip":"适应窗口"},[e.createVNode(e.unref(ie.Maximize),{size:15})]),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:l[21]||(l[21]=a=>n.$emit("zoom",-10)),"data-tip":"缩小"},[e.createVNode(e.unref(ie.ZoomOut),{size:15})]),e.createElementVNode("span",Io,e.toDisplayString(r.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:l[22]||(l[22]=a=>n.$emit("zoom",10)),"data-tip":"放大"},[e.createVNode(e.unref(ie.ZoomIn),{size:15})])]),e.createElementVNode("div",Fo,[e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"copy",disabled:o.clipboardDisabled,onClick:l[23]||(l[23]=a=>n.$emit("copy")),"data-tip":o.clipboardDisabled?"复制 (Ctrl+C),需选中元素":"复制 (Ctrl+C)"},[e.createVNode(e.unref(ie.Copy),{size:15})],8,Ho),e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"paste",disabled:o.clipboardDisabled||!o.hasClipboard,onClick:l[24]||(l[24]=a=>n.$emit("paste")),"data-tip":s.value},[e.createVNode(e.unref(ie.ClipboardPaste),{size:15})],8,Oo),e.createElementVNode("button",{class:"tb-btn tb-icon danger","data-test":"delete",disabled:o.clipboardDisabled,onClick:l[25]||(l[25]=a=>n.$emit("delete")),"data-tip":o.clipboardDisabled?"删除 (Delete),需选中元素":"删除 (Delete)"},[e.createVNode(e.unref(ie.Trash2),{size:15})],8,Wo)]),l[40]||(l[40]=e.createElementVNode("div",{class:"tb-spacer"},null,-1)),o.showHelp?(e.openBlock(),e.createElementBlock("div",Go,[e.createVNode(ro,{onClick:l[26]||(l[26]=a=>n.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",Ko,[e.createElementVNode("button",{class:"btn-secondary","data-tip":"预览模板打印效果",onClick:l[27]||(l[27]=a=>n.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary","data-tip":"保存模板",onClick:l[28]||(l[28]=a=>n.$emit("save"))},"保存")])]))}}),Yo=ce(qo,[["__scopeId","data-v-019401e4"]]),jo={class:"font-select"},Xo=["placeholder","disabled","aria-expanded","aria-activedescendant","onKeydown"],Zo=["id","aria-selected","onMousedown"],Jo=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(o,{emit:r}){const t=o,s=r,n=to(),l=`font-select-list-${e.useId()}`,a=e.ref(null),i=e.ref(R(t.modelValue)),d=e.ref(""),m=e.ref(!1),c=e.ref(-1),f=e.computed(()=>{const j=t.modelValue?.trim();return j?Nt(n.value,j)?"":j:""}),g=e.computed(()=>{const j=(t.modelValue??"").trim(),U=(N,O,A,k)=>({kind:N,key:O,label:A,value:k,selected:(k??"")===j}),y=d.value.trim();if(!y){const N=[U("clear","__clear__",t.placeholder)];f.value&&N.push(U("unknown","__unknown__",`${f.value}(未知)`,f.value));for(const O of n.value)N.push(U("font",O.family,wt(O),O.family));return N}const M=oo(n.value,y).map(N=>U("font",N.family,wt(N),N.family));if(!M.length){const N=h(y);M.push(U("free","__free__",`使用「${N}」`,N))}return M});function h(j){const U=Fe(j);return n.value.find(M=>M.label&&Fe(M.label)===U)?.family??j}function R(j){const U=j?.trim();return U?Nt(n.value,U)?.label??U:""}const C=e.computed(()=>m.value&&c.value>=0?`${l}-${c.value}`:void 0);function v(){const j=(t.modelValue??"").trim();return g.value.findIndex(U=>(U.value??"")===j)}function p(){m.value||(m.value=!0,d.value="",c.value=v())}function B(){m.value=!0}function _(){m.value=!0,d.value=i.value,c.value=g.value.length?0:-1}function ne(j){if(!m.value){p();return}const U=g.value.length-1;U<0||(c.value=Math.min(Math.max(c.value+j,0),U),G())}function G(){e.nextTick(()=>{a.value?.children[c.value]?.scrollIntoView?.({block:"nearest"})})}function J(){if(!m.value)return;const j=g.value[c.value];if(j){b(j);return}const U=d.value.trim();if(U){const y=h(U);b({value:y})}}function b(j){i.value=R(j.value),d.value="",m.value=!1,c.value=-1,s("update:model-value",j.value)}function W(){m.value=!1,d.value="",c.value=-1,i.value=R(t.modelValue)}return e.watch(()=>t.modelValue,j=>{i.value=R(j)}),(j,U)=>(e.openBlock(),e.createElementBlock("div",jo,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":U[0]||(U[0]=y=>i.value=y),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:o.placeholder,disabled:o.disabled,"aria-expanded":m.value,"aria-controls":l,"aria-activedescendant":C.value,onFocus:p,onClick:B,onInput:_,onKeydown:[U[1]||(U[1]=e.withKeys(e.withModifiers(y=>ne(1),["prevent"]),["down"])),U[2]||(U[2]=e.withKeys(e.withModifiers(y=>ne(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(J,["prevent"]),["enter"]),e.withKeys(e.withModifiers(W,["prevent"]),["esc"])],onBlur:W},null,40,Xo),[[e.vModelText,i.value]]),m.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:l,ref_key:"listRef",ref:a,class:"font-select-list",role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(y,M)=>(e.openBlock(),e.createElementBlock("li",{id:`${l}-${M}`,key:y.key,class:e.normalizeClass(["font-select-option",{"is-active":M===c.value,"is-muted":y.kind==="unknown"||y.kind==="free"}]),role:"option","aria-selected":y.selected,onMousedown:e.withModifiers(N=>b(y),["prevent"])},e.toDisplayString(y.label),43,Zo))),128))],512)):e.createCommentVNode("",!0)]))}}),ht=ce(Jo,[["__scopeId","data-v-f1aae453"]]),Qo={class:"pd-stepper"},_o=["disabled"],en=["value","placeholder","min","max","step","disabled"],tn=["disabled"],on=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(o,{emit:r}){const t=o,s=r,n=e.computed(()=>{const C=String(t.step),v=C.indexOf(".");return v===-1?0:C.length-v-1});function l(C){return Number.isFinite(C)?Number(C.toFixed(n.value)):0}const a=e.computed(()=>{const C=t.modelValue;if(!(C==null||!Number.isFinite(C)))return l(C)}),i=e.ref(a.value===void 0?"":String(a.value));e.watch(a,C=>{i.value=C===void 0?"":String(C)});const d=e.computed(()=>a.value!==void 0?a.value:t.min!==void 0?t.min:0),m=e.computed(()=>t.min!==void 0&&d.value<=t.min),c=e.computed(()=>t.max!==void 0&&d.value>=t.max);function f(C){let v=l(C);return t.min!==void 0&&v<t.min&&(v=t.min),t.max!==void 0&&v>t.max&&(v=t.max),v}function g(C){if(C<0&&m.value||C>0&&c.value)return;const v=f(d.value+C*t.step);i.value=String(v),s("update:modelValue",v)}function h(C){i.value=C.target.value}function R(){const C=i.value.trim();if(C===""){a.value!==void 0&&(i.value=String(a.value));return}const v=Number(C);if(!Number.isFinite(v)){i.value=a.value===void 0?"":String(a.value);return}const p=f(v);i.value=String(p),p!==a.value&&s("update:modelValue",p)}return(C,v)=>(e.openBlock(),e.createElementBlock("div",Qo,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:m.value||o.disabled,title:"减小","aria-label":"减小",onClick:v[0]||(v[0]=p=>g(-1))},"−",8,_o),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:i.value,placeholder:o.placeholder,min:o.min,max:o.max,step:o.step,disabled:o.disabled,onInput:h,onChange:R,onBlur:R,onKeydown:v[1]||(v[1]=e.withKeys(e.withModifiers(p=>p.target.blur(),["prevent"]),["enter"]))},null,40,en),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:c.value||o.disabled,title:"增大","aria-label":"增大",onClick:v[2]||(v[2]=p=>g(1))},"+",8,tn)]))}}),re=ce(on,[["__scopeId","data-v-627f09cb"]]),nn=["aria-expanded","title"],ln={class:"picker-preview"},an={class:"picker-heading"},rn=["disabled"],sn={class:"preset-color-grid"},dn=["title","aria-label","onClick"],cn=e.defineComponent({__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(!1),l=e.ref(),a=e.ref(),i=e.ref(),d=e.ref({}),m=e.ref(0),c=e.ref(0),f=e.ref(0),g=e.ref("#000000"),h=e.ref(!1),R=e.computed(()=>t.modelValue||"#000000"),C=e.computed(()=>t.modelValue?{background:t.modelValue}:{background:"transparent"}),v=e.computed(()=>Y(ge(m.value,c.value,f.value))),p=e.computed({get:()=>Math.round(m.value),set:q=>J(fe(q),c.value,f.value)});e.watch(()=>t.modelValue,q=>{if(!q){g.value="";return}G(q)},{immediate:!0});function B(q){g.value=q.toUpperCase(),G(q),s("update:modelValue",q)}function _(){t.clearable&&s("update:modelValue","")}function ne(q){const D=q.target.value.trim();if(!D){t.clearable&&s("update:modelValue","");return}u(D)&&(G(D),s("update:modelValue",x(D)))}function G(q){const S=u(q);if(!S)return;const D=be(S.r,S.g,S.b);m.value=D.h,c.value=D.s,f.value=D.v,g.value=x(q).toUpperCase()}function J(q,S,D){m.value=fe(q),c.value=se(S),f.value=se(D),g.value=v.value.toUpperCase(),s("update:modelValue",v.value)}function b(q){q.currentTarget.setPointerCapture(q.pointerId),h.value=!0,U(q)}function W(q){h.value&&U(q)}function j(q){h.value=!1;const S=q.currentTarget;S.hasPointerCapture(q.pointerId)&&S.releasePointerCapture(q.pointerId)}function U(q){const S=i.value;if(!S)return;const D=S.getBoundingClientRect(),K=se((q.clientX-D.left)/D.width),Z=se(1-(q.clientY-D.top)/D.height);J(m.value,K,Z)}function y(q){const S=q.shiftKey?.1:.02;let D=!0;q.key==="ArrowLeft"?J(m.value,c.value-S,f.value):q.key==="ArrowRight"?J(m.value,c.value+S,f.value):q.key==="ArrowUp"?J(m.value,c.value,f.value+S):q.key==="ArrowDown"?J(m.value,c.value,f.value-S):D=!1,D&&q.preventDefault()}function M(){n.value?O():N()}async function N(){const q=l.value;if(!q)return;t.modelValue&&G(R.value),n.value=!0,await e.nextTick();const S=q.getBoundingClientRect(),D=190,K=a.value?.offsetHeight??216,Z=8,te=Math.min(S.left,window.innerWidth-D-Z),pe=S.bottom+6,T=pe+K>window.innerHeight-Z?Math.max(Z,S.top-K-6):pe;d.value={left:`${Math.max(Z,te)}px`,top:`${T}px`}}function O(){n.value=!1}function A(q){const S=q.target;l.value?.contains(S)||a.value?.contains(S)||O()}function k(){n.value&&O()}function z(q){q.key==="Escape"&&n.value&&O()}function u(q){const S=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(q.trim());if(!S)return null;const D=S[1],K=D.length===3?D.split("").map(Z=>Z+Z).join(""):D;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 x(q){const S=u(q);return S?Y(S):"#000000"}function Y({r:q,g:S,b:D}){return`#${[q,S,D].map(K=>Math.round(se(K/255)*255).toString(16).padStart(2,"0")).join("")}`}function be(q,S,D){const K=q/255,Z=S/255,te=D/255,pe=Math.max(K,Z,te),T=Math.min(K,Z,te),$=pe-T;let I=0;return $!==0&&(pe===K?I=(Z-te)/$%6:pe===Z?I=(te-K)/$+2:I=(K-Z)/$+4,I*=60,I<0&&(I+=360)),{h:I,s:pe===0?0:$/pe,v:pe}}function ge(q,S,D){const K=D*S,Z=(q%360+360)%360/60,te=K*(1-Math.abs(Z%2-1)),[pe,T,$]=Z<1?[K,te,0]:Z<2?[te,K,0]:Z<3?[0,K,te]:Z<4?[0,te,K]:Z<5?[te,0,K]:[K,0,te],I=D-K;return{r:(pe+I)*255,g:(T+I)*255,b:($+I)*255}}function fe(q){return((Number.isFinite(q)?q:0)%360+360)%360}function se(q){return Math.min(1,Math.max(0,Number.isFinite(q)?q:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",A,!0),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),document.addEventListener("keydown",z)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",A,!0),window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k),document.removeEventListener("keydown",z)}),(q,S)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",{ref_key:"triggerRef",ref:l,type:"button",class:"preset-color-trigger","aria-expanded":n.value,"aria-haspopup":"dialog",title:o.modelValue||"自动",onClick:M},[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(C.value)},null,4)],8,nn),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[n.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:a,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(d.value),onPointerdown:S[2]||(S[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",ln,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!o.modelValue}]),style:e.normalizeStyle(o.modelValue?{background:v.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[0]||(S[0]=D=>g.value=D),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:ne},null,544),[[e.vModelText,g.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:i,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(m.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:b,onPointermove:W,onPointerup:j,onPointercancel:j,onKeydown:y},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${c.value*100}%`,top:`${(1-f.value)*100}%`,background:v.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S[1]||(S[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",an,[S[4]||(S[4]=e.createElementVNode("span",null,"常用颜色",-1)),o.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!o.modelValue,title:"清除选中的颜色",onClick:_},[...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,rn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",sn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E.PRESET_COLORS),D=>(e.openBlock(),e.createElementBlock("button",{key:D,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!o.modelValue&&D.toLowerCase()===o.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:D}),title:D,"aria-label":D,onClick:K=>B(D)},null,14,dn))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),Ne=ce(cn,[["__scopeId","data-v-12290e7e"]]),un={class:"format-toolbar"},mn={class:"ft-group"},pn=["disabled","data-tip"],vn={class:"ft-group"},fn={class:"ft-font"},gn={class:"ft-size","data-test":"font-size"},hn={class:"ft-group"},bn=["disabled","data-tip"],En=["disabled","data-tip"],yn=["disabled","data-tip"],kn={class:"ft-group"},Vn=["title"],Nn={class:"ft-glyph"},wn={class:"ft-group"},Cn={class:"ft-align-panel","data-test":"align-panel"},Sn={class:"ft-align-row"},xn={class:"ft-align-row"},$n={class:"ft-group"},Bn={class:"ft-border-panel","data-test":"border-panel"},Dn={class:"ft-border-grid"},Tn=["disabled","data-tip"],Mn={class:"ft-style-row"},zn=["data-test","data-tip","onClick"],An={class:"ft-border-style-row"},Pn={class:"ft-line-width"},Rn={class:"ft-border-style-row"},Ln=e.defineComponent({__name:"FormatToolbar",props:{format:{},painter:{}},setup(o){const r=o,t=e.computed(()=>r.format.values.value),s=e.computed(()=>!r.format.fontEditable.value),n=e.computed(()=>s.value||r.format.context.value==="cells"),l=e.computed(()=>r.format.context.value==="none"),a=e.computed(()=>r.painter?.active.value===!0),i=e.computed(()=>!r.painter||!a.value&&(r.format.context.value==="none"||r.format.context.value==="cells"||!r.painter.capturable.value)),d=e.computed(()=>a.value?"退出格式刷(Esc)":r.painter?r.format.context.value==="cells"?"格式刷(表格单元格暂不支持)":r.format.context.value==="none"?"格式刷(需选中元素)":r.painter.capturable.value?"格式刷:单击刷一次,双击连续刷":"格式刷(请仅选中一个源元素)":"格式刷");function m(){const A=r.painter;if(A){if(A.active.value){A.cancel();return}A.capture(!1)}}function c(){r.painter?.capture(!0)}const f=e.computed(()=>t.value.fontFamily===Ce?void 0:t.value.fontFamily),g=e.computed(()=>t.value.fontFamily===Ce?"混合":"默认"),h=e.computed(()=>t.value.fontSize===Ce?void 0:t.value.fontSize),R=e.computed(()=>t.value.fontSize===Ce?"混合":"默认"),C=e.computed(()=>t.value.bold===!0),v=e.computed(()=>t.value.color===Ce?void 0:t.value.color),p=e.computed(()=>t.value.backgroundColor===Ce?void 0:t.value.backgroundColor),B=e.computed(()=>t.value.textAlign==="center"?ie.TextAlignCenter:t.value.textAlign==="right"?ie.TextAlignEnd:ie.TextAlignStart),_=e.computed(()=>s.value?"对齐(需选中文本元素或单元格)":"对齐"),ne=e.computed(()=>l.value?"边框(需选中元素)":"边框");function G(A){return s.value?`${A}(需选中文本元素)`:r.format.context.value==="cells"?`${A}(单元格不支持)`:A}const J=e.ref("solid"),b=e.ref(.75),W=e.ref("#333333"),j=e.computed(()=>r.format.context.value==="cells"),U=[{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 y(){return{width:b.value,style:J.value,color:W.value}}function M(A){j.value?r.format.applyCellBorderPreset(A,y()):r.format.applyElementBorder(A==="none"?"none":"all",y())}function N(A){return(j.value?r.format.cellEdges.value:r.format.elementEdges.value)?.[A]===!0}function O(A){j.value?r.format.toggleCellEdge(A,y()):r.format.toggleElementEdge(A,y())}return(A,k)=>(e.openBlock(),e.createElementBlock("div",un,[e.createElementVNode("div",mn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:a.value}]),"data-test":"format-painter",disabled:i.value,"data-tip":d.value,onClick:m,onDblclick:c},[e.createVNode(e.unref(ie.Paintbrush),{size:15})],42,pn)]),e.createElementVNode("div",vn,[e.createElementVNode("div",fn,[e.createVNode(ht,{"model-value":f.value,placeholder:g.value,disabled:s.value,"onUpdate:modelValue":k[0]||(k[0]=z=>o.format.applyStyle({fontFamily:z}))},null,8,["model-value","placeholder","disabled"])]),e.createElementVNode("div",gn,[e.createVNode(re,{"model-value":h.value,min:5,max:72,placeholder:R.value,disabled:s.value,"onUpdate:modelValue":k[1]||(k[1]=z=>o.format.applyStyle({fontSize:z}))},null,8,["model-value","placeholder","disabled"])])]),e.createElementVNode("div",hn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:C.value}]),"data-test":"bold",disabled:s.value,"data-tip":s.value?"加粗(需选中文本元素或单元格)":"加粗",onClick:k[2]||(k[2]=z=>o.format.toggleBold())},[e.createVNode(e.unref(ie.Bold),{size:15})],10,bn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:t.value.underline===!0}]),"data-test":"underline",disabled:n.value,"data-tip":G("下划线"),onClick:k[3]||(k[3]=z=>o.format.toggleUnderline())},[e.createVNode(e.unref(ie.Underline),{size:15})],10,En),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:t.value.strike===!0}]),"data-test":"strike",disabled:n.value,"data-tip":G("删除线"),onClick:k[4]||(k[4]=z=>o.format.toggleStrike())},[e.createVNode(e.unref(ie.Strikethrough),{size:15})],10,yn)]),e.createElementVNode("div",kn,[e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:s.value}]),title:`字体颜色${s.value?"(需选中或混选文本元素)":""}`},[e.createVNode(Ne,{"model-value":v.value,"onUpdate:modelValue":k[5]||(k[5]=z=>o.format.applyStyle({color:z}))},null,8,["model-value"]),k[23]||(k[23]=e.createElementVNode("span",{class:"ft-glyph"},"A",-1))],10,Vn),e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:l.value}]),title:"背景色"},[e.createVNode(Ne,{"model-value":p.value,"onUpdate:modelValue":k[6]||(k[6]=z=>o.format.applyStyle({backgroundColor:z}))},null,8,["model-value"]),e.createElementVNode("span",Nn,[e.createVNode(e.unref(ie.PaintBucket),{size:14})])],2)]),e.createElementVNode("div",wn,[e.createVNode(Ze,{"test-id":"align-dd",tip:_.value,disabled:s.value},{trigger:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(B.value),{size:15})),k[24]||(k[24]=e.createElementVNode("span",{class:"ft-btn-text"},"对齐",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Cn,[e.createElementVNode("div",Sn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.textAlign==="left"}]),"data-test":"align-left","data-tip":"左对齐",onClick:k[7]||(k[7]=z=>o.format.applyStyle({textAlign:"left"}))},[e.createVNode(e.unref(ie.TextAlignStart),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.textAlign==="center"}]),"data-test":"align-center","data-tip":"水平居中",onClick:k[8]||(k[8]=z=>o.format.applyStyle({textAlign:"center"}))},[e.createVNode(e.unref(ie.TextAlignCenter),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.textAlign==="right"}]),"data-test":"align-right","data-tip":"右对齐",onClick:k[9]||(k[9]=z=>o.format.applyStyle({textAlign:"right"}))},[e.createVNode(e.unref(ie.TextAlignEnd),{size:15})],2)]),e.createElementVNode("div",xn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.verticalAlign==="top"}]),"data-test":"valign-top","data-tip":"顶端对齐",onClick:k[10]||(k[10]=z=>o.format.applyStyle({verticalAlign:"top"}))},[e.createVNode(e.unref(ie.ArrowUpToLine),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.verticalAlign==="middle"}]),"data-test":"valign-middle","data-tip":"垂直居中",onClick:k[11]||(k[11]=z=>o.format.applyStyle({verticalAlign:"middle"}))},[e.createVNode(e.unref(ie.ChevronsUpDown),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:t.value.verticalAlign==="bottom"}]),"data-test":"valign-bottom","data-tip":"底端对齐",onClick:k[12]||(k[12]=z=>o.format.applyStyle({verticalAlign:"bottom"}))},[e.createVNode(e.unref(ie.ArrowDownToLine),{size:15})],2)])])]),_:1},8,["tip","disabled"])]),e.createElementVNode("div",$n,[e.createVNode(Ze,{"test-id":"border",tip:ne.value,disabled:l.value},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ie.Grid3x3),{size:15}),k[25]||(k[25]=e.createElementVNode("span",{class:"ft-btn-text"},"边框",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Bn,[e.createElementVNode("div",Dn,[e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-none","data-tip":"无边框",onClick:k[13]||(k[13]=z=>M("none"))},[...k[26]||(k[26]=[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:k[14]||(k[14]=z=>M("all"))},[...k[27]||(k[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"}),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:k[15]||(k[15]=z=>M("outer"))},[...k[28]||(k[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"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-inner",disabled:!j.value,"data-tip":j.value?"内部边框":"内部边框(仅表格单元格可用)",onClick:k[16]||(k[16]=z=>M("inner"))},[...k[29]||(k[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:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])],8,Tn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:N("top")}]),"data-test":"edge-top","data-tip":"上边框",onClick:k[17]||(k[17]=z=>O("top"))},[...k[30]||(k[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:"3",x2:"16",y2:"3"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:N("bottom")}]),"data-test":"edge-bottom","data-tip":"下边框",onClick:k[18]||(k[18]=z=>O("bottom"))},[...k[31]||(k[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:"15",x2:"16",y2:"15"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:N("left")}]),"data-test":"edge-left","data-tip":"左边框",onClick:k[19]||(k[19]=z=>O("left"))},[...k[32]||(k[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:"3",y1:"2",x2:"3",y2:"16"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:N("right")}]),"data-test":"edge-right","data-tip":"右边框",onClick:k[20]||(k[20]=z=>O("right"))},[...k[33]||(k[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:"15",y1:"2",x2:"15",y2:"16"})],-1)])],2)]),e.createElementVNode("div",Mn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,z=>e.createElementVNode("button",{key:z.key,type:"button",class:e.normalizeClass(["ft-style-btn",{on:J.value===z.key}]),"data-test":`style-${z.key}`,"data-tip":z.label,onClick:u=>J.value=z.key},[e.createElementVNode("span",{class:"ft-style-line",style:e.normalizeStyle({borderTop:z.preview})},null,4)],10,zn)),64))]),e.createElementVNode("div",An,[k[34]||(k[34]=e.createElementVNode("span",{class:"ft-edge-label"},"粗细",-1)),e.createElementVNode("div",Pn,[e.createVNode(re,{modelValue:b.value,"onUpdate:modelValue":k[21]||(k[21]=z=>b.value=z),min:.25,max:5,step:.25},null,8,["modelValue"])])]),e.createElementVNode("div",Rn,[k[35]||(k[35]=e.createElementVNode("span",{class:"ft-edge-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:W.value,"onUpdate:modelValue":k[22]||(k[22]=z=>W.value=z),clearable:!1},null,8,["modelValue"])])])]),_:1},8,["tip","disabled"])])]))}}),Un=ce(Ln,[["__scopeId","data-v-83fd8dc4"]]),In={class:"layer-panel"},Fn=["onClick"],Hn={class:"layer-icon"},On={class:"layer-name"},Wn={key:0,class:"layer-zone"},Gn={class:"layer-zindex"},Kn={key:0,class:"layer-actions"},qn={key:1,class:"layer-actions"},Yn=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer","group","ungroup"],setup(o){const r=o,t=e.computed(()=>r.elements.filter(c=>r.selectedIds.has(c.id))),s=e.computed(()=>t.value.length>=2),n=e.computed(()=>t.value.some(c=>!!c.options.groupId)),l=e.computed(()=>[...r.elements].sort((c,f)=>(f.options.zIndex??0)-(c.options.zIndex??0))),a={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function i(c){return a[c.printElementType.type]||"?"}function d(c){return c.options.title||c.printElementType.title||c.printElementType.type}function m(c){return c.zone==="header"?"页眉":c.zone==="footer"?"页脚":""}return(c,f)=>(e.openBlock(),e.createElementBlock("div",In,[f[6]||(f[6]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,g=>(e.openBlock(),e.createElementBlock("div",{key:g.id,class:e.normalizeClass(["layer-item",{active:o.selectedIds.has(g.id)}]),onClick:h=>c.$emit("select",g.id,h.ctrlKey||h.metaKey)},[e.createElementVNode("span",Hn,e.toDisplayString(i(g)),1),e.createElementVNode("span",On,e.toDisplayString(d(g)),1),m(g)?(e.openBlock(),e.createElementBlock("span",Wn,e.toDisplayString(m(g)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",Gn,"z:"+e.toDisplayString(g.options.zIndex??0),1)],10,Fn))),128)),l.value.length>0?(e.openBlock(),e.createElementBlock("div",Kn,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[0]||(f[0]=g=>c.$emit("move-layer","top")),title:"置顶"},[e.createVNode(e.unref(ie.ArrowUpToLine),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[1]||(f[1]=g=>c.$emit("move-layer","up")),title:"上移"},[e.createVNode(e.unref(ie.ArrowUp),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[2]||(f[2]=g=>c.$emit("move-layer","down")),title:"下移"},[e.createVNode(e.unref(ie.ArrowDown),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:f[3]||(f[3]=g=>c.$emit("move-layer","bottom")),title:"置底"},[e.createVNode(e.unref(ie.ArrowDownToLine),{size:14})])])):e.createCommentVNode("",!0),s.value||n.value?(e.openBlock(),e.createElementBlock("div",qn,[s.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"pd-button small",onClick:f[4]||(f[4]=g=>c.$emit("group")),title:"组合 (Ctrl+G)"},[e.createVNode(e.unref(ie.Group),{size:14})])):e.createCommentVNode("",!0),n.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"pd-button small",onClick:f[5]||(f[5]=g=>c.$emit("ungroup")),title:"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ie.Ungroup),{size:14})])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),jn=ce(Yn,[["__scopeId","data-v-567d273e"]]),Xn={class:"field-tree-panel"},Zn={class:"tree-container"},Jn=["onClick"],Qn={class:"expand-icon"},_n={class:"node-icon"},el={class:"group-label"},tl=["onDragstart"],ol={class:"node-label"},nl={class:"node-key"},ll={key:0,class:"pd-empty"},al=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(""),l=e.ref(new Set),a=e.computed(()=>!!n.value.trim()),i=e.computed(()=>E.filterGroups(E.groupFields(t.fields),n.value));function d(c){const f=new Set(l.value);f.has(c)?f.delete(c):f.add(c),l.value=f}function m(c,f){c.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:f.fieldKey,fieldLabel:f.fieldLabel})),c.dataTransfer&&(c.dataTransfer.effectAllowed="copy"),s("field-drag",f)}return(c,f)=>(e.openBlock(),e.createElementBlock("div",Xn,[f[2]||(f[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=g=>n.value=g),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,n.value]]),e.createElementVNode("div",Zn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,g=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:g.key||"_top"},[g.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":g.isList}]),onClick:h=>d(g.key)},[e.createElementVNode("span",Qn,e.toDisplayString(l.value.has(g.key)&&!a.value?"▶":"▼"),1),e.createElementVNode("span",_n,e.toDisplayString(g.isList?"📋":"📁"),1),e.createElementVNode("span",el,e.toDisplayString(g.label),1)],10,Jn)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.fields,h=>(e.openBlock(),e.createElementBlock("div",{key:h.fieldKey,class:"field-row",draggable:"true",style:e.normalizeStyle({paddingLeft:(g.key?22:8)+"px"}),onDragstart:R=>m(R,h)},[f[1]||(f[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",ol,e.toDisplayString(h.fieldLabel),1),e.createElementVNode("span",nl,"("+e.toDisplayString(h.fieldKey)+")",1)],44,tl))),128))],512),[[e.vShow,!g.key||a.value||!l.value.has(g.key)]])],64))),128))]),i.value.length===0?(e.openBlock(),e.createElementBlock("p",ll,"暂无字段")):e.createCommentVNode("",!0)]))}}),il=ce(al,[["__scopeId","data-v-9b326f07"]]),rl={key:0,class:"left-collapsed"},sl={class:"left-head"},dl={class:"pd-tabs left-tabs"},cl={class:"pd-tab-bar",role:"tablist"},ul={class:"pd-tab-pane",role:"tabpanel"},ml=["onDragstart"],pl={class:"material-icon"},vl={class:"material-label"},fl={class:"pd-tab-pane",role:"tabpanel"},gl={class:"pd-tab-pane",role:"tabpanel"},hl=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(o,{emit:r}){const t=r,s=e.ref("elements"),n=[{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 l(d,m){d.dataTransfer?.setData("elementType",m)}function a(d){t("field-drag",d)}function i(d){s.value=d,t("toggle-collapse")}return(d,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",rl,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:m[0]||(m[0]=c=>i(s.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:s.value==="elements"}]),title:"元素",onClick:m[1]||(m[1]=c=>i("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:s.value==="fields"}]),title:"字段",onClick:m[2]||(m[2]=c=>i("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:s.value==="layers"}]),title:"图层",onClick:m[3]||(m[3]=c=>i("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",sl,[m[14]||(m[14]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:m[4]||(m[4]=c=>d.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",dl,[e.createElementVNode("div",cl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:s.value==="elements"}]),onClick:m[5]||(m[5]=c=>s.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:s.value==="fields"}]),onClick:m[6]||(m[6]=c=>s.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:s.value==="layers"}]),onClick:m[7]||(m[7]=c=>s.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",ul,[m[15]||(m[15]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,c=>e.createElementVNode("div",{key:c.type,class:"material-card",draggable:"true",onDragstart:f=>l(f,c.type)},[e.createElementVNode("span",pl,e.toDisplayString(c.icon),1),e.createElementVNode("span",vl,e.toDisplayString(c.label),1)],40,ml)),64))],512),[[e.vShow,s.value==="elements"]]),e.withDirectives(e.createElementVNode("div",fl,[e.createVNode(il,{fields:o.fields,onFieldDrag:a},null,8,["fields"])],512),[[e.vShow,s.value==="fields"]]),e.withDirectives(e.createElementVNode("div",gl,[e.createVNode(jn,{elements:o.elements,"selected-ids":o.selectedIds,onSelect:m[8]||(m[8]=(c,f)=>d.$emit("select",c,f)),onMoveLayer:m[9]||(m[9]=c=>d.$emit("move-layer",c)),onGroup:m[10]||(m[10]=c=>d.$emit("group")),onUngroup:m[11]||(m[11]=c=>d.$emit("ungroup")),onToggleVisible:m[12]||(m[12]=c=>d.$emit("toggle-visible",c)),onToggleLocked:m[13]||(m[13]=c=>d.$emit("toggle-locked",c))},null,8,["elements","selected-ids"])],512),[[e.vShow,s.value==="layers"]])])],64))],2))}}),bl=ce(hl,[["__scopeId","data-v-4501eea7"]]);function El(o,r){const t=e.ref(!1),s=e.ref(null);let n=0,l=0,a=0,i=0,d=!1;function m(C){if(r.disabled||C.button!==0)return;const v=C.target;if(!(v instanceof Element)||v.classList.contains("resize-handle"))return;t.value=!0,d=C.altKey,n=C.clientX,l=C.clientY;const p=o.value;p&&(a=parseFloat(p.style.left)||0,i=parseFloat(p.style.top)||0,s.value={left:a,top:i,width:parseFloat(p.style.width)||0,height:parseFloat(p.style.height)||0},r.onStart?.({altKey:d}),document.addEventListener("mousemove",f),document.addEventListener("mouseup",g),C.preventDefault())}function c(C){const v=r.getScale?.()??1;let p=a+(C.clientX-n)/v,B=i+(C.clientY-l)/v;if(r.axis==="x"&&(B=i),r.axis==="y"&&(p=a),r.onAdsorb){const _=o.value;if(_){const ne=parseFloat(_.style.width)||0,G=parseFloat(_.style.height)||0,J=r.onAdsorb({left:p,top:B,width:ne,height:G});p=J.left,B=J.top}}return{left:p,top:B}}function f(C){const v=c(C);s.value&&(s.value.left=v.left,s.value.top=v.top),r.onDrag(v)}function g(C){t.value=!1;const v=c(C);r.onDragEnd?.(v,{altKey:d}),r.onStop?.(),s.value=null,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",g)}function h(){const C=o.value;C&&C.removeEventListener("mousedown",m),document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",g)}function R(){h();const C=o.value;C&&C.addEventListener("mousedown",m)}return{isDragging:t,dragPreview:s,setup:R,cleanup:h}}function yl(o){const r=[];return o.getAttribute("data-fit")==="shrink"&&r.push(o),o.querySelectorAll('[data-fit="shrink"]').forEach(t=>r.push(t)),r}function kl(o){o.querySelectorAll("[data-fit-size]").forEach(r=>{if(r.getAttribute("data-fit")==="shrink")return;r.removeAttribute("data-fit-size");const t=r.getAttribute("data-fit-base");t?r.style.fontSize=`${t}pt`:r.style.removeProperty("font-size")})}function bt(o,r){const t=()=>{const s=o.value;s&&(yl(s).forEach(Ie.fitTextNode),kl(s))};e.watchEffect(()=>{r(),e.nextTick(t)},{flush:"post"}),e.onMounted(()=>{e.nextTick(t)})}const Vl=["data-fit","data-fit-base","data-fit-min"],Nl=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},s={left:"flex-start",center:"center",right:"flex-end"},n=e.ref(null),l=e.computed(()=>E.resolveElementTextFit("text",r.element.options)),a=e.computed(()=>r.element.options.fontSize||12),i=e.computed(()=>E.resolveShrinkMinFontSize(r.element.options.shrinkMinFontSize)),d=e.computed(()=>{const c=r.element.options,f=l.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:c.fontWeight||"normal",fontFamily:c.fontFamily||"inherit",color:c.color||"#333",backgroundColor:c.backgroundColor||"transparent",textAlign:c.textAlign||"left",lineHeight:c.lineHeight?c.lineHeight+"pt":"normal",letterSpacing:c.letterSpacing?c.letterSpacing+"pt":"normal",textDecoration:c.textDecoration||"none",padding:`${c.contentPaddingTop||0}pt ${c.contentPaddingRight||0}pt ${c.contentPaddingBottom||0}pt ${c.contentPaddingLeft||0}pt`,width:"100%",height:f?"auto":"100%",boxSizing:"border-box",overflow:f?"visible":"hidden",...c.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...c.verticalAlign?{display:"flex",alignItems:t[c.verticalAlign]??"flex-start",justifyContent:s[c.textAlign||"left"]??"flex-start"}:{}}}),m=e.computed(()=>r.designMode?r.element.options.testData?r.element.options.testData:r.element.options.formatter||"文本":E.resolveTextBinding(r.element.options,r.data));return bt(n,()=>[l.value,a.value,i.value,r.element.options.width,r.element.options.height,r.element.options.wordWrap,r.element.options.letterSpacing,r.element.options.lineHeight,m.value]),(c,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:"print-text",style:e.normalizeStyle(d.value),"data-fit":l.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(i.value)},e.toDisplayString(m.value),13,Vl))}}),wl={class:"print-image"},Cl=["src"],Sl={key:1,class:"image-placeholder"},xl=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t=e.computed(()=>{const a=r.element.options.src||"";return a?a.includes("{")?r.designMode?E.evaluateTemplate(a,E.DEFAULT_DEMO_DATA):E.evaluateTemplate(a,r.data?.[0]||{}):a:""}),s=e.ref(!1);function n(){s.value=!0}e.watch(t,()=>{s.value=!1});const l=e.computed(()=>({objectFit:r.element.options.fit||"contain"}));return(a,i)=>(e.openBlock(),e.createElementBlock("div",wl,[t.value&&!s.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(l.value),onError:n},null,44,Cl)):(e.openBlock(),e.createElementBlock("div",Sl,"图片"))]))}}),$l=ce(xl,[["__scopeId","data-v-007a2979"]]),Bl=["data-fit","data-fit-base","data-fit-min"],Dl=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t={top:"flex-start",middle:"center",bottom:"flex-end"},s={left:"flex-start",center:"center",right:"flex-end"},n=e.ref(null),l=e.computed(()=>E.resolveElementTextFit("longText",r.element.options)),a=e.computed(()=>r.element.options.fontSize||12),i=e.computed(()=>E.resolveShrinkMinFontSize(r.element.options.shrinkMinFontSize)),d=e.computed(()=>{const c=r.element.options,f=l.value==="autoHeight";return{fontSize:a.value+"pt",fontWeight:c.fontWeight||"normal",fontFamily:c.fontFamily||"inherit",color:c.color||"#333",backgroundColor:c.backgroundColor||"transparent",textAlign:c.textAlign||"left",lineHeight:c.lineHeight?c.lineHeight+"pt":"1.5",letterSpacing:c.letterSpacing?c.letterSpacing+"pt":"normal",textIndent:c.longTextIndent?c.longTextIndent+"pt":"0",width:"100%",height:f?"auto":"100%",overflow:f?"visible":"hidden",wordBreak:"break-all",boxSizing:"border-box",...c.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...c.verticalAlign?{display:"flex",alignItems:t[c.verticalAlign]??"flex-start",justifyContent:s[c.textAlign||"left"]??"flex-start"}:{}}}),m=e.computed(()=>r.designMode?r.element.options.formatter?r.element.options.formatter:"长文本内容":E.resolveTextBinding(r.element.options,r.data));return bt(n,()=>[l.value,a.value,i.value,r.element.options.width,r.element.options.height,r.element.options.wordWrap,r.element.options.lineHeight,m.value]),(c,f)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:"print-longtext",style:e.normalizeStyle(d.value),"data-fit":l.value==="shrink"?"shrink":void 0,"data-fit-base":String(a.value),"data-fit-min":String(i.value)},e.toDisplayString(m.value),13,Bl))}}),Tl=["title"],Ml=["title","onClick"],zl=e.defineComponent({__name:"TableContextMenu",props:{visible:{type:Boolean},x:{},y:{},canDeleteRow:{type:Boolean},canDeleteCol:{type:Boolean},mergeDisabledReason:{},canSplit:{type:Boolean},currentRowType:{},rowTypeDisabledReason:{type:Function}},emits:["action"],setup(o,{emit:r}){const t=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],s=r;function n(l,a){s("action",l,a)}return(l,a)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:o.x+"px",top:o.y+"px"}),onMousedown:a[8]||(a[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:a[0]||(a[0]=i=>n("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:a[1]||(a[1]=i=>n("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteRow}]),onClick:a[2]||(a[2]=i=>o.canDeleteRow&&n("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]=i=>n("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:a[4]||(a[4]=i=>n("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canDeleteCol}]),onClick:a[5]||(a[5]=i=>o.canDeleteCol&&n("delete-col"))}," 删除列 ",2),a[10]||(a[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!o.mergeDisabledReason}]),title:o.mergeDisabledReason||"",onClick:a[6]||(a[6]=i=>!o.mergeDisabledReason&&n("merge"))}," 合并单元格 ",10,Tl),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!o.canSplit}]),onClick:a[7]||(a[7]=i=>o.canSplit&&n("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(t,i=>e.createElementVNode("div",{key:i.value,class:e.normalizeClass(["menu-item",{disabled:!!o.rowTypeDisabledReason(i.value),active:o.currentRowType===i.value}]),title:o.rowTypeDisabledReason(i.value)||"",onClick:d=>!o.rowTypeDisabledReason(i.value)&&n("set-row-type",i.value)},e.toDisplayString(i.label),11,Ml)),64))],36)):e.createCommentVNode("",!0)]))}}),Al=ce(zl,[["__scopeId","data-v-44e319c1"]]),Pl={class:"cell-barcode"},Rl=["preserveAspectRatio"],Ll=["src"],Ul={key:1,class:"cell-barcode-fallback"},Il=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(o){const r=o,t=e.ref(null),s=e.ref(!1),n=e.ref(""),l=e.ref(null),a={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},i=e.computed(()=>a[r.fit||"contain"]??"xMidYMid meet"),d=e.computed(()=>l.value?{width:l.value.width,height:l.value.height}:{maxWidth:r.maxWidth?`${r.maxWidth}mm`:"100%",maxHeight:r.maxHeight?`${r.maxHeight}mm`:"100%"}),m=e.computed(()=>({objectFit:r.fit||"contain",maxWidth:r.maxWidth?`${r.maxWidth}mm`:"100%",maxHeight:r.maxHeight?`${r.maxHeight}mm`:"100%"}));function c(){if(s.value=!1,l.value=null,!t.value)return;const R=E.barcodeUnitsPerModule(r.barWidth);try{zt(t.value,r.value,{format:r.barcodeType||"CODE128",width:R,height:E.BARCODE_BAR_HEIGHT_MODULES*R,displayValue:r.showText!==!1,fontSize:(r.barFontSize??E.BARCODE_TEXT_FONT_SIZE_MODULES)*R,margin:0,marginLeft:E.BARCODE_QUIET_ZONE_MODULES*R,marginRight:E.BARCODE_QUIET_ZONE_MODULES*R,marginTop:0,marginBottom:E.BARCODE_MARGIN_BOTTOM_MODULES*R})}catch{return}s.value=!0;const C=f(t.value),v=C?E.resolveBarcodeSize({unitWidth:C.width/R,unitHeight:C.height/R,boxWidthMm:E.barcodeAvailableBoxMm(r.targetWidthMm,r.maxWidth),boxHeightMm:E.barcodeAvailableBoxMm(r.targetHeightMm,r.maxHeight),dpi:r.printerDpi,barWidth:r.barWidth}):null;l.value=v?{width:`${v.widthMm}mm`,height:`${v.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function f(R){const C=(R.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return C.length!==4||C.some(v=>!Number.isFinite(v))?null:{width:C[2],height:C[3]}}async function g(){if(!r.value){n.value="";return}try{n.value=await At.toDataURL(r.value,{width:96,margin:1,errorCorrectionLevel:r.qrCodeLevel||"M"})}catch{n.value=""}}function h(){r.cellType==="barcode"?c():g()}return e.onMounted(h),e.watch(()=>[r.cellType,r.value,r.barcodeType,r.qrCodeLevel,r.showText,r.printerDpi,r.targetWidthMm,r.targetHeightMm,r.barWidth,r.barFontSize,r.maxWidth,r.maxHeight],h),(R,C)=>(e.openBlock(),e.createElementBlock("div",Pl,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:t,preserveAspectRatio:i.value,style:e.normalizeStyle(d.value)},null,12,Rl)),[[e.vShow,o.cellType==="barcode"&&s.value]]),o.cellType==="qrcode"&&n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:n.value,alt:"qrcode",style:e.normalizeStyle(m.value)},null,12,Ll)):e.createCommentVNode("",!0),!s.value&&o.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",Ul,e.toDisplayString(o.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),Fl=ce(Il,[["__scopeId","data-v-81e37239"]]),Hl={class:"cell-image"},Ol=["src"],Wl={key:1,class:"image-placeholder"},Gl=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{}},setup(o){const r=o,t=e.computed(()=>{const a=r.value||"";return a?a.includes("{")?r.designMode?E.evaluateTemplate(a,E.DEFAULT_DEMO_DATA):E.evaluateTemplate(a,r.data?.[0]||{}):a:""}),s=e.ref(!1);function n(){s.value=!0}e.watch(t,()=>{s.value=!1});const l=e.computed(()=>({objectFit:r.fit||"contain",maxWidth:r.maxWidth?`${r.maxWidth}mm`:"100%",maxHeight:r.maxHeight?`${r.maxHeight}mm`:"100%"}));return(a,i)=>(e.openBlock(),e.createElementBlock("div",Hl,[t.value&&!s.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,style:e.normalizeStyle(l.value),onError:n},null,44,Ol)):(e.openBlock(),e.createElementBlock("div",Wl,"图片"))]))}}),Kl=ce(Gl,[["__scopeId","data-v-d5bc444b"]]),ql=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],Yl=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],jl={key:0,class:"data-placeholder"},Xl={key:3,class:"data-placeholder"},Zl={key:0,class:"col-resize-layer"},Jl=["aria-label","onMousedown"],Ql={key:1,class:"row-badges"},Ye=3.7795275591,_l=.1,ea=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-cell"],setup(o,{emit:r}){const t={header:"题",data:"数",subtotal:"小",summary:"汇"},s=o,n=r,l=e.inject(He,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),a=e.computed(()=>s.element.options.tableRows??[]),i=e.computed(()=>s.element.options.tableColWidths??[]),d=e.computed(()=>s.element.options.tableDefaultFontSize??10),m=e.computed(()=>s.element.options.tableDefaultColor??"#333333"),c=e.computed(()=>{const L=l.tableSelection.value;return L&&L.elementId===s.element.id?L:null});function f(L){let F=0;for(let V=0;V<L;V++)F+=a.value[V].height;return F}const g=e.ref(null),h=e.ref(null),R=e.ref([]);function C(){if(!s.designMode)return;const L=g.value;if(!L)return;const F=L.offsetHeight;if(F<=0)return;const V=s.element.options,w=F/Ye;Math.abs(w-(V.height??0))>_l&&(V.height=Math.round(w*100)/100);const P=L.offsetTop;R.value=Array.from(L.rows).map(ae=>({top:(ae.offsetTop-P)/Ye,height:ae.offsetHeight/Ye}))}function v(L){return R.value[L]?.top??f(L)}function p(L){return R.value[L]?.height??a.value[L]?.height??0}e.watch(()=>[s.element.options,s.designMode],()=>C(),{deep:!0,flush:"post"}),e.onMounted(()=>{C(),document.fonts?.ready.then(()=>C())});const B=e.computed(()=>{const L=s.element.options.dataSource;if(L&&Array.isArray(E.DEFAULT_DEMO_DATA[L]))return E.DEFAULT_DEMO_DATA[L];for(const F of Object.values(E.DEFAULT_DEMO_DATA))if(Array.isArray(F))return F}),_=e.computed(()=>{if(s.data)return s.data});function ne(L){return L.cellType==="barcode"||L.cellType==="qrcode"}function G(L,F){return ne(F)?E.resolveBarcodeDesignValue(F.formatter,B.value):F.formatter||""}function J(L,F){const V=s.element.options,w={designMode:s.designMode,showGhostBorder:s.showTableGhostBorder};return{fontFamily:F.fontFamily||"inherit",textAlign:F.align??"left",verticalAlign:F.valign??"middle",fontSize:(F.fontSize??d.value)+"pt",fontWeight:F.fontWeight??"normal",color:F.color??m.value,backgroundColor:F.backgroundColor??"transparent",borderTop:E.resolveCellBorderCss(F.borders?.top,w),borderRight:E.resolveCellBorderCss(F.borders?.right,w),borderBottom:E.resolveCellBorderCss(F.borders?.bottom,w),borderLeft:E.resolveCellBorderCss(F.borders?.left,w),padding:(F.padding??V.tableDefaultPadding??1)+"mm",whiteSpace:F.wordWrap??!0?"normal":"nowrap",overflow:F.wordWrap??!0?"visible":"hidden"}}function b(L){return E.resolveCellTextFit(L)}function W(L){return b(L)!=="autoHeight"}function j(L){return L.fontSize??d.value}function U(L,F){return E.cellFitCapMm(a.value,L,F,s.element.options.tableDefaultPadding??1)}function y(L,F){return E.cellFitWidthMm(i.value,L,F,s.element.options.tableDefaultPadding??1)}function M(L,F){return{maxHeight:U(F,L)+"mm",overflow:"hidden",...L.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}bt(h,()=>[s.designMode,s.data?.length,i.value.join(","),d.value,s.element.options.tableDefaultPadding,a.value.map(L=>`${L.height}:${L.cells.map(F=>`${F.formatter??""}|${F.fontSize??""}|${F.wordWrap??""}|${F.textFit??""}|${F.colspan??1}`).join("~")}`).join(",")]);function N(L,F){const V=c.value;return{"cell-selected":!!V&&L>=V.r1&&L<=V.r2&&F>=V.c1&&F<=V.c2,"row-data-bg":a.value[L].type==="data"}}const O=e.ref(null);function A(L,F){const V=E.normalizeSelection(a.value,L,F);l.setTableSelection({elementId:s.element.id,...V})}function k(L,F,V){!s.designMode||!s.isSelected||(V.stopPropagation(),V.shiftKey&&c.value?A({r:c.value.r1,c:c.value.c1},{r:L,c:F}):(O.value={r:L,c:F},A({r:L,c:F},{r:L,c:F})),window.addEventListener("mouseup",()=>{O.value=null},{once:!0}))}function z(L,F){O.value&&A(O.value,{r:L,c:F})}function u(L,F){s.designMode&&n("dblclick-cell",s.element.id,L,F)}const x=e.reactive({visible:!1,x:0,y:0}),Y=e.inject(Je,null);function be(L,F,V){if(!s.designMode)return;!s.isSelected&&Y&&(Y.value=new Set([s.element.id]));const w=c.value;w&&L>=w.r1&&L<=w.r2&&F>=w.c1&&F<=w.c2||A({r:L,c:F},{r:L,c:F}),x.x=V.clientX,x.y=V.clientY,x.visible=!0,window.removeEventListener("mouseup",ge),window.addEventListener("mouseup",ge)}function ge(L){L.target?.closest?.(".table-ctx-menu")||(x.visible=!1,window.removeEventListener("mouseup",ge))}const fe=e.computed(()=>{const L=c.value;return L?E.canMergeReason(a.value,L):"未选择单元格"}),se=e.computed(()=>{const L=c.value;if(!L)return!1;for(let F=L.r1;F<=L.r2;F++)for(let V=L.c1;V<=L.c2;V++){const w=a.value[F].cells[V];if(!w.merged&&((w.rowspan??1)>1||(w.colspan??1)>1))return!0}return!1});function q(L){const F=c.value;if(!F)return"未选择单元格";if(F.r1!==F.r2)return"行类型仅支持单行设置";const V=JSON.parse(JSON.stringify(a.value));return E.setRowType(V,F.r1,L)}function S(){E.syncTableElementSize(s.element.options)}function D(L,F){const V=l.maxTableWidth.value,w=L.reduce((P,ae)=>P+ae,0)+L[F];return w>V?`插入后表格总宽 ${Math.round(w*10)/10}mm 超过打印范围宽度 ${V}mm,请先缩小列宽`:null}function K(L,F){const V=c.value;if(!V)return;x.visible=!1;const w=s.element.options,P=w.tableRows,ae=w.tableColWidths;let me=null;switch(L){case"insert-row-above":E.insertRow(P,V.r1,"above");break;case"insert-row-below":E.insertRow(P,V.r2,"below");break;case"delete-row":me=E.deleteRow(P,V.r1);break;case"insert-col-left":me=D(ae,V.c1),me||E.insertCol(P,ae,V.c1,"left");break;case"insert-col-right":me=D(ae,V.c2),me||E.insertCol(P,ae,V.c2,"right");break;case"delete-col":me=E.deleteCol(P,ae,V.c1);break;case"merge":E.mergeCells(P,V);break;case"split":E.splitCells(P,V);break;case"set-row-type":me=E.setRowType(P,V.r1,F);break}if(me){alert(me);return}l.setTableSelection(null),S(),l.recordHistory()}const Z=e.computed(()=>s.designMode&&!!s.isSelected&&!s.element.options.locked&&i.value.length>=1),te=e.computed(()=>Array.from({length:i.value.length},(L,F)=>F+1));function pe(L){return i.value.slice(0,L).reduce((F,V)=>F+V,0)}const T=e.ref(null);let $=0,I=0;function ee(L,F){Z.value&&F.button===0&&(T.value=L,$=F.clientX,I=i.value[L-1],document.addEventListener("mousemove",oe),document.addEventListener("mouseup",ue))}function oe(L){if(T.value===null)return;const F=s.scale||1,V=(L.clientX-$)/(F*Ye),w=T.value-1,P=s.element.options.tableColWidths;P[w]=E.clampResizedColumnWidth(P,w,I+V,l.maxTableWidth.value),S()}function ue(){document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",ue),T.value!==null&&(T.value=null,S(),l.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",oe),document.removeEventListener("mouseup",ue)}),(L,F)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:h,class:e.normalizeClass(["print-table",{"design-mode":o.designMode}]),onContextmenu:F[0]||(F[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:g,style:e.normalizeStyle({fontSize:d.value+"pt",color:m.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(V,w)=>(e.openBlock(),e.createElementBlock("col",{key:w,style:e.normalizeStyle({width:V+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(V,w)=>(e.openBlock(),e.createElementBlock("tr",{key:V.id,style:e.normalizeStyle({height:V.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.cells,(P,ae)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:P.id},[P.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:P.rowspan||1,colspan:P.colspan||1,class:e.normalizeClass(N(w,ae)),style:e.normalizeStyle(J(V,P)),onMousedown:e.withModifiers(me=>k(w,ae,me),["left"]),onMouseenter:me=>z(w,ae),onDblclick:e.withModifiers(me=>u(w,ae),["stop"]),onContextmenu:e.withModifiers(me=>be(w,ae,me),["prevent","stop"])},[ne(P)?(e.openBlock(),e.createBlock(Fl,{key:0,"cell-type":P.cellType,value:G(V,P),"barcode-type":P.barcodeType,"qr-code-level":P.qrCodeLevel,"show-text":P.showBarcodeText!==!1,fit:P.fit,"max-width":P.maxWidth,"max-height":P.maxHeight,"printer-dpi":P.printerDpi,"target-width-mm":y(ae,P),"target-height-mm":U(w,P),"bar-width":P.barWidth,"bar-font-size":P.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):P.cellType==="image"?(e.openBlock(),e.createBlock(Kl,{key:1,value:P.formatter||"",fit:P.fit,"max-width":P.maxWidth,"max-height":P.maxHeight,"design-mode":o.designMode,data:_.value},null,8,["value","fit","max-width","max-height","design-mode","data"])):W(P)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(M(P,w)),"data-fit":b(P)==="shrink"?"shrink":void 0,"data-fit-base":String(j(P)),"data-fit-min":String(e.unref(E.resolveShrinkMinFontSize)(P.shrinkMinFontSize)),"data-fit-mm":U(w,P)},[V.type==="data"?(e.openBlock(),e.createElementBlock("span",jl,e.toDisplayString(G(V,P)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(G(V,P)),1)],64))],12,Yl)):V.type==="data"?(e.openBlock(),e.createElementBlock("span",Xl,e.toDisplayString(G(V,P)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(G(V,P)),1)],64))],46,ql))],64))),128))],4))),128))])],4),Z.value?(e.openBlock(),e.createElementBlock("div",Zl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(te.value,V=>(e.openBlock(),e.createElementBlock("div",{key:V,class:e.normalizeClass(["col-resize-handle",{dragging:T.value===V}]),role:"separator","aria-label":"列宽手柄"+V,style:e.normalizeStyle({left:pe(V)+"mm"}),onMousedown:e.withModifiers(w=>ee(V,w),["stop","prevent"])},null,46,Jl))),128))])):e.createCommentVNode("",!0),o.designMode&&o.isSelected?(e.openBlock(),e.createElementBlock("div",Ql,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(V,w)=>(e.openBlock(),e.createElementBlock("span",{key:V.id,class:"row-badge",style:e.normalizeStyle({top:v(w)+"mm",height:p(w)+"mm"})},e.toDisplayString(t[V.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(Al,{visible:x.visible,x:x.x,y:x.y,"can-delete-row":a.value.length>1,"can-delete-col":i.value.length>1,"merge-disabled-reason":fe.value,"can-split":se.value,"current-row-type":c.value?a.value[c.value.r1]?.type??null:null,"row-type-disabled-reason":q,onAction:K},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),ta=ce(ea,[["__scopeId","data-v-0c170f83"]]),St=e.defineComponent({__name:"LineElement",props:{element:{}},setup(o){const r=o,t=e.computed(()=>r.element.printElementType.type==="hline"),s=e.computed(()=>{const n=r.element.options,l=(n.borderWidth||.75)+"pt",a=n.borderStyle||"solid",i=n.borderColor||"#333";return t.value?{width:"100%",height:"0",borderTop:`${l} ${a} ${i}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${l} ${a} ${i}`,boxSizing:"border-box"}});return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(s.value)},null,4))}}),xt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(o){const r=o,t=e.computed(()=>r.element.printElementType.type==="oval"),s=e.computed(()=>{const n=r.element.options;return{width:"100%",height:"100%",borderWidth:(n.borderWidth||1)+"pt",borderStyle:n.borderStyle||"solid",borderColor:n.borderColor||"#333",backgroundColor:n.backgroundColor||"transparent",borderRadius:t.value?"50%":"0",boxSizing:"border-box"}});return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(s.value)},null,4))}}),oa={class:"print-barcode",ref:"containerRef"},na=["preserveAspectRatio"],la=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t=e.ref(null),s=e.ref(null),n={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},l=e.computed(()=>n[r.element.options.fit||"contain"]??"xMidYMid meet"),a=e.computed(()=>s.value?{width:s.value.width,height:s.value.height}:{maxWidth:"100%",maxHeight:"100%"});function i(){if(!t.value)return;const m=r.element.options,c=(r.designMode?m.testData||m.formatter:E.resolveTextBinding(m,r.data))||"条码",f=E.barcodeUnitsPerModule(m.barWidth);try{zt(t.value,c,{format:m.barcodeType||"CODE128",width:f,height:E.BARCODE_BAR_HEIGHT_MODULES*f,displayValue:!m.hideTitle,fontSize:(m.fontSize??E.BARCODE_TEXT_FONT_SIZE_MODULES)*f,margin:0,marginLeft:E.BARCODE_QUIET_ZONE_MODULES*f,marginRight:E.BARCODE_QUIET_ZONE_MODULES*f,marginTop:0,marginBottom:E.BARCODE_MARGIN_BOTTOM_MODULES*f})}catch{s.value=null;return}const g=d(t.value),h=g?E.resolveBarcodeSize({unitWidth:g.width/f,unitHeight:g.height/f,boxWidthMm:E.barcodeAvailableBoxMm(m.width,m.maxWidth),boxHeightMm:E.barcodeAvailableBoxMm(m.height,m.maxHeight),dpi:m.printerDpi,barWidth:m.barWidth}):null;s.value=h?{width:`${h.widthMm}mm`,height:`${h.heightMm}mm`}:null,t.value.setAttribute("shape-rendering","crispEdges")}function d(m){const c=(m.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return c.length!==4||c.some(f=>!Number.isFinite(f))?null:{width:c[2],height:c[3]}}return e.onMounted(i),e.watch(()=>[r.element.options.formatter,r.element.options.testData,r.element.options.barcodeType,r.element.options.width,r.element.options.height,r.element.options.barWidth,r.element.options.printerDpi,r.element.options.hideTitle,r.element.options.fontSize,r.element.options.maxWidth,r.element.options.maxHeight],i),(m,c)=>(e.openBlock(),e.createElementBlock("div",oa,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:t,preserveAspectRatio:l.value,style:e.normalizeStyle(a.value)},null,12,na))],512))}}),aa=ce(la,[["__scopeId","data-v-6eb95a40"]]),ia={class:"print-qrcode"},ra=["src"],sa=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t=e.ref(""),s=e.computed(()=>{const l=r.element.options;return{objectFit:l.fit||"contain",maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}});async function n(){const l=r.element.options,a=(r.designMode?l.testData||l.formatter:E.resolveTextBinding(l,r.data))||"二维码",i=Math.min(l.width||80,l.height||80);try{t.value=await At.toDataURL(a,{width:i,margin:1,errorCorrectionLevel:String(l.qrCodeLevel??"M")})}catch{t.value=""}}return e.onMounted(n),e.watch(()=>[r.element.options.formatter,r.element.options.testData,r.element.options.qrCodeLevel],n),(l,a)=>(e.openBlock(),e.createElementBlock("div",ia,[t.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.value,alt:"qrcode",style:e.normalizeStyle(s.value)},null,12,ra)):e.createCommentVNode("",!0)]))}}),da=ce(sa,[["__scopeId","data-v-3454544f"]]),ca=["innerHTML"],ua=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t=e.computed(()=>{if(r.element.options.formatter){const s=r.data&&r.data.length>0?r.data[0]:{},n=E.evaluateTemplate(r.element.options.formatter,s??{});return n?Wt.sanitize(n):""}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(s,n)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:t.value},null,8,ca))}}),ma=ce(ua,[["__scopeId","data-v-880bbde5"]]),pa=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(o){const r=o,t=e.computed(()=>{const n=r.element.options;return{fontSize:(n.fontSize||12)+"pt",fontWeight:n.fontWeight||"normal",fontFamily:n.fontFamily||"inherit",color:n.color||"#333",textAlign:n.textAlign||"left",lineHeight:n.lineHeight?n.lineHeight+"pt":"normal",letterSpacing:n.letterSpacing?n.letterSpacing+"pt":"normal"}}),s=e.computed(()=>r.designMode?r.element.options.title||"{pageIndex}/{totalPages}":r.element.options.title||"");return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(t.value)},e.toDisplayString(s.value),5))}}),va=ce(pa,[["__scopeId","data-v-38f1d7df"]]),fa={key:0,class:"drag-preview"},ga={key:1,class:"resize-handles"},ha=["onMousedown"],ba={key:2,class:"selected-indicator"},Ea={class:"position-label"},ya=e.defineComponent({__name:"BaseElement",props:{element:{},isSelected:{type:Boolean},designMode:{type:Boolean},printData:{},scale:{},allElements:{},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},zone:{},adsorbHandler:{type:Function},clearAdsorbGuides:{type:Function}},emits:["select","update:element","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","clone-element"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(null),l=e.inject(Je,null),a=e.computed(()=>l?.value?l.value.has(t.element.id):t.isSelected??!1),i=e.inject(Pt,null),d=e.computed(()=>i?.value.has(t.element.id)??!1),m={text:e.markRaw(Nl),image:e.markRaw($l),longText:e.markRaw(Dl),table:e.markRaw(ta),hline:e.markRaw(St),vline:e.markRaw(St),rect:e.markRaw(xt),oval:e.markRaw(xt),barcode:e.markRaw(aa),qrcode:e.markRaw(da),html:e.markRaw(ma),pageNumber:e.markRaw(va)},c=e.computed(()=>m[t.element.printElementType.type]),f=e.computed(()=>t.element.printElementType.type==="table"?{showTableGhostBorder:t.showTableGhostBorder,scale:t.scale}:{}),g=e.computed(()=>{const y=t.element.options,M=E.resolveElementBorder(t.element.printElementType.type,y),N={};if(M?.all&&(N.border=`${M.all.borderWidth} ${M.all.borderStyle} ${M.all.borderColor}`),M)for(const O of E.ELEMENT_BORDER_SIDES){const A=M.edges[O];A&&(N[`border${O.charAt(0).toUpperCase()}${O.slice(1)}`]=`${A.borderWidth} ${A.borderStyle} ${A.borderColor}`)}return{position:"absolute",left:y.left+"mm",top:y.top+"mm",width:y.width+"mm",height:y.height+"mm",zIndex:y.zIndex||"auto",...N}}),h=e.computed(()=>{const y=t.element.options;return`x:${Math.round(y.left)} y:${Math.round(y.top)} ${Math.round(y.width)}×${Math.round(y.height)}mm`});let R=0,C=0;const v=e.reactive({disabled:!t.designMode||!!t.element.options.locked,getScale:()=>(t.scale||1)*E.mmToPx(1),onDrag:y=>{const M=y.left-R,N=y.top-C;n.value&&(n.value.style.transform=`translate(${M}mm, ${N}mm)`)},onDragEnd:(y,M)=>{if(M.altKey){const A=JSON.parse(JSON.stringify(t.element));A.id=E.generateId(),A.options.left=y.left,A.options.top=y.top,A.options.groupId=void 0,s("clone-element",A,{left:y.left,top:y.top}),n.value&&(n.value.style.transform="");return}const N=y.left-R,O=y.top-C;if(t.element.options.left=y.left,t.element.options.top=y.top,n.value&&(n.value.style.transform=""),t.element.options.groupId&&t.allElements)for(const A of t.allElements)A.id!==t.element.id&&A.options.groupId===t.element.options.groupId&&(A.options.left+=N,A.options.top+=O)},onStart:()=>{R=t.element.options.left,C=t.element.options.top,s("drag-start")},onStop:()=>{t.clearAdsorbGuides?.(),s("drag-stop")},onAdsorb:y=>{let M=y.left,N=y.top;return t.snapToGrid&&(M=Math.round(y.left/5)*5,N=Math.round(y.top/5)*5),t.adsorbHandler?t.adsorbHandler({id:t.element.id,left:M,top:N,width:t.element.options.width,height:t.element.options.height}):{left:M,top:N,lines:[]}}}),{setup:p,cleanup:B,isDragging:_}=El(n,v);e.watchEffect(()=>{v.disabled=!t.designMode||!!t.element.options.locked});const ne=e.computed(()=>a.value&&!!t.designMode&&!t.element.options.locked&&t.element.printElementType.type!=="table"),{startResize:G,cleanup:J}=E.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(t.scale||1)*E.mmToPx(1),getRect:()=>({left:t.element.options.left,top:t.element.options.top,width:t.element.options.width,height:t.element.options.height}),onResize:y=>{t.element.options.left=y.left,t.element.options.top=y.top,t.element.options.width=y.width,t.element.options.height=y.height},onStart:()=>{s("drag-start")},onStop:()=>{s("drag-stop")}});function b(y){t.designMode&&y.button===0&&s("select",t.element.id,y.ctrlKey||y.metaKey)}function W(){t.designMode&&s("dblclick-element",t.element.id)}function j(y,M,N){t.designMode&&s("dblclick-cell",y,M,N)}e.onMounted(()=>{t.designMode&&p()});function U(){B(),J(),t.clearAdsorbGuides?.()}return e.onUnmounted(()=>{U()}),(y,M)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:n,class:e.normalizeClass(["print-element",{selected:a.value,previewed:d.value,"design-mode":o.designMode,locked:o.element.options.locked,hidden:o.element.options.visible===!1,"drag-ghost":e.unref(_),[`type-${o.element.printElementType.type}`]:!0,[`zone-${o.zone||"content"}`]:!0}]),style:e.normalizeStyle(g.value),onMousedown:e.withModifiers(b,["stop"]),onDblclick:e.withModifiers(W,["stop"]),onContextmenu:M[0]||(M[0]=e.withModifiers(N=>y.$emit("contextmenu",o.element.id,N),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.value),e.mergeProps({element:o.element,data:o.printData,"design-mode":o.designMode,"is-selected":a.value},f.value,{onDblclickCell:j}),null,16,["element","data","design-mode","is-selected"])),e.unref(_)?(e.openBlock(),e.createElementBlock("div",fa)):e.createCommentVNode("",!0),ne.value?(e.openBlock(),e.createElementBlock("div",ga,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E.RESIZE_POINTS),N=>(e.openBlock(),e.createElementBlock("div",{key:N,class:e.normalizeClass(["resize-handle",`handle-${N}`]),onMousedown:e.withModifiers(O=>e.unref(G)(N,O),["stop"])},null,42,ha))),128))])):e.createCommentVNode("",!0),a.value&&o.designMode?(e.openBlock(),e.createElementBlock("div",ba,[e.createElementVNode("div",Ea,e.toDisplayString(h.value),1)])):e.createCommentVNode("",!0)],38))}}),ct=ce(ya,[["__scopeId","data-v-5a7482f4"]]);function ka(o={}){const r=e.ref([]),t=e.ref({width:0,height:0});function s(a,i,d){return E.computeAdsorb(a,i,d,o)}function n(a,i,d){r.value=a,t.value={width:i,height:d}}function l(){r.value=[]}return{check:s,renderLines:n,clearLines:l,guideLines:r,paperSize:t}}function Va(o){const{check:r,renderLines:t,clearLines:s,guideLines:n,paperSize:l}=ka(o.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function a(d){const m=o.getElements().filter(g=>g.id!==d.id).map(g=>({id:g.id,left:g.options.left,top:g.options.top,width:g.options.width,height:g.options.height})),c=r(d,m,o.getGuides?.()),f=o.getPaperSize();return t(c.lines,f.width,f.height),c}function i(){s()}return{requestAdsorb:a,clearGuides:i,guideLines:n,paperSize:l}}const Na=["src"],wa=["width","height","viewBox"],Ca=["x","y","font-size","fill","transform"],Sa={key:0,class:"zone-label"},xa={key:0,class:"zone-height-tip"},$a={key:0,class:"zone-label"},Ba={key:0,class:"zone-height-tip"},Da=["onMousedown","onDblclick"],Ta=e.defineComponent({__name:"CanvasPaper",props:{templateData:{},runtimeElements:{},designMode:{type:Boolean},printData:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},guides:{}},emits:["select","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","zone-height-change","zone-height-commit","guide-move","guide-remove","clone-element"],setup(o,{expose:r,emit:t}){const s=o,n=t,l=e.ref(null),a=e.computed(()=>E.getPaperDimensions(s.templateData).width),i=e.computed(()=>E.getPaperDimensions(s.templateData).height),d=e.computed(()=>s.templateData.designBackground),m=e.ref(!1);e.watch(()=>d.value?.src,()=>{m.value=!1});const c=e.computed(()=>{const S=d.value?.rotation;return S===90||S===180||S===270?S:0}),f=e.computed(()=>{const S=c.value,D=S===90||S===270,K=D?i.value:a.value,Z=D?a.value:i.value,te={width:K+"mm",height:Z+"mm",left:(a.value-K)/2+"mm",top:(i.value-Z)/2+"mm"};return S!==0&&(te.transform=`rotate(${S}deg)`),te});function g(){m.value=!0,console.warn("[print-designer] 设计背景图加载失败:",d.value?.src)}const h=e.computed(()=>`${8/(s.scale||1)}px`),R=e.computed(()=>{const S=s.scale||1,D=E.mmToPx(a.value)*S,K=E.mmToPx(i.value)*S;return{width:D+"px",height:K+"px",position:"relative"}}),C=e.computed(()=>{const S=s.templateData.margins,D=s.templateData.header.height,K=s.templateData.footer.height,Z=a.value-S.left-S.right;return{header:{left:S.left,top:S.top,width:Z,height:D},content:{left:S.left,top:S.top+D,width:Z,height:i.value-S.top-S.bottom-D-K},footer:{left:S.left,top:i.value-S.bottom-K,width:Z,height:K}}});function v(S){return{position:"absolute",left:S.left+"mm",top:S.top+"mm",width:S.width+"mm",height:S.height+"mm"}}const p=e.computed(()=>{const S={header:[],footer:[],content:[]};for(const D of s.runtimeElements)D.zone==="header"?S.header.push(D):D.zone==="footer"?S.footer.push(D):S.content.push(D);return S}),B=e.computed(()=>p.value.header),_=e.computed(()=>p.value.footer),ne=e.computed(()=>p.value.content);let G="content";const{requestAdsorb:J,clearGuides:b,guideLines:W,paperSize:j}=Va({getElements:()=>p.value[G],getPaperSize:()=>{const S=C.value[G];return{width:S.width,height:S.height}},getGuides:()=>{const S=[],D=[];for(const K of s.guides??[])K.type==="vertical"?S.push(K.position):D.push(K.position);return{vertical:S,horizontal:D}}});function U(S){G=s.runtimeElements.find(Z=>Z.id===S.id)?.zone||"content";const K=J(S);return(K.left!==S.left||K.top!==S.top)&&u(K.left+S.width/2,K.top+S.height/2),K}function y(S,D){if(S.button!==0)return;const K=D.position,Z=S.clientX,te=S.clientY,pe=s.scale??1,T=25.4/96,$=ee=>{const oe=(D.type==="vertical"?ee.clientX-Z:ee.clientY-te)/pe*T,ue=D.type==="vertical"?a.value:i.value,L=Math.min(Math.max(K+oe,0),ue);n("guide-move",D.id,L)},I=()=>{window.removeEventListener("mousemove",$),window.removeEventListener("mouseup",I)};window.addEventListener("mousemove",$),window.addEventListener("mouseup",I)}const M=e.computed(()=>({width:a.value+"mm",minHeight:i.value+"mm",background:s.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:s.scale?`scale(${s.scale})`:void 0,transformOrigin:"0 0"})),N=e.computed(()=>{const S=s.templateData.margins;return{padding:`${S.top}mm ${S.right}mm ${S.bottom}mm ${S.left}mm`,position:"relative",boxSizing:"border-box",minHeight:i.value+"mm"}}),O=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 A=0,k=null;const z=e.ref(null);function u(S,D){A+=1,z.value={left:S,top:D,key:A},k&&clearTimeout(k),k=setTimeout(()=>{z.value=null},300)}const x=e.computed(()=>he.resolveWatermarkLayout(s.templateData.watermark,s.printData,{width:a.value,height:i.value})),Y=e.ref(null);function be(S,D){D.button===0&&(se(),Y.value={zone:S,startY:D.clientY,startH:s.templateData[S].height},window.addEventListener("mousemove",ge),window.addEventListener("mouseup",fe))}function ge(S){if(!Y.value)return;const{zone:D,startY:K,startH:Z}=Y.value,pe=(S.clientY-K)/(s.scale||1)*25.4/96,T=D==="header"?pe:-pe,$=Math.min(100,i.value-s.templateData.margins.top-s.templateData.margins.bottom-(D==="header"?s.templateData.footer.height:s.templateData.header.height)-10),I=Math.min($,Math.max(0,Math.round((Z+T)*10)/10));n("zone-height-change",D,I)}function fe(){if(!Y.value)return;const S=Y.value.zone;Y.value=null,window.removeEventListener("mousemove",ge),window.removeEventListener("mouseup",fe),n("zone-height-commit",S)}function se(){window.removeEventListener("mousemove",ge),window.removeEventListener("mouseup",fe),Y.value=null}e.onUnmounted(()=>{se(),k&&clearTimeout(k)});function q(S,D){n("select",S,D)}return r({contentRef:l}),(S,D)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(R.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(M.value)},[o.designMode&&d.value?.src&&!m.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(f.value)},[e.createElementVNode("img",{src:d.value.src,draggable:"false",alt:"",onError:g},null,40,Na)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:l,style:e.normalizeStyle(N.value)},[o.showGrid&&o.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle(O.value)},null,4)):e.createCommentVNode("",!0),z.value?(e.openBlock(),e.createElementBlock("div",{key:z.value.key,class:"snap-indicator",style:e.normalizeStyle({left:z.value.left+"mm",top:z.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,(K,Z)=>(e.openBlock(),e.createElementBlock("svg",{key:Z,class:"watermark-tile",width:K.widthMm+"mm",height:K.heightMm+"mm",viewBox:`0 0 ${x.value.tileWidthPx} ${x.value.tileHeightPx}`,style:e.normalizeStyle({left:K.leftMm+"mm",top:K.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,Ca)],12,wa))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.header))},[o.designMode?(e.openBlock(),e.createElementBlock("span",Sa,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,K=>(e.openBlock(),e.createBlock(ct,{key:K.id,element:K,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":B.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"header","adsorb-handler":U,"clear-adsorb-guides":e.unref(b),onSelect:q,onDragStart:D[0]||(D[0]=Z=>S.$emit("drag-start")),onDragStop:D[1]||(D[1]=Z=>S.$emit("drag-stop")),onDblclickElement:D[2]||(D[2]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:D[3]||(D[3]=(Z,te,pe)=>S.$emit("dblclick-cell",Z,te,pe)),onContextmenu:D[4]||(D[4]=(Z,te)=>S.$emit("contextmenu",Z,te)),onCloneElement:(Z,te)=>S.$emit("clone-element",Z,te)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:D[5]||(D[5]=e.withModifiers(K=>be("header",K),["prevent","stop"]))},[Y.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",xa,e.toDisplayString(o.templateData.header.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-content",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.content))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ne.value,K=>(e.openBlock(),e.createBlock(ct,{key:K.id,element:K,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":ne.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"content","adsorb-handler":U,"clear-adsorb-guides":e.unref(b),onSelect:q,onDragStart:D[6]||(D[6]=Z=>S.$emit("drag-start")),onDragStop:D[7]||(D[7]=Z=>S.$emit("drag-stop")),onDblclickElement:D[8]||(D[8]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:D[9]||(D[9]=(Z,te,pe)=>S.$emit("dblclick-cell",Z,te,pe)),onContextmenu:D[10]||(D[10]=(Z,te)=>S.$emit("contextmenu",Z,te)),onCloneElement:(Z,te)=>S.$emit("clone-element",Z,te)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128))],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-footer",{"design-mode":o.designMode}]),style:e.normalizeStyle(v(C.value.footer))},[o.designMode?(e.openBlock(),e.createElementBlock("span",$a,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,K=>(e.openBlock(),e.createBlock(ct,{key:K.id,element:K,"design-mode":o.designMode,"print-data":o.printData,scale:o.scale,"all-elements":_.value,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,zone:"footer","adsorb-handler":U,"clear-adsorb-guides":e.unref(b),onSelect:q,onDragStart:D[11]||(D[11]=Z=>S.$emit("drag-start")),onDragStop:D[12]||(D[12]=Z=>S.$emit("drag-stop")),onDblclickElement:D[13]||(D[13]=Z=>S.$emit("dblclick-element",Z)),onDblclickCell:D[14]||(D[14]=(Z,te,pe)=>S.$emit("dblclick-cell",Z,te,pe)),onContextmenu:D[15]||(D[15]=(Z,te)=>S.$emit("contextmenu",Z,te)),onCloneElement:(Z,te)=>S.$emit("clone-element",Z,te)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),o.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:D[16]||(D[16]=e.withModifiers(K=>be("footer",K),["prevent","stop"]))},[Y.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",Ba,e.toDisplayString(o.templateData.footer.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(W),(K,Z)=>(e.openBlock(),e.createElementBlock("div",{key:Z,class:e.normalizeClass(["adsorb-guide",[`guide-${K.type}`]]),style:e.normalizeStyle(K.type==="vertical"?{left:K.position+"mm",top:"0",height:e.unref(j).height+"mm",borderLeftColor:K.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:K.position+"mm",left:"0",width:e.unref(j).width+"mm",borderTopColor:K.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.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:i.value+"mm","--guide-hit":h.value}:{top:K.position+"mm",left:"0",width:a.value+"mm","--guide-hit":h.value}),onMousedown:e.withModifiers(Z=>y(Z,K),["prevent","stop"]),onDblclick:e.withModifiers(Z=>K.id&&n("guide-remove",K.id),["prevent","stop"])},null,46,Da))),128))],4)],4)],4))}}),Ma=ce(Ta,[["__scopeId","data-v-4682b43a"]]),za=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(o,{emit:r}){const t=o,s=r,n=e.computed(()=>t.orientation==="horizontal"),l=e.computed(()=>n.value?"vertical":"horizontal"),a=e.ref(null),i=e.ref(null),d=e.computed(()=>i.value??t.cursorPx??null),m=e.computed(()=>n.value?{width:t.viewportPx+"px",height:E.RULER_THICKNESS+"px"}:{width:E.RULER_THICKNESS+"px",height:t.viewportPx+"px"});let c=0;function f(){c||(c=requestAnimationFrame(()=>{c=0,g()}))}function g(){const b=a.value;if(!b)return;const W=b.getContext("2d");if(!W)return;const j=window.devicePixelRatio||1,U=Math.max(0,Math.round(t.viewportPx)),y=E.RULER_THICKNESS;b.width=(n.value?U:y)*j,b.height=(n.value?y:U)*j,W.setTransform(j,0,0,j,0,0);const M=getComputedStyle(b),N=M.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",O=M.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",A=M.getPropertyValue("--pd-accent").trim()||"#165DFF";W.fillStyle=N,W.fillRect(0,0,n.value?U:y,n.value?y:U);const k=t.scale>0?t.scale:1,z=E.mmToPx(1)*k;if(z<=0)return;const u=-t.originPx/z,x=(U-t.originPx)/z,Y=E.chooseMajorStepMM(k),be=E.buildRulerTicks(u,x,Y);h(W,be,z,O,!0),h(W,be,z,O,!1),R(W,0,A),R(W,t.paperLengthMM,A);const ge=d.value;if(ge!==null&&ge>=0&&ge<=U){if(W.strokeStyle=A,W.lineWidth=1.5,W.beginPath(),n.value){const fe=Math.round(ge)+.5;W.moveTo(fe,0),W.lineTo(fe,y)}else{const fe=Math.round(ge)+.5;W.moveTo(0,fe),W.lineTo(y,fe)}W.stroke()}}function h(b,W,j,U,y){b.strokeStyle=U,b.fillStyle=U,b.globalAlpha=y?.32:1,b.lineWidth=1,b.font="9px ui-monospace, Menlo, monospace",b.textBaseline="top";for(const M of W){if((M.mm<0||M.mm>t.paperLengthMM)!==y)continue;const O=Math.round(t.originPx+M.mm*j)+.5,A=M.major?8:4;b.beginPath(),n.value?(b.moveTo(O,0),b.lineTo(O,A)):(b.moveTo(0,O),b.lineTo(A,O)),b.stroke(),M.major&&M.label&&(n.value?b.fillText(M.label,O+2,11):(b.save(),b.translate(11,O+2),b.rotate(-Math.PI/2),b.fillText(M.label,0,0),b.restore()))}b.globalAlpha=1}function R(b,W,j){const U=E.mmToPx(1)*(t.scale>0?t.scale:1),y=Math.round(t.originPx+W*U)+.5;y<=0||y>=t.viewportPx||(b.strokeStyle=j,b.globalAlpha=.55,b.lineWidth=1,b.beginPath(),n.value?(b.moveTo(y,0),b.lineTo(y,E.RULER_THICKNESS)):(b.moveTo(0,y),b.lineTo(E.RULER_THICKNESS,y)),b.stroke(),b.globalAlpha=1)}e.watch(()=>[t.viewportPx,t.originPx,t.paperLengthMM,t.scale,t.cursorPx,t.orientation],f),e.onMounted(f),e.onBeforeUnmount(()=>{c&&cancelAnimationFrame(c)});let C=!1;function v(b){const W=a.value;if(!W)return null;const j=W.getBoundingClientRect(),U=n.value?b.clientX-j.left:b.clientY-j.top;if(U<0||U>t.viewportPx)return null;const y=E.mmToPx(1)*(t.scale>0?t.scale:1);return(U-t.originPx)/y}function p(b){b.button===0&&(C=!0,b.preventDefault(),window.addEventListener("mousemove",G),window.addEventListener("mouseup",J),ne(b))}function B(b){const W=a.value;if(!W)return;const j=W.getBoundingClientRect();i.value=n.value?b.clientX-j.left:b.clientY-j.top,f()}function _(){i.value=null,f()}function ne(b){const W=v(b);s("guide-dragging",W)}function G(b){C&&ne(b)}function J(b){if(!C)return;C=!1,window.removeEventListener("mousemove",G),window.removeEventListener("mouseup",J);const W=v(b);W!==null&&W>=0&&W<=t.paperLengthMM&&s("add-guide",l.value,W),s("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",G),window.removeEventListener("mouseup",J)}),(b,W)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:a,class:e.normalizeClass(["pd-ruler",`is-${o.orientation}`]),style:e.normalizeStyle(m.value),onMousedown:p,onMousemove:B,onMouseleave:_},null,38))}}),$t=ce(za,[["__scopeId","data-v-1e7d0633"]]),Aa={class:"canvas-scroll"},je=96/25.4,Pa=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(o,{expose:r,emit:t}){const s=o,n=t;function l(T,$){n("select",T,$)}const a=e.ref(null),i=e.computed(()=>E.getPaperDimensions(s.templateData).width),d=e.computed(()=>E.getPaperDimensions(s.templateData).height),m=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),c=e.reactive({x:null,y:null}),f=e.reactive({x:0,y:0}),g=e.computed(()=>({transform:`translate(${f.x}px, ${f.y}px)`}));function h(){const T=a.value,$=T?.querySelector(".hiprint-printPaper");if(!T||!$)return;const I=T.getBoundingClientRect(),ee=$.getBoundingClientRect(),oe=s.scale||1,ue=ee.width/E.mmToPx(i.value);m.paperScale=Math.abs(ue-oe)<.002?oe:ue,m.originX=ee.left-I.left-E.RULER_THICKNESS,m.originY=ee.top-I.top-E.RULER_THICKNESS,m.viewW=T.clientWidth-E.RULER_THICKNESS,m.viewH=T.clientHeight-E.RULER_THICKNESS}function R(){f.x=a.value?.scrollLeft??0,f.y=a.value?.scrollTop??0,h()}let C=null,v=0;function p(){cancelAnimationFrame(v);const T=performance.now()+220,$=()=>{h(),performance.now()<T&&(v=requestAnimationFrame($))};v=requestAnimationFrame($)}const B=e.ref(null);function _(T,$){B.value=$===null?null:{type:T,mm:$}}const ne=e.computed(()=>{const T=B.value,$=a.value?.querySelector(".hiprint-printPaper");if(!T||!$)return{};const I=$.getBoundingClientRect(),ee=I.width/E.mmToPx(i.value),oe=E.mmToPx(T.mm)*(ee>0?ee:s.scale||1);return T.type==="vertical"?{left:I.left+oe+"px",top:I.top+"px",height:I.height+"px"}:{left:I.left+"px",top:I.top+oe+"px",width:I.width+"px"}});function G(T){const $=a.value?.querySelector(".hiprint-printPaper");if(!$)return;const I=$.getBoundingClientRect(),ee=s.scale||1,oe=E.pxToMm((T.clientX-I.left)/ee),ue=E.pxToMm((T.clientY-I.top)/ee);if(!(oe<0||ue<0))return{x:oe,y:ue}}function J(T){const $=G(T),I=T.dataTransfer?.getData("fieldData");if(I)try{const oe=JSON.parse(I);n("drop-field",oe,$);return}catch{}const ee=T.dataTransfer?.getData("elementType");ee&&n("drop-element",ee,$)}const b=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let W={x:0,y:0};function j(T){return!T||!(T instanceof HTMLElement)?!1:!!(T===a.value||T.classList.contains("canvas-scroll")||T.classList.contains("hiprint-printPaper")||T.classList.contains("hiprint-printPaper-content")||T.classList.contains("zone-layer")||T.classList.contains("grid-bg")||T.classList.contains("watermark-layer"))}function U(T){const $=a.value,I=$?.querySelector(".hiprint-printPaper");if(!$||!I)return;const ee=$.getBoundingClientRect();c.x=T.clientX-ee.left-E.RULER_THICKNESS,c.y=T.clientY-ee.top-E.RULER_THICKNESS;const oe=I.getBoundingClientRect(),ue=s.scale||1,L=E.pxToMm((T.clientX-oe.left)/ue),F=E.pxToMm((T.clientY-oe.top)/ue);if(L<0||F<0){n("coordinate",null);return}n("coordinate",{x:L,y:F})}function y(){n("coordinate",null),c.x=null,c.y=null}function M(T,$,I,ee){const oe=a.value;if(!oe)return;const ue=Math.max(ee,Math.round(T)),L=Math.round((s.scale||1)*100);if(ue===L)return;const F=s.scale||1,V=ue/100/F,w=getComputedStyle(oe),P=parseFloat(w.paddingLeft)||0,ae=parseFloat(w.paddingTop)||0,me=oe.scrollLeft+$-P,ye=oe.scrollTop+I-ae;n("zoom",ue-L),e.nextTick(()=>{const we=getComputedStyle(oe),xe=parseFloat(we.paddingLeft)||0,Re=parseFloat(we.paddingTop)||0;oe.scrollLeft=me*V-$+xe,oe.scrollTop=ye*V-I+Re})}function N(T){if(!(T.ctrlKey||T.metaKey))return;T.preventDefault();const $=a.value;if(!$)return;const I=Math.round((s.scale||1)*100),ee=E.nextWheelScale(I,T.deltaY>0?-1:1);if(ee===I)return;const oe=$.getBoundingClientRect();M(ee,T.clientX-oe.left,T.clientY-oe.top,E.MIN_SCALE_PERCENT)}function O(T){const $=a.value;if(!$)return;const I=Math.round((s.scale||1)*100),ee=E.nextWheelScale(I,T);M(ee,$.clientWidth/2,$.clientHeight/2,E.MIN_SCALE_PERCENT)}function A(T){const $=a.value;if(!$)return;const I=$.querySelector(".hiprint-printPaper"),ee=I?.style.transition??"";I&&(I.style.transition="none"),M(T,$.clientWidth/2,$.clientHeight/2,E.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{I&&(I.style.transition=ee)})}function k(T){T.button!==2&&j(T.target)&&(n("clear-selection"),W={x:T.clientX,y:T.clientY},b.visible=!0,b.x=T.clientX,b.y=T.clientY,b.w=0,b.h=0,window.addEventListener("mousemove",u),window.addEventListener("mouseup",x))}function z(){if(b.w<3||b.h<3)return[];const T=a.value?.querySelector(".hiprint-printPaper");if(!T)return[];const $=T.getBoundingClientRect(),I=s.scale||1,ee=b.x<W.x,oe=[];for(const ue of s.elements){if(ue.options.visible===!1||ue.options.locked)continue;const L=$.left+ue.options.left*je*I,F=$.top+ue.options.top*je*I,V=L+ue.options.width*je*I,w=F+ue.options.height*je*I,P=L<b.x+b.w&&V>b.x&&F<b.y+b.h&&w>b.y,ae=L>=b.x&&V<=b.x+b.w&&F>=b.y&&w<=b.y+b.h;(ee?ae:P)&&oe.push(ue.id)}return oe}function u(T){const $=T.clientX-W.x,I=T.clientY-W.y;b.x=$>=0?W.x:T.clientX,b.y=I>=0?W.y:T.clientY,b.w=Math.abs($),b.h=Math.abs(I),n("preview",z())}function x(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",x);const T=z();n("preview",T),T.length>0?n("commit-preview"):n("clear-selection"),n("preview",[]),b.visible=!1}const Y=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),be=e.ref(null),ge=e.inject(Je,null);function fe(T,$){if(!$&&!j(T.target))return;$&&!ge?.value.has($)&&n("select",$,!1),Y.targetId=$??null,Y.visible=!0,Y.x=T.clientX,Y.y=T.clientY,Y.flipX=0,Y.flipY=0,e.nextTick(()=>{const ee=be.value;if(!ee)return;const oe=ee.getBoundingClientRect(),ue=4;T.clientX+oe.width+ue>window.innerWidth&&(Y.flipX=-oe.width),T.clientY+oe.height+ue>window.innerHeight&&(Y.flipY=-oe.height)}),window.removeEventListener("mousedown",q);const I=++se;e.nextTick(()=>{I===se&&window.addEventListener("mousedown",q)})}let se=0;function q(T){const $=be.value;$&&$.contains(T.target)||S()}function S(){Y.visible=!1,window.removeEventListener("mousedown",q)}function D(){S(),s.hasClipboard&&n("paste")}function K(){S(),n("select-all")}function Z(){S(),n("clear-selection")}function te(T,$){S(),T==="copy"?n("copy"):T==="cut"?n("cut"):T==="paste"?D():T==="delete"?n("delete"):T==="move-layer"&&n("move-layer",$)}e.onMounted(()=>{e.nextTick(h),a.value&&typeof ResizeObserver<"u"&&(C=new ResizeObserver(h),C.observe(a.value))}),e.watch(()=>s.scale,p),e.watch([i,d],()=>e.nextTick(h));function pe(){const T=a.value;if(!T)return;let $=0,I=0,ee=0;const oe=performance.now()+800,ue=()=>{const{scrollWidth:L,scrollHeight:F}=T;if(L===I&&F===ee?$++:$=0,I=L,ee=F,$>=2||performance.now()>oe){const V=T.scrollWidth,w=T.scrollHeight,P=T.clientWidth,ae=T.clientHeight;T.scrollLeft=Math.max(0,(V-P)/2),T.scrollTop=Math.max(0,(w-ae)/2);return}requestAnimationFrame(ue)};requestAnimationFrame(ue)}return r({centerScroll:pe,fitToWindow:A,zoomByStep:O}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",x),window.removeEventListener("mousedown",q),C?.disconnect(),cancelAnimationFrame(v)}),(T,$)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:a,class:"canvas-area",onDragover:$[23]||($[23]=e.withModifiers(()=>{},["prevent"])),onDrop:J,onMousedown:k,onMousemove:U,onMouseleave:y,onWheel:N,onScroll:R,onContextmenu:e.withModifiers(fe,["prevent"])},[e.createElementVNode("div",Aa,[e.createVNode(Ma,{"template-data":o.templateData,"runtime-elements":o.elements,"design-mode":!0,"print-data":[],scale:o.scale,"show-grid":o.showGrid,"snap-to-grid":o.snapToGrid,"show-table-ghost-border":o.showTableGhostBorder,guides:o.guides,onSelect:l,onGuideMove:$[0]||($[0]=(I,ee)=>T.$emit("guide-move",I,ee)),onGuideRemove:$[1]||($[1]=I=>T.$emit("guide-remove",I)),onDragStart:$[2]||($[2]=I=>T.$emit("drag-start")),onDragStop:$[3]||($[3]=I=>T.$emit("drag-stop")),onDblclickElement:$[4]||($[4]=I=>T.$emit("dblclick-element",I)),onDblclickCell:$[5]||($[5]=(I,ee,oe)=>T.$emit("dblclick-cell",I,ee,oe)),onContextmenu:$[6]||($[6]=(I,ee)=>fe(ee,I)),onZoneHeightChange:$[7]||($[7]=(I,ee)=>T.$emit("zone-height-change",I,ee)),onZoneHeightCommit:$[8]||($[8]=I=>T.$emit("zone-height-commit",I)),onCloneElement:$[9]||($[9]=(I,ee)=>T.$emit("clone-element",I,ee))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"])]),o.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(g.value)},[$[24]||($[24]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode($t,{orientation:"horizontal","viewport-px":m.viewW,"origin-px":m.originX,"paper-length-m-m":i.value,scale:m.paperScale,"cursor-px":c.x,onAddGuide:$[10]||($[10]=(I,ee)=>n("add-guide",I,ee)),onGuideDragging:$[11]||($[11]=I=>_("vertical",I))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode($t,{orientation:"vertical","viewport-px":m.viewH,"origin-px":m.originY,"paper-length-m-m":d.value,scale:m.paperScale,"cursor-px":c.y,onAddGuide:$[12]||($[12]=(I,ee)=>n("add-guide",I,ee)),onGuideDragging:$[13]||($[13]=I=>_("horizontal",I))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),B.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${B.value.type}`]),style:e.normalizeStyle(ne.value)},null,6)):e.createCommentVNode("",!0),b.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:b.x+"px",top:b.y+"px",width:b.w+"px",height:b.h+"px"})},null,4)):e.createCommentVNode("",!0),Y.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:be,class:"context-menu",onMousedown:$[22]||($[22]=e.withModifiers(()=>{},["stop"])),style:e.normalizeStyle({left:Y.x+Y.flipX+"px",top:Y.y+Y.flipY+"px"})},[Y.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:$[14]||($[14]=I=>te("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:$[15]||($[15]=I=>te("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:$[16]||($[16]=I=>te("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:$[17]||($[17]=I=>te("delete"))},"删除"),$[25]||($[25]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:$[18]||($[18]=I=>te("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:$[19]||($[19]=I=>te("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:$[20]||($[20]=I=>te("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:$[21]||($[21]=I=>te("move-layer","bottom"))},"置底")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!o.hasClipboard}]),onClick:D},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:K},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:Z},"取消选择")],64))],36)):e.createCommentVNode("",!0)],544))}}),Ra=ce(Pa,[["__scopeId","data-v-427d3548"]]),La={class:"property-search"},Ua=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(o,{emit:r}){const t=e.ref(""),s=r;function n(){s("search",t.value)}return(l,a)=>(e.openBlock(),e.createElementBlock("div",La,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":a[0]||(a[0]=i=>t.value=i),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:n},null,544),[[e.vModelText,t.value]])]))}}),Ia=ce(Ua,[["__scopeId","data-v-10ab6c84"]]),Fa={class:"group-icon"},Ha={class:"group-title"},Oa={class:"expand-icon"},Wa={class:"group-content"},Ga=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(o){const r=o,t=e.ref(r.defaultExpanded??!0),n={Document:"≡",Brush:"◧",Setting:"⚙"}[r.icon]||"•";function l(){t.value=!t.value,a()}function a(){const d=`property-group-${r.groupKey}`;try{localStorage.setItem(d,String(t.value))}catch{}}function i(){const d=`property-group-${r.groupKey}`;try{const m=localStorage.getItem(d);m!==null&&(t.value=m==="true")}catch{}}return e.onMounted(()=>{i()}),(d,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":t.value}])},[e.createElementVNode("div",{class:"group-header",onClick:l},[e.createElementVNode("span",Fa,e.toDisplayString(e.unref(n)),1),e.createElementVNode("span",Ha,e.toDisplayString(o.title),1),e.createElementVNode("span",Oa,e.toDisplayString(t.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",Wa,[e.renderSlot(d.$slots,"default",{},void 0,!0)],512),[[e.vShow,t.value]])],2))}}),$e=ce(Ga,[["__scopeId","data-v-2ba57031"]]),Ka={class:"position-grid"},qa={class:"pd-field"},Ya={class:"pd-field"},ja={class:"pd-field"},Xa={class:"pd-field"},Za=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const r=o;function t(s){return r.searching?r.matchedKeys?.has(s)??!0:!0}return(s,n)=>(e.openBlock(),e.createBlock($e,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:n[4]||(n[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Ka,[e.withDirectives(e.createElementVNode("div",qa,[n[5]||(n[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(re,{modelValue:o.element.options.left,"onUpdate:modelValue":n[0]||(n[0]=l=>o.element.options.left=l),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-left")]]),e.withDirectives(e.createElementVNode("div",Ya,[n[6]||(n[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(re,{modelValue:o.element.options.top,"onUpdate:modelValue":n[1]||(n[1]=l=>o.element.options.top=l),min:0},null,8,["modelValue"])],512),[[e.vShow,t("ps-top")]]),e.withDirectives(e.createElementVNode("div",ja,[n[7]||(n[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(re,{modelValue:o.element.options.width,"onUpdate:modelValue":n[2]||(n[2]=l=>o.element.options.width=l),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-width")]]),e.withDirectives(e.createElementVNode("div",Xa,[n[8]||(n[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(re,{modelValue:o.element.options.height,"onUpdate:modelValue":n[3]||(n[3]=l=>o.element.options.height=l),min:4},null,8,["modelValue"])],512),[[e.vShow,t("ps-height")]])])],32)]),_:1}))}}),Ja=ce(Za,[["__scopeId","data-v-bc364679"]]),Qa={class:"pd-field"},_a={class:"pd-field"},ei={class:"pd-field"},ti={class:"pd-field"},oi={class:"pd-radio-group",role:"radiogroup"},ni={class:"pd-radio"},li={class:"pd-radio"},ai={class:"pd-radio"},ii={class:"pd-field"},ri={class:"pd-radio-group",role:"radiogroup"},si={class:"pd-radio"},di={class:"pd-radio"},ci={class:"pd-radio"},ui={class:"color-row"},mi={class:"pd-field"},pi={class:"pd-field"},vi={class:"pd-field"},fi={class:"pd-field"},gi={class:"pd-field"},hi=["value"],bi={key:0,class:"pd-field"},Ei={class:"pd-field"},yi=["checked"],ki={key:1,class:"pd-empty"},Vi=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(o){const r=o;function t(a){return r.searching?r.matchedKeys?.has(a)??!0:!0}const s=e.computed(()=>r.element.printElementType.type==="table"),n=e.computed(()=>E.resolveElementTextFit(r.element.printElementType.type||"text",r.element.options));function l(a){r.element.options.textFit=a.target.value}return(a,i)=>(e.openBlock(),e.createBlock($e,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[15]||(i[15]=e.withModifiers(()=>{},["prevent"]))},[o.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",Qa,[i[16]||(i[16]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(ht,{modelValue:o.element.options.fontFamily,"onUpdate:modelValue":i[0]||(i[0]=d=>o.element.options.fontFamily=d)},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",_a,[i[17]||(i[17]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(re,{modelValue:o.element.options.fontSize,"onUpdate:modelValue":i[1]||(i[1]=d=>o.element.options.fontSize=d),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,t("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",ei,[i[19]||(i[19]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":i[2]||(i[2]=d=>o.element.options.fontWeight=d),style:{width:"100%"}},[...i[18]||(i[18]=[e.createElementVNode("option",{value:"normal"},"正常",-1),e.createElementVNode("option",{value:"bold"},"粗体",-1),e.createElementVNode("option",{value:"bolder"},"更粗",-1),e.createElementVNode("option",{value:"lighter"},"细体",-1)])],512),[[e.vModelSelect,o.element.options.fontWeight]])],512),[[e.vShow,t("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",ti,[i[23]||(i[23]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",oi,[e.createElementVNode("label",ni,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[3]||(i[3]=d=>o.element.options.textAlign=d),value:"left"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),i[20]||(i[20]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",li,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[4]||(i[4]=d=>o.element.options.textAlign=d),value:"center"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),i[21]||(i[21]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",ai,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[5]||(i[5]=d=>o.element.options.textAlign=d),value:"right"},null,512),[[e.vModelRadio,o.element.options.textAlign]]),i[22]||(i[22]=e.createElementVNode("span",null,"右",-1))])])],512),[[e.vShow,t("ap-align")]]),e.withDirectives(e.createElementVNode("div",ii,[i[27]||(i[27]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",ri,[e.createElementVNode("label",si,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[6]||(i[6]=d=>o.element.options.verticalAlign=d),value:"top"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),i[24]||(i[24]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",di,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[7]||(i[7]=d=>o.element.options.verticalAlign=d),value:"middle"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),i[25]||(i[25]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",ci,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":i[8]||(i[8]=d=>o.element.options.verticalAlign=d),value:"bottom"},null,512),[[e.vModelRadio,o.element.options.verticalAlign]]),i[26]||(i[26]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,t("ap-vertical-align")]]),e.createElementVNode("div",ui,[e.withDirectives(e.createElementVNode("div",mi,[i[28]||(i[28]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:o.element.options.color,"onUpdate:modelValue":i[9]||(i[9]=d=>o.element.options.color=d)},null,8,["modelValue"])],512),[[e.vShow,t("ap-color")]]),e.withDirectives(e.createElementVNode("div",pi,[i[29]||(i[29]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":i[10]||(i[10]=d=>o.element.options.backgroundColor=d)},null,8,["modelValue"])],512),[[e.vShow,t("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",vi,[i[30]||(i[30]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(re,{modelValue:o.element.options.lineHeight,"onUpdate:modelValue":i[11]||(i[11]=d=>o.element.options.lineHeight=d),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,t("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",fi,[i[31]||(i[31]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(re,{modelValue:o.element.options.letterSpacing,"onUpdate:modelValue":i[12]||(i[12]=d=>o.element.options.letterSpacing=d),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,t("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",gi,[i[33]||(i[33]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:n.value,style:{width:"100%"},onChange:l},[...i[32]||(i[32]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,hi)],512),[[e.vShow,t("ap-text-fit")]]),n.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",bi,[i[34]||(i[34]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(re,{"model-value":o.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":i[13]||(i[13]=d=>o.element.options.shrinkMinFontSize=d??void 0)},null,8,["model-value"])],512)),[[e.vShow,t("ap-shrink-min")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",Ei,[i[35]||(i[35]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:o.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:i[14]||(i[14]=d=>o.element.options.wordWrap=d.target.checked?void 0:!1)},null,40,yi)],512),[[e.vShow,t("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),!o.isTextType&&!s.value?(e.openBlock(),e.createElementBlock("p",ki,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),Ni=ce(Vi,[["__scopeId","data-v-ec9e5cb7"]]),wi={class:"pd-field"},Ci=["value"],Si={class:"pd-field"},xi=["value"],$i={class:"pd-hint"},Bi={class:"pd-field"},Di={class:"pd-field"},Ti=["checked"],Mi={class:"pd-field"},zi={key:1,class:"pd-field"},Ai=["value"],Pi={key:2,class:"pd-hint"},Ri={key:3,class:"pd-field"},Li=["value"],Ui={class:"pd-field"},Ii={class:"pd-field"},Fi=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(o,{emit:r}){const t=o,s=r,n=e.computed(()=>t.element.printElementType.type==="barcode"),l=e.computed(()=>t.element.printElementType.type==="qrcode"),a=e.computed(()=>(t.element.options.barcodeType||"CODE128").toUpperCase()),i=e.computed(()=>t.element.options.printerDpi?String(t.element.options.printerDpi):""),d=e.computed(()=>!!t.element.options.printerDpi),m=e.computed(()=>n.value&&d.value);function c(C){const v=Number(C.target.value);t.element.options.printerDpi=v>0?v:void 0,R()}function f(C){const v=C.target.value;t.element.options.barcodeType=v==="CODE128"?void 0:v,R()}function g(C){t.element.options.fit=C.target.value||void 0,R()}function h(C){return t.searching?t.matchedKeys?.has(C)??!0:!0}function R(){s("change")}return(C,v)=>(e.openBlock(),e.createBlock($e,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:v[6]||(v[6]=e.withModifiers(()=>{},["prevent"]))},[n.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",wi,[v[8]||(v[8]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:a.value,onChange:f},[...v[7]||(v[7]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,Ci)],512),[[e.vShow,h("cd-type")]]),e.withDirectives(e.createElementVNode("div",Si,[v[10]||(v[10]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:i.value,onChange:c},[...v[9]||(v[9]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,xi)],512),[[e.vShow,h("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",$i,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,h("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",Bi,[v[11]||(v[11]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(re,{"model-value":o.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":v[0]||(v[0]=p=>{o.element.options.barWidth=p,R()})},null,8,["model-value"])],512),[[e.vShow,h("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(m.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,h("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",Di,[v[12]||(v[12]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:o.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:v[1]||(v[1]=p=>{o.element.options.hideTitle=p.target.checked?void 0:!0,R()})},null,40,Ti)],512),[[e.vShow,h("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",Mi,[v[13]||(v[13]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(re,{"model-value":o.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":v[2]||(v[2]=p=>{o.element.options.fontSize=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,h("cd-font-size")]])],64)):l.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",zi,[v[15]||(v[15]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(o.element.options.qrCodeLevel??"M"),onChange:v[3]||(v[3]=p=>{o.element.options.qrCodeLevel=p.target.value,R()})},[...v[14]||(v[14]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Ai)],512)),[[e.vShow,h("cd-ec-level")]]):e.createCommentVNode("",!0),v[20]||(v[20]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),n.value?(e.openBlock(),e.createElementBlock("p",Pi,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),n.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",Ri,[v[17]||(v[17]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:o.element.options.fit||"contain",onChange:g},[...v[16]||(v[16]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,Li)],512)),[[e.vShow,h("cd-fit")]]),e.withDirectives(e.createElementVNode("div",Ui,[v[18]||(v[18]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(re,{"model-value":o.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[4]||(v[4]=p=>{o.element.options.maxWidth=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,h("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",Ii,[v[19]||(v[19]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(re,{"model-value":o.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":v[5]||(v[5]=p=>{o.element.options.maxHeight=p??void 0,R()})},null,8,["model-value"])],512),[[e.vShow,h("cd-max-height")]])],32)]),_:1}))}}),Hi={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},Oi={class:"pd-dialog-header"},Wi={class:"expression-editor"},Gi={class:"ee-nav"},Ki={class:"ee-nav-tabs"},qi={class:"ee-content"},Yi={class:"ee-content-search"},ji=["placeholder"],Xi={class:"ee-content-list"},Zi={class:"ee-field-group-icon"},Ji=["onDblclick"],Qi={class:"ee-field-info"},_i={class:"ee-item-label"},er={class:"ee-item-key"},tr={key:0,class:"pd-empty"},or=["onDblclick"],nr={class:"ee-field-info"},lr={class:"ee-item-label"},ar={class:"ee-item-key"},ir={class:"ee-func-group"},rr=["onDblclick"],sr={class:"ee-field-info"},dr={class:"ee-item-label"},cr={class:"ee-item-key"},ur={class:"ee-func-group"},mr=["onDblclick"],pr={class:"ee-field-info"},vr={class:"ee-item-label"},fr={class:"ee-item-key"},gr={class:"ee-func-group"},hr=["onDblclick"],br={class:"ee-field-info"},Er={class:"ee-item-label"},yr={class:"ee-item-key"},kr={class:"ee-editor"},Vr={class:"ee-editor-section"},Nr={class:"ee-editor-section"},wr={class:"pd-dialog-footer"},Cr=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(o,{emit:r}){const t=o,s=r,n=e.computed({get:()=>t.modelValue,set:U=>s("update:modelValue",U)}),l=e.ref("field"),a=e.computed(()=>{switch(l.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),i=e.ref(""),d=e.computed(()=>E.filterGroups(E.groupFields(t.fields??[]),i.value));e.watch(n,U=>{U&&(p.value=t.expression||"")});function m(U){const{insideParens:y}=g();W(y?U.fieldKey:`{${U.fieldKey}}`)}function c(U){const{insideParens:y}=g();W(y?U.template.replace(/^\{|\}$/g,""):U.template)}function f(U){const{insideBlock:y}=g(),M=y?U.template:`{${U.template}}`,N=M.indexOf("(")+1;W(M,N)}function g(){const y=B.value?.selectionStart??p.value.length,M=p.value.substring(0,y);let N=!1;const O=M.lastIndexOf("{");O!==-1&&!M.slice(O+1).includes("}")&&(N=!0);let A=!1;const k=M.lastIndexOf("(");return k!==-1&&!M.slice(k+1).includes(")")&&(A=!0),{insideBlock:N,insideParens:A}}const h=e.computed(()=>{if(!i.value.trim())return J;const U=i.value.trim().toLowerCase();return J.filter(y=>y.label.toLowerCase().includes(U)||y.name.toLowerCase().includes(U))}),R=e.computed(()=>{if(!i.value.trim())return _;const U=i.value.trim().toLowerCase();return _.filter(y=>y.label.toLowerCase().includes(U)||y.name.toLowerCase().includes(U))}),C=e.computed(()=>{if(!i.value.trim())return ne;const U=i.value.trim().toLowerCase();return ne.filter(y=>y.label.toLowerCase().includes(U)||y.name.toLowerCase().includes(U))}),v=e.computed(()=>{if(!i.value.trim())return G;const U=i.value.trim().toLowerCase();return G.filter(y=>y.label.toLowerCase().includes(U)||y.name.toLowerCase().includes(U))}),p=e.ref(t.expression||""),B=e.ref(null);e.watch(()=>t.expression,U=>{p.value=U||""});const _=[{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()"}],ne=[{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()"}],G=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],J=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],b=e.computed(()=>{if(!p.value.trim())return"(输入表达式后预览)";try{const U={...E.DEFAULT_DEMO_DATA,...he.resolveSystemVariables()},y=E.evaluateTemplate(p.value,U);return y==null?"(无法计算)":String(y)}catch{return"(表达式错误)"}});function W(U,y=U.length){const M=B.value;if(!M){p.value+=U;return}const N=M.selectionStart,O=M.selectionEnd,A=p.value.substring(0,N),k=p.value.substring(O);p.value=A+U+k;const z=N+y;e.nextTick(()=>{M.focus(),M.selectionStart=M.selectionEnd=z})}function j(){s("update:expression",p.value),n.value=!1}return(U,y)=>n.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:y[7]||(y[7]=e.withKeys(M=>n.value=!1,["esc"]))},[e.createElementVNode("section",Hi,[e.createElementVNode("header",Oi,[y[8]||(y[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:y[0]||(y[0]=M=>n.value=!1)},"×")]),e.createElementVNode("div",Wi,[e.createElementVNode("div",Gi,[y[9]||(y[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",Ki,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:l.value==="field"}]),onClick:y[1]||(y[1]=M=>l.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:l.value==="variable"}]),onClick:y[2]||(y[2]=M=>l.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:l.value==="function"}]),onClick:y[3]||(y[3]=M=>l.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",qi,[e.createElementVNode("div",Yi,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":y[4]||(y[4]=M=>i.value=M),placeholder:a.value},null,8,ji),[[e.vModelText,i.value]])]),e.createElementVNode("div",Xi,[l.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,M=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:M.key||"_top"},[M.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":M.isList}])},[e.createElementVNode("span",Zi,e.toDisplayString(M.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(M.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.fields,N=>(e.openBlock(),e.createElementBlock("div",{key:N.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:M.key?"22px":"10px"}),onDblclick:O=>m(N)},[e.createElementVNode("div",Qi,[e.createElementVNode("span",_i,e.toDisplayString(N.fieldLabel),1),e.createElementVNode("span",er,e.toDisplayString(N.fieldKey),1)])],44,Ji))),128))],64))),128)),d.value.length===0?(e.openBlock(),e.createElementBlock("p",tr,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),l.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(h.value,M=>(e.openBlock(),e.createElementBlock("div",{key:M.name,class:"ee-list-item",onDblclick:N=>c(M)},[e.createElementVNode("div",nr,[e.createElementVNode("span",lr,e.toDisplayString(M.label),1),e.createElementVNode("span",ar,e.toDisplayString(M.template),1)])],40,or))),128)):e.createCommentVNode("",!0),l.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",ir,[y[10]||(y[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,M=>(e.openBlock(),e.createElementBlock("div",{key:M.name,class:"ee-list-item",onDblclick:N=>f(M)},[e.createElementVNode("div",sr,[e.createElementVNode("span",dr,e.toDisplayString(M.label),1),e.createElementVNode("span",cr,e.toDisplayString(M.name)+"()",1)])],40,rr))),128))]),e.createElementVNode("div",ur,[y[11]||(y[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,M=>(e.openBlock(),e.createElementBlock("div",{key:M.name,class:"ee-list-item",onDblclick:N=>f(M)},[e.createElementVNode("div",pr,[e.createElementVNode("span",vr,e.toDisplayString(M.label),1),e.createElementVNode("span",fr,e.toDisplayString(M.name)+"()",1)])],40,mr))),128))]),e.createElementVNode("div",gr,[y[12]||(y[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,M=>(e.openBlock(),e.createElementBlock("div",{key:M.name,class:"ee-list-item",onDblclick:N=>f(M)},[e.createElementVNode("div",br,[e.createElementVNode("span",Er,e.toDisplayString(M.label),1),e.createElementVNode("span",yr,e.toDisplayString(M.name)+"()",1)])],40,hr))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",kr,[e.createElementVNode("div",Vr,[y[13]||(y[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:B,"onUpdate:modelValue":y[5]||(y[5]=M=>p.value=M),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,p.value]])]),e.createElementVNode("div",Nr,[y[14]||(y[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)]),y[15]||(y[15]=e.createStaticVNode('<div class="ee-help-section" data-v-3fb017fe><div class="ee-help-title" data-v-3fb017fe>帮助信息</div><div class="ee-help-grid" data-v-3fb017fe><div class="ee-help-card ee-help-field" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>输入方式</div><div class="ee-help-card-content" data-v-3fb017fe> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-3fb017fe> 静态数据直接输入即可,如:供应商名称<br data-v-3fb017fe> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-3fb017fe> 示例:{SUM(supplier.name)}<br data-v-3fb017fe> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>函数使用</div><div class="ee-help-card-content" data-v-3fb017fe> SUM(字段) - 求和<br data-v-3fb017fe> AVG(字段) - 平均值<br data-v-3fb017fe> COUNT(字段) - 计数<br data-v-3fb017fe> IF(条件, 真值, 假值) - 条件判断<br data-v-3fb017fe> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-3fb017fe> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>系统变量</div><div class="ee-help-card-content" data-v-3fb017fe> {pageIndex} - 当前页码<br data-v-3fb017fe> {totalPages} - 总页数<br data-v-3fb017fe> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-3fb017fe><div class="ee-help-card-title" data-v-3fb017fe>示例</div><div class="ee-help-card-content" data-v-3fb017fe> 静态文本:供应商名称<br data-v-3fb017fe> 动态字段:{supplier.name}<br data-v-3fb017fe> 函数调用:{SUM(amount)}<br data-v-3fb017fe> 条件判断:{IF(amount&gt;1000, &quot;大单&quot;, &quot;小单&quot;)}<br data-v-3fb017fe> 运算并修约:{ROUND(qty * price, 2)} </div></div></div></div>',1))])]),e.createElementVNode("footer",wr,[e.createElementVNode("button",{type:"button",class:"pd-button",onClick:y[6]||(y[6]=M=>n.value=!1)},"取消"),e.createElementVNode("button",{type:"button",class:"pd-button primary",onClick:j},"确定")])])],32)):e.createCommentVNode("",!0)}}),Qe=ce(Cr,[["__scopeId","data-v-3fb017fe"]]),Sr={class:"pd-field"},xr={class:"pd-label"},$r=["value","placeholder"],Br=e.defineComponent({__name:"BindingControl",props:{descriptor:{},modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:r}){const t=r,s=e.ref(!1);function n(){s.value=!0}return(l,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",Sr,[e.createElementVNode("span",xr,e.toDisplayString(o.descriptor.label),1),e.createElementVNode("input",{value:o.modelValue,class:"pd-input",placeholder:o.descriptor.placeholder||"输入内容,支持 {字段} 表达式",onInput:a[0]||(a[0]=i=>t("update:modelValue",i.target.value)),onDblclick:n},null,40,$r)]),e.createVNode(Qe,{modelValue:s.value,"onUpdate:modelValue":a[1]||(a[1]=i=>s.value=i),fields:o.fields,expression:o.modelValue,"onUpdate:expression":a[2]||(a[2]=i=>t("update:modelValue",i))},null,8,["modelValue","fields","expression"])],64))}}),Dr={class:"pd-field"},Tr=["value"],Mr=["value"],zr={class:"pd-field"},Ar={class:"pd-field"},Pr={class:"pd-field"},Rr={class:"pd-field"},Lr={style:{width:"60px"}},Ur=e.defineComponent({__name:"TableSettingsGroup",props:{element:{},fields:{}},setup(o){const r=o,t=e.inject(He,null),s=e.computed(()=>r.fields.filter(a=>a.fieldType==="list").map(a=>({label:a.fieldLabel,value:a.fieldKey})));function n(a){r.element.options.dataSource=a||void 0,t?.recordHistory()}function l(a,i){if(i===void 0)return;const d=r.element.options.tableColWidths,m=t?.maxTableWidth.value??1/0,c=d.reduce((f,g,h)=>h===a?f:f+g,0);if(c+i>m){const f=Math.max(5,Math.round((m-c)*10)/10);alert(`表格总宽不能超过打印范围宽度 ${m}mm,列${a+1} 已调整为 ${f}mm`),d[a]=f}else d[a]=i;E.syncTableElementSize(r.element.options),t?.recordHistory()}return(a,i)=>(e.openBlock(),e.createBlock($e,{title:"表格设置",icon:"Grid","default-expanded":"","group-key":"table-settings"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Dr,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"列表数据源字段",-1)),e.createElementVNode("select",{value:o.element.options.dataSource,class:"pd-select",style:{width:"100%"},onChange:i[0]||(i[0]=d=>n(d.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,d=>(e.openBlock(),e.createElementBlock("option",{key:d.value,value:d.value},e.toDisplayString(d.label),9,Mr))),128))],40,Tr)]),e.createElementVNode("div",zr,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"默认字号 (pt)",-1)),e.createVNode(re,{modelValue:o.element.options.tableDefaultFontSize,"onUpdate:modelValue":i[1]||(i[1]=d=>o.element.options.tableDefaultFontSize=d),min:5,max:72,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",Ar,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"默认文字颜色",-1)),e.createVNode(Ne,{modelValue:o.element.options.tableDefaultColor,"onUpdate:modelValue":i[2]||(i[2]=d=>o.element.options.tableDefaultColor=d)},null,8,["modelValue"])]),e.createElementVNode("div",Pr,[i[8]||(i[8]=e.createElementVNode("span",{class:"pd-label"},"默认内边距 (mm)",-1)),e.createVNode(re,{modelValue:o.element.options.tableDefaultPadding,"onUpdate:modelValue":i[3]||(i[3]=d=>o.element.options.tableDefaultPadding=d),min:0,max:10,step:.5,placeholder:"默认"},null,8,["modelValue"])]),e.createElementVNode("div",Rr,[i[9]||(i[9]=e.createElementVNode("span",{class:"pd-label"},"列宽 (mm)",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.element.options.tableColWidths,(d,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:"col-width-row"},[e.createElementVNode("span",Lr,"列"+e.toDisplayString(m+1),1),e.createVNode(re,{"model-value":d,min:5,max:200,"onUpdate:modelValue":c=>l(m,c)},null,8,["model-value","onUpdate:modelValue"])]))),128))])],32)]),_:1}))}}),Ir=ce(Ur,[["__scopeId","data-v-b5fdc7ff"]]),Fr={class:"border-row"},Hr={class:"pd-field"},Or={class:"pd-field"},Wr={class:"pd-field"},Gr=e.defineComponent({__name:"BorderBgGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const r=o;function t(s){return r.searching?r.matchedKeys?.has(s)??!0:!0}return(s,n)=>(e.openBlock(),e.createBlock($e,{title:"边框与背景",icon:"Picture","default-expanded":"","group-key":"border-bg"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:n[3]||(n[3]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",Fr,[e.withDirectives(e.createElementVNode("div",Hr,[n[4]||(n[4]=e.createElementVNode("span",{class:"pd-label"},"边框宽度",-1)),e.createVNode(re,{modelValue:o.element.options.borderWidth,"onUpdate:modelValue":n[0]||(n[0]=l=>o.element.options.borderWidth=l),min:0,max:20,step:.25},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-width")]]),e.withDirectives(e.createElementVNode("div",Or,[n[5]||(n[5]=e.createElementVNode("span",{class:"pd-label"},"边框颜色",-1)),e.createVNode(Ne,{modelValue:o.element.options.borderColor,"onUpdate:modelValue":n[1]||(n[1]=l=>o.element.options.borderColor=l)},null,8,["modelValue"])],512),[[e.vShow,t("bb-border-color")]])]),e.withDirectives(e.createElementVNode("div",Wr,[n[6]||(n[6]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:o.element.options.backgroundColor,"onUpdate:modelValue":n[2]||(n[2]=l=>o.element.options.backgroundColor=l)},null,8,["modelValue"])],512),[[e.vShow,t("bb-bg-color")]])],32)]),_:1}))}}),Kr=ce(Gr,[["__scopeId","data-v-e0e6d714"]]),qr={class:"advanced-row"},Yr={class:"pd-field"},jr={class:"pd-field"},Xr={class:"pd-field"},Zr={class:"pd-field"},Jr=e.defineComponent({__name:"AdvancedGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["delete-element"],setup(o){const r=o;function t(s){return r.searching?r.matchedKeys?.has(s)??!0:!0}return(s,n)=>(e.openBlock(),e.createBlock($e,{title:"高级设置",icon:"Setting","group-key":"advanced"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:n[4]||(n[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",qr,[e.withDirectives(e.createElementVNode("div",Yr,[n[5]||(n[5]=e.createElementVNode("span",{class:"pd-label"},"锁定",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":n[0]||(n[0]=l=>o.element.options.locked=l)},null,512),[[e.vModelCheckbox,o.element.options.locked]])],512),[[e.vShow,t("ad-locked")]]),e.withDirectives(e.createElementVNode("div",jr,[n[6]||(n[6]=e.createElementVNode("span",{class:"pd-label"},"每页重复",-1)),e.withDirectives(e.createElementVNode("input",{type:"checkbox",class:"pd-switch","onUpdate:modelValue":n[1]||(n[1]=l=>o.element.options.fixed=l)},null,512),[[e.vModelCheckbox,o.element.options.fixed]])],512),[[e.vShow,t("ad-fixed")]])]),e.withDirectives(e.createElementVNode("div",Xr,[n[7]||(n[7]=e.createElementVNode("span",{class:"pd-label"},"层级",-1)),e.createVNode(re,{modelValue:o.element.options.zIndex,"onUpdate:modelValue":n[2]||(n[2]=l=>o.element.options.zIndex=l),min:0,max:999},null,8,["modelValue"])],512),[[e.vShow,t("ad-z-index")]]),e.withDirectives(e.createElementVNode("div",Zr,[e.createElementVNode("button",{type:"button",class:"pd-button danger",onClick:n[3]||(n[3]=l=>s.$emit("delete-element"))}," 删除元素 ")],512),[[e.vShow,t("ad-delete")]])],32)]),_:1}))}}),Qr=ce(Jr,[["__scopeId","data-v-14924be2"]]),_r={key:0,class:"pd-field"},es=["checked"],ts={class:"pd-field"},os=["checked"],ns={class:"pd-field"},ls=["checked"],Bt=e.defineComponent({__name:"PaginationGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(o){const r=o,t=e.computed(()=>r.element.printElementType.type==="table"),s=e.computed({get:()=>r.element.options.tablePagination?.enabled??!0,set:()=>{}});function n(c){r.element.options.tablePagination={enabled:c}}const l=e.computed({get:()=>r.element.options.pagination?.pageable??!0,set:()=>{}}),a=e.computed({get:()=>r.element.options.pagination?.keepWithNext??!1,set:()=>{}});function i(c){r.element.options.pagination={pageable:c,keepWithNext:a.value}}function d(c){r.element.options.pagination={pageable:l.value,keepWithNext:c}}function m(c){return r.searching?r.matchedKeys?.has(c)??!0:!0}return(c,f)=>(e.openBlock(),e.createBlock($e,{title:"分页配置",icon:"Document","group-key":"pagination"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:f[3]||(f[3]=e.withModifiers(()=>{},["prevent"]))},[t.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",_r,[f[4]||(f[4]=e.createElementVNode("span",{class:"pd-label"},"启用分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:s.value,onChange:f[0]||(f[0]=g=>n(g.target.checked))},null,40,es)],512)),[[e.vShow,m("pg-enabled")]]):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",ts,[f[5]||(f[5]=e.createElementVNode("span",{class:"pd-label"},"参与分页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:l.value,onChange:f[1]||(f[1]=g=>i(g.target.checked))},null,40,os)],512),[[e.vShow,m("pg-pageable")]]),e.withDirectives(e.createElementVNode("div",ns,[f[6]||(f[6]=e.createElementVNode("span",{class:"pd-label"},"与下元素同页",-1)),e.createElementVNode("input",{type:"checkbox",class:"pd-switch",checked:a.value,onChange:f[2]||(f[2]=g=>d(g.target.checked))},null,40,ls)],512),[[e.vShow,m("pg-keep-with-next")]])],64))],32)]),_:1}))}}),as={class:"image-content-upload"},is=["disabled"],rs=e.defineComponent({__name:"ImageContentUpload",props:{disabled:{type:Boolean}},emits:["success"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(!1),l=e.inject(vt,e.computed(()=>{})),a=e.computed(()=>t.disabled||n.value||!l.value);async function i(d){const m=d.target,c=m.files?.[0];if(c){if(!c.type.startsWith("image/")){alert("仅支持上传图片文件"),m.value="";return}if(!l.value){alert("图片上传能力未配置"),m.value="";return}n.value=!0;try{const f=await l.value(c);f?s("success",f):alert("图片上传失败")}catch(f){alert(f instanceof Error?f.message:"图片上传失败")}finally{n.value=!1,m.value=""}}}return(d,m)=>(e.openBlock(),e.createElementBlock("div",as,[e.createElementVNode("label",{class:e.normalizeClass(["pd-button small upload-label",{disabled:a.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(n.value?"上传中...":"上传图片")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:i},null,40,is)],2),m[1]||(m[1]=e.createElementVNode("p",{class:"upload-tip"},"支持 jpg/png/gif/bmp/webp/svg 等图片,上传后填入相对路径",-1))]))}}),ss=ce(rs,[["__scopeId","data-v-b730e8e6"]]),ds={class:"pd-field"},cs=["value"],us={class:"pd-field"},ms={key:0,class:"pd-field"},ps=["checked"],vs=e.defineComponent({__name:"TableRowGroup",props:{element:{},selection:{}},setup(o){const r=o,t=e.inject(He),s=e.computed(()=>r.element.options.tableRows[r.selection.r1]);function n(i){const d=E.setRowType(r.element.options.tableRows,r.selection.r1,i);if(d){alert(d);return}t.recordHistory()}function l(i){i!==void 0&&(s.value.height=i,E.syncTableElementSize(r.element.options),t.recordHistory())}function a(i){E.setHeaderRepeat(r.element.options.tableRows,i),t.recordHistory()}return(i,d)=>(e.openBlock(),e.createBlock($e,{title:"行属性",icon:"Grid","default-expanded":"","group-key":"table-row"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:d[2]||(d[2]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ds,[d[4]||(d[4]=e.createElementVNode("span",{class:"pd-label"},"行类型",-1)),e.createElementVNode("select",{value:s.value.type,class:"pd-select",style:{width:"100%"},onChange:d[0]||(d[0]=m=>n(m.target.value))},[...d[3]||(d[3]=[e.createElementVNode("option",{value:"header"},"标题行",-1),e.createElementVNode("option",{value:"data"},"数据行",-1),e.createElementVNode("option",{value:"subtotal"},"小计行(每页小计)",-1),e.createElementVNode("option",{value:"summary"},"汇总行",-1)])],40,cs)]),e.createElementVNode("div",us,[d[5]||(d[5]=e.createElementVNode("span",{class:"pd-label"},"行高 (mm)",-1)),e.createVNode(re,{"model-value":s.value.height,min:3,max:100,step:.5,"onUpdate:modelValue":l},null,8,["model-value"])]),s.value.type==="header"?(e.openBlock(),e.createElementBlock("div",ms,[d[6]||(d[6]=e.createElementVNode("span",{class:"pd-label",title:"多级表头作为一个结构整体重复,勾选后表头区所有行都会在每页顶部重复"},"表头每页重复",-1)),e.createElementVNode("input",{checked:s.value.repeatOnPage??!1,type:"checkbox",class:"pd-switch",onInput:d[1]||(d[1]=m=>a(!!m.target.checked))},null,40,ps)])):e.createCommentVNode("",!0)],32)]),_:1}))}}),fs={class:"pd-field"},gs={class:"pd-radio-group",role:"radiogroup"},hs={class:"pd-radio"},bs=["checked"],Es={class:"pd-radio"},ys=["checked"],ks={class:"pd-radio"},Vs=["checked"],Ns={class:"pd-radio"},ws=["checked"],Cs={key:0,class:"pd-field"},Ss=["value"],xs={key:1,class:"pd-field"},$s=["checked"],Bs={key:2,class:"pd-field"},Ds={key:3,class:"pd-hint"},Ts={key:4,class:"pd-field"},Ms={key:5,class:"pd-field"},zs=["value"],As={key:6,class:"pd-hint"},Ps={key:7,class:"pd-field"},Rs=["value"],Ls={key:8,class:"pd-hint"},Us={key:9,class:"pd-field"},Is=["value"],Fs={key:10,class:"pd-field"},Hs={key:11,class:"pd-field"},Os={class:"pd-field"},Ws=["value"],Gs={class:"pd-field"},Ks={class:"pd-radio-group",role:"radiogroup"},qs={class:"pd-radio"},Ys=["checked"],js={class:"pd-radio"},Xs=["checked"],Zs={class:"pd-radio"},Js=["checked"],Qs={class:"pd-field"},_s={class:"pd-radio-group",role:"radiogroup"},ed={class:"pd-radio"},td=["checked"],od={class:"pd-radio"},nd=["checked"],ld={class:"pd-radio"},ad=["checked"],id={class:"cell-style-grid"},rd={class:"pd-field cell-font-field"},sd={class:"pd-field"},dd={class:"pd-field"},cd=["checked"],ud={class:"pd-field"},md={class:"pd-field"},pd={class:"border-style-row"},vd={style:{width:"112px","flex-shrink":"0"}},fd={class:"pd-button-group border-presets"},gd={class:"pd-checkbox-group"},hd={class:"pd-checkbox"},bd={class:"pd-checkbox"},Ed={class:"pd-checkbox"},yd={class:"pd-checkbox"},kd={class:"pd-field"},Vd={class:"pd-field"},Nd=["checked"],wd={key:12,class:"pd-field"},Cd=["value"],Sd={key:13,class:"pd-field"},xd={class:"merge-btns"},$d=["disabled","title"],Bd=["disabled"],Dd=e.defineComponent({__name:"TableCellGroup",props:{element:{},selection:{},fields:{}},setup(o,{expose:r}){const t=o,s=e.inject(He),n=e.computed(()=>t.element.options.tableRows),l=e.computed(()=>{const z=E.findMainCell(n.value,t.selection.r1,t.selection.c1);return n.value[z.r].cells[z.c]}),a=e.ref(!1),i=e.ref(""),d=e.computed(()=>l.value.cellType==="barcode"),m=e.computed(()=>l.value.cellType==="qrcode"),c=e.computed(()=>l.value.cellType==="image"),f=e.computed(()=>d.value&&!!l.value.printerDpi),g=e.computed(()=>!d.value&&!m.value&&!c.value),h=e.computed(()=>E.resolveCellTextFit(l.value));function R(z){const u=z.target.value;G(x=>{x.textFit=u})}function C(z){G(u=>{u.align=z})}function v(z){G(u=>{u.valign=z})}function p(z){const u=Number(z);G(x=>{x.printerDpi=u>0?u:void 0})}function B(z){G(u=>{u.cellType=z==="text"?void 0:z,z!=="barcode"&&(u.barcodeType=void 0,u.showBarcodeText=void 0,u.printerDpi=void 0),z!=="qrcode"&&(u.qrCodeLevel=void 0)})}function _(){i.value=l.value.formatter||"",a.value=!0}function ne(z){G(u=>{u.formatter=z||void 0})}function G(z){const u=t.selection;for(let x=u.r1;x<=u.r2;x++)for(let Y=u.c1;Y<=u.c2;Y++){const be=n.value[x].cells[Y];be.merged||z(be)}s.recordHistory()}const J=e.ref("solid"),b=e.ref(.75),W=e.ref("#333333"),j=e.ref([]);function U(){return{width:b.value,style:J.value,color:W.value}}function y(z){E.applyBorderPreset(n.value,t.selection,z,U()),s.recordHistory()}function M(z){const u=z.target,x=new Set(j.value);u.checked?x.add(u.value):x.delete(u.value),j.value=[...x];const Y=U();G(be=>{const ge={...be.borders??{}};for(const fe of["top","right","bottom","left"])x.has(fe)?ge[fe]={...Y}:delete ge[fe];be.borders=ge})}const N=e.computed(()=>E.canMergeReason(n.value,t.selection)),O=e.computed(()=>{const z=t.selection;for(let u=z.r1;u<=z.r2;u++)for(let x=z.c1;x<=z.c2;x++){const Y=n.value[u].cells[x];if(!Y.merged&&((Y.rowspan??1)>1||(Y.colspan??1)>1))return!0}return!1});function A(){E.mergeCells(n.value,t.selection),s.recordHistory()}function k(){E.splitCells(n.value,t.selection),s.recordHistory()}return r({openFormatterEditor:_}),(z,u)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode($e,{title:"单元格",icon:"Menu","default-expanded":"","group-key":"table-cell"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:u[43]||(u[43]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",fs,[u[49]||(u[49]=e.createElementVNode("span",{class:"pd-label"},"单元格类型",-1)),e.createElementVNode("div",gs,[e.createElementVNode("label",hs,[e.createElementVNode("input",{type:"radio",value:"text",checked:(l.value.cellType||"text")==="text",onChange:u[0]||(u[0]=x=>B(x.target.value))},null,40,bs),u[45]||(u[45]=e.createElementVNode("span",null,"文本",-1))]),e.createElementVNode("label",Es,[e.createElementVNode("input",{type:"radio",value:"barcode",checked:l.value.cellType==="barcode",onChange:u[1]||(u[1]=x=>B(x.target.value))},null,40,ys),u[46]||(u[46]=e.createElementVNode("span",null,"条形码",-1))]),e.createElementVNode("label",ks,[e.createElementVNode("input",{type:"radio",value:"qrcode",checked:l.value.cellType==="qrcode",onChange:u[2]||(u[2]=x=>B(x.target.value))},null,40,Vs),u[47]||(u[47]=e.createElementVNode("span",null,"二维码",-1))]),e.createElementVNode("label",Ns,[e.createElementVNode("input",{type:"radio",value:"image",checked:l.value.cellType==="image",onChange:u[3]||(u[3]=x=>B(x.target.value))},null,40,ws),u[48]||(u[48]=e.createElementVNode("span",null,"图片",-1))])])]),d.value?(e.openBlock(),e.createElementBlock("div",Cs,[u[51]||(u[51]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{value:l.value.barcodeType||"CODE128",class:"pd-select",onChange:u[4]||(u[4]=x=>G(Y=>{Y.barcodeType=x.target.value||void 0}))},[...u[50]||(u[50]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,Ss)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",xs,[u[52]||(u[52]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:l.value.showBarcodeText!==!1,type:"checkbox",class:"pd-switch",onInput:u[5]||(u[5]=x=>G(Y=>{Y.showBarcodeText=!!x.target.checked}))},null,40,$s)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Bs,[u[53]||(u[53]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(re,{"model-value":l.value.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":u[6]||(u[6]=x=>G(Y=>{Y.barWidth=x}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",Ds,e.toDisplayString(f.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),单元格放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Ts,[u[54]||(u[54]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(re,{"model-value":l.value.barFontSize??10,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":u[7]||(u[7]=x=>G(Y=>{Y.barFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",Ms,[u[56]||(u[56]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{value:l.value.printerDpi?String(l.value.printerDpi):"",class:"pd-select",onChange:u[8]||(u[8]=x=>p(x.target.value))},[...u[55]||(u[55]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,zs)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",As,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小")):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",Ps,[u[58]||(u[58]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{value:l.value.qrCodeLevel||"M",class:"pd-select",onChange:u[9]||(u[9]=x=>G(Y=>{Y.qrCodeLevel=x.target.value||void 0}))},[...u[57]||(u[57]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,Rs)])):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("p",Ls,"单元格条码尺寸由「条宽」与「打印机分辨率」结算:可用宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),m.value||c.value?(e.openBlock(),e.createElementBlock("div",Us,[u[60]||(u[60]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{value:l.value.fit||"contain",class:"pd-select",onChange:u[10]||(u[10]=x=>G(Y=>{Y.fit=x.target.value}))},[...u[59]||(u[59]=[e.createElementVNode("option",{value:"contain"},"包含(保持比例)",-1),e.createElementVNode("option",{value:"cover"},"覆盖(保持比例)",-1),e.createElementVNode("option",{value:"fill"},"拉伸填满",-1),e.createElementVNode("option",{value:"none"},"原始尺寸",-1),e.createElementVNode("option",{value:"scale-down"},"缩小(保持比例)",-1)])],40,Is)])):e.createCommentVNode("",!0),d.value||m.value||c.value?(e.openBlock(),e.createElementBlock("div",Fs,[u[61]||(u[61]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(re,{"model-value":l.value.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":u[11]||(u[11]=x=>G(Y=>{Y.maxWidth=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),d.value||m.value||c.value?(e.openBlock(),e.createElementBlock("div",Hs,[u[62]||(u[62]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(re,{"model-value":l.value.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":u[12]||(u[12]=x=>G(Y=>{Y.maxHeight=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",Os,[u[63]||(u[63]=e.createElementVNode("span",{class:"pd-label"},"内容",-1)),e.createElementVNode("input",{value:l.value.formatter||"",class:"pd-input",placeholder:"输入内容,支持 {字段} 表达式",onInput:u[13]||(u[13]=x=>G(Y=>{Y.formatter=x.target.value||void 0})),onDblclick:_},null,40,Ws)]),e.createElementVNode("div",Gs,[u[67]||(u[67]=e.createElementVNode("span",{class:"pd-label"},"水平对齐",-1)),e.createElementVNode("div",Ks,[e.createElementVNode("label",qs,[e.createElementVNode("input",{type:"radio",value:"left",checked:l.value.align==="left",onChange:u[14]||(u[14]=x=>C(x.target.value))},null,40,Ys),u[64]||(u[64]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",js,[e.createElementVNode("input",{type:"radio",value:"center",checked:l.value.align==="center",onChange:u[15]||(u[15]=x=>C(x.target.value))},null,40,Xs),u[65]||(u[65]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Zs,[e.createElementVNode("input",{type:"radio",value:"right",checked:l.value.align==="right",onChange:u[16]||(u[16]=x=>C(x.target.value))},null,40,Js),u[66]||(u[66]=e.createElementVNode("span",null,"右",-1))])])]),e.createElementVNode("div",Qs,[u[71]||(u[71]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",_s,[e.createElementVNode("label",ed,[e.createElementVNode("input",{type:"radio",value:"top",checked:l.value.valign==="top",onChange:u[17]||(u[17]=x=>v(x.target.value))},null,40,td),u[68]||(u[68]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",od,[e.createElementVNode("input",{type:"radio",value:"middle",checked:l.value.valign==="middle",onChange:u[18]||(u[18]=x=>v(x.target.value))},null,40,nd),u[69]||(u[69]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",ld,[e.createElementVNode("input",{type:"radio",value:"bottom",checked:l.value.valign==="bottom",onChange:u[19]||(u[19]=x=>v(x.target.value))},null,40,ad),u[70]||(u[70]=e.createElementVNode("span",null,"下",-1))])])]),e.createElementVNode("div",id,[e.createElementVNode("div",rd,[u[72]||(u[72]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(ht,{"model-value":l.value.fontFamily,placeholder:"继承默认","onUpdate:modelValue":u[20]||(u[20]=x=>G(Y=>{Y.fontFamily=x}))},null,8,["model-value"])]),e.createElementVNode("div",sd,[u[73]||(u[73]=e.createElementVNode("span",{class:"pd-label"},"字号 (pt)",-1)),e.createVNode(re,{"model-value":l.value.fontSize,min:5,max:72,placeholder:"默认","onUpdate:modelValue":u[21]||(u[21]=x=>G(Y=>{Y.fontSize=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",dd,[u[74]||(u[74]=e.createElementVNode("span",{class:"pd-label"},"加粗",-1)),e.createElementVNode("input",{checked:l.value.fontWeight==="bold",type:"checkbox",class:"pd-switch",onInput:u[22]||(u[22]=x=>G(Y=>{Y.fontWeight=x.target.checked?"bold":void 0}))},null,40,cd)]),e.createElementVNode("div",ud,[u[75]||(u[75]=e.createElementVNode("span",{class:"pd-label"},"文字颜色",-1)),e.createVNode(Ne,{"model-value":l.value.color,"onUpdate:modelValue":u[23]||(u[23]=x=>G(Y=>{Y.color=x}))},null,8,["model-value"])]),e.createElementVNode("div",md,[u[76]||(u[76]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{"model-value":l.value.backgroundColor,"onUpdate:modelValue":u[24]||(u[24]=x=>G(Y=>{Y.backgroundColor=x}))},null,8,["model-value"])])]),u[87]||(u[87]=e.createElementVNode("h3",{class:"pd-divider"},"边框",-1)),e.createElementVNode("div",pd,[e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":u[25]||(u[25]=x=>J.value=x),style:{width:"90px"}},[...u[77]||(u[77]=[e.createElementVNode("option",{value:"solid"},"实线",-1),e.createElementVNode("option",{value:"dashed"},"虚线",-1),e.createElementVNode("option",{value:"dotted"},"点线",-1),e.createElementVNode("option",{value:"double"},"双线",-1)])],512),[[e.vModelSelect,J.value]]),e.createElementVNode("div",vd,[e.createVNode(re,{modelValue:b.value,"onUpdate:modelValue":u[26]||(u[26]=x=>b.value=x),min:.25,max:5,step:.25},null,8,["modelValue"])]),e.createVNode(Ne,{modelValue:W.value,"onUpdate:modelValue":u[27]||(u[27]=x=>W.value=x),clearable:!1},null,8,["modelValue"])]),e.createElementVNode("div",fd,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:u[28]||(u[28]=x=>y("all"))},"全部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:u[29]||(u[29]=x=>y("outer"))},"外侧"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:u[30]||(u[30]=x=>y("inner"))},"内部"),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:u[31]||(u[31]=x=>y("none"))},"无")]),e.createElementVNode("div",gd,[e.createElementVNode("label",hd,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":u[32]||(u[32]=x=>j.value=x),value:"top",onChange:u[33]||(u[33]=x=>M(x))},null,544),[[e.vModelCheckbox,j.value]]),u[78]||(u[78]=e.createElementVNode("span",null,"上",-1))]),e.createElementVNode("label",bd,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":u[34]||(u[34]=x=>j.value=x),value:"right",onChange:u[35]||(u[35]=x=>M(x))},null,544),[[e.vModelCheckbox,j.value]]),u[79]||(u[79]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Ed,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":u[36]||(u[36]=x=>j.value=x),value:"bottom",onChange:u[37]||(u[37]=x=>M(x))},null,544),[[e.vModelCheckbox,j.value]]),u[80]||(u[80]=e.createElementVNode("span",null,"下",-1))]),e.createElementVNode("label",yd,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":u[38]||(u[38]=x=>j.value=x),value:"left",onChange:u[39]||(u[39]=x=>M(x))},null,544),[[e.vModelCheckbox,j.value]]),u[81]||(u[81]=e.createElementVNode("span",null,"左",-1))])]),e.createElementVNode("div",kd,[u[82]||(u[82]=e.createElementVNode("span",{class:"pd-label"},"内边距 (mm)",-1)),e.createVNode(re,{"model-value":l.value.padding,min:0,max:10,step:.5,placeholder:"默认","onUpdate:modelValue":u[40]||(u[40]=x=>G(Y=>{Y.padding=x??void 0}))},null,8,["model-value"])]),e.createElementVNode("div",Vd,[u[83]||(u[83]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:l.value.wordWrap??!0,type:"checkbox",class:"pd-switch",onInput:u[41]||(u[41]=x=>G(Y=>{Y.wordWrap=!!x.target.checked}))},null,40,Nd)]),g.value?(e.openBlock(),e.createElementBlock("div",wd,[u[85]||(u[85]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:h.value,style:{width:"100%"},onChange:R},[...u[84]||(u[84]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Cd)])):e.createCommentVNode("",!0),g.value&&h.value==="shrink"?(e.openBlock(),e.createElementBlock("div",Sd,[u[86]||(u[86]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(re,{"model-value":l.value.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":u[42]||(u[42]=x=>G(Y=>{Y.shrinkMinFontSize=x??void 0}))},null,8,["model-value"])])):e.createCommentVNode("",!0),e.createElementVNode("div",xd,[e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!!N.value,title:N.value||"",onClick:A}," 合并单元格 ",8,$d),e.createElementVNode("button",{type:"button",class:"pd-button small",disabled:!O.value,onClick:k},"拆分单元格",8,Bd)])],32)]),_:1}),e.createVNode(Qe,{modelValue:a.value,"onUpdate:modelValue":u[44]||(u[44]=x=>a.value=x),fields:o.fields,expression:i.value,"onUpdate:expression":ne},null,8,["modelValue","fields","expression"])],64))}}),Td=ce(Dd,[["__scopeId","data-v-291c10c6"]]),Md={class:"watermark-config"},zd={class:"pd-field"},Ad={key:0,class:"pd-field"},Pd={class:"pd-field"},Rd={class:"pd-hint"},Ld={class:"pd-field"},Ud={class:"pd-field"},Id={class:"pd-hint"},Fd={class:"pd-field"},Hd=["value"],Od={class:"pd-field"},Wd=["min"],Gd={class:"pd-field"},Kd=["min"],qd=e.defineComponent({__name:"WatermarkConfig",props:{modelValue:{},fields:{}},emits:["update:modelValue"],setup(o,{emit:r}){const t=o,s=r,n=he.WATERMARK_DENSITY_PRESETS,l=he.WATERMARK_DEFAULTS.minTileWidth,a=he.WATERMARK_DEFAULTS.minTileHeight;function i(J){const b=J.trim();return b?/[{}]/.test(b)||/^[A-Za-z_$][\w$]*\s*\(/.test(b)?!0:/^[A-Za-z_$][\w$]*(\.[\w$]+)+$/.test(b):!1}function d(J){return J?J.mode==="binding"?J.binding??"":J.content??"":""}const m=e.ref(d(t.modelValue)),c=e.ref(t.modelValue?.testData||""),f=e.ref(!1),g=e.ref(t.modelValue?.mode==="binding"?"binding":"fixed"),h=e.reactive({rotate:t.modelValue?.rotate??he.WATERMARK_DEFAULTS.rotate,color:t.modelValue?.color||he.WATERMARK_DEFAULTS.color,opacity:t.modelValue?.opacity??he.WATERMARK_DEFAULTS.opacity,tileWidth:t.modelValue?.tileWidth??he.WATERMARK_DEFAULTS.tileWidth,tileHeight:t.modelValue?.tileHeight??he.WATERMARK_DEFAULTS.tileHeight}),R=e.computed(()=>g.value==="binding");e.watch(()=>t.modelValue,J=>{J&&(m.value=d(J),g.value=J.mode==="binding"?"binding":"fixed",c.value=J.testData||"",h.rotate=J.rotate??he.WATERMARK_DEFAULTS.rotate,h.color=J.color||he.WATERMARK_DEFAULTS.color,h.opacity=J.opacity??he.WATERMARK_DEFAULTS.opacity,h.tileWidth=J.tileWidth??he.WATERMARK_DEFAULTS.tileWidth,h.tileHeight=J.tileHeight??he.WATERMARK_DEFAULTS.tileHeight)},{deep:!0});const C=e.computed({get(){const{tileWidth:J,tileHeight:b}=h;for(const[W,j]of Object.entries(n))if(J===j.width&&b===j.height)return W;return"custom"},set(J){const b=n[J];b&&(h.tileWidth=b.width,h.tileHeight=b.height)}});function v(){g.value=i(m.value)?"binding":"fixed",G()}function p(){v()}function B(){f.value=!0}function _(J){m.value=J,v()}function ne(J){h.color=J,G()}function G(){const J={testData:c.value,rotate:h.rotate,color:h.color,opacity:h.opacity,tileWidth:h.tileWidth,tileHeight:h.tileHeight};s("update:modelValue",g.value==="binding"?{...J,mode:"binding",binding:m.value,content:""}:{...J,mode:"fixed",content:m.value,binding:""})}return(J,b)=>(e.openBlock(),e.createElementBlock("div",Md,[b[18]||(b[18]=e.createElementVNode("h3",{class:"pd-divider"},"水印",-1)),e.createElementVNode("form",{class:"pd-form",onSubmit:b[8]||(b[8]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",zd,[b[9]||(b[9]=e.createElementVNode("span",{class:"pd-label"},"水印表达式",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[0]||(b[0]=W=>m.value=W),placeholder:"直接输入文字,或用表达式:{order.no}、{printDate}",title:"双击或点「编辑表达式」打开表达式弹框",onInput:p,onDblclick:B},null,544),[[e.vModelText,m.value]]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:B},"编辑表达式")]),R.value?(e.openBlock(),e.createElementBlock("div",Ad,[b[10]||(b[10]=e.createElementVNode("span",{class:"pd-label"},"测试值",-1)),e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":b[1]||(b[1]=W=>c.value=W),placeholder:"表达式取不到值时预览显示",onInput:G},null,544),[[e.vModelText,c.value]])])):e.createCommentVNode("",!0),e.createVNode(Qe,{modelValue:f.value,"onUpdate:modelValue":b[2]||(b[2]=W=>f.value=W),fields:o.fields,expression:m.value,"onUpdate:expression":_},null,8,["modelValue","fields","expression"]),e.createElementVNode("div",Pd,[b[11]||(b[11]=e.createElementVNode("span",{class:"pd-label"},"旋转角度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[3]||(b[3]=W=>h.rotate=W),min:-90,max:90,step:5,onChange:G},null,544),[[e.vModelText,h.rotate,void 0,{number:!0}]]),e.createElementVNode("span",Rd,e.toDisplayString(h.rotate)+"°",1)]),e.createElementVNode("div",Ld,[b[12]||(b[12]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{"model-value":h.color,"onUpdate:modelValue":ne},null,8,["model-value"])]),e.createElementVNode("div",Ud,[b[13]||(b[13]=e.createElementVNode("span",{class:"pd-label"},"透明度",-1)),e.withDirectives(e.createElementVNode("input",{type:"range",class:"pd-range","onUpdate:modelValue":b[4]||(b[4]=W=>h.opacity=W),min:.05,max:.5,step:.05,onChange:G},null,544),[[e.vModelText,h.opacity,void 0,{number:!0}]]),e.createElementVNode("span",Id,e.toDisplayString(h.opacity.toFixed(2)),1)]),e.createElementVNode("div",Fd,[b[15]||(b[15]=e.createElementVNode("span",{class:"pd-label"},"密度",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":b[5]||(b[5]=W=>C.value=W),style:{width:"100%"},onChange:G},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n),(W,j)=>(e.openBlock(),e.createElementBlock("option",{key:j,value:j},e.toDisplayString(W.label)+"("+e.toDisplayString(W.width)+"×"+e.toDisplayString(W.height)+")",9,Hd))),128)),b[14]||(b[14]=e.createElementVNode("option",{value:"custom"},"自定义",-1))],544),[[e.vModelSelect,C.value]])]),C.value==="custom"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",Od,[b[16]||(b[16]=e.createElementVNode("span",{class:"pd-label"},"瓦片宽",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[6]||(b[6]=W=>h.tileWidth=W),min:e.unref(l),step:10,onChange:G},null,40,Wd),[[e.vModelText,h.tileWidth,void 0,{number:!0}]])]),e.createElementVNode("div",Gd,[b[17]||(b[17]=e.createElementVNode("span",{class:"pd-label"},"瓦片高",-1)),e.withDirectives(e.createElementVNode("input",{type:"number",class:"pd-input","onUpdate:modelValue":b[7]||(b[7]=W=>h.tileHeight=W),min:e.unref(a),step:10,onChange:G},null,40,Kd),[[e.vModelText,h.tileHeight,void 0,{number:!0}]])])],64)):e.createCommentVNode("",!0)],32)]))}}),Yd=ce(qd,[["__scopeId","data-v-b55bfc50"]]),jd={class:"design-background-config"},Xd=["title"],Zd={class:"design-background-actions"},Jd=["disabled"],Qd=e.defineComponent({__name:"DesignBackgroundConfig",props:{modelValue:{}},emits:["update:modelValue"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(!1),l=e.inject(ft,e.computed(()=>{})),a=e.computed(()=>n.value||!l.value),i=e.computed(()=>t.modelValue?.rotation??0);async function d(f){const g=f.target,h=g.files?.[0];if(h){if(!h.type.startsWith("image/")){alert("仅支持上传图片文件"),g.value="";return}if(!l.value){alert("设计背景上传能力未配置"),g.value="";return}n.value=!0;try{const R=await l.value(h);R?s("update:modelValue",{src:R,rotation:0}):alert("设计背景上传失败")}catch(R){alert(R instanceof Error?R.message:"设计背景上传失败")}finally{n.value=!1,g.value=""}}}function m(){if(!t.modelValue?.src)return;const f=(i.value+90)%360;s("update:modelValue",{src:t.modelValue.src,rotation:f})}function c(){s("update:modelValue",void 0)}return(f,g)=>(e.openBlock(),e.createElementBlock("div",jd,[g[0]||(g[0]=e.createElementVNode("h3",{class:"pd-divider"},"设计背景",-1)),g[1]||(g[1]=e.createElementVNode("p",{class:"design-background-tip"},"仅设计器显示,用于套打定位,不会出现在预览和打印中",-1)),o.modelValue?.src?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"design-background-path",title:o.modelValue.src},e.toDisplayString(o.modelValue.src),9,Xd),e.createElementVNode("div",Zd,[e.createElementVNode("button",{type:"button",class:"pd-button small rotate-btn",onClick:m}," 旋转("+e.toDisplayString(i.value)+"°) ",1),e.createElementVNode("button",{type:"button",class:"pd-button small remove-btn",onClick:c},"移除")])],64)):(e.openBlock(),e.createElementBlock("label",{key:1,class:e.normalizeClass(["pd-button small upload-label",{disabled:a.value}])},[e.createTextVNode(e.toDisplayString(n.value?"上传中...":"上传背景图")+" ",1),e.createElementVNode("input",{class:"visually-hidden",type:"file",accept:"image/*",disabled:a.value,onChange:d},null,40,Jd)],2))]))}}),_d=ce(Qd,[["__scopeId","data-v-3f4d2e32"]]),ec={class:"tiling-config","data-test":"tiling-config"},tc={class:"pd-field"},oc={class:"tiling-switch"},nc=["checked","disabled"],lc={key:0,class:"pd-hint tiling-error"},ac={class:"pd-field"},ic=["value"],rc=["value"],sc={key:0,class:"pd-field"},dc={class:"custom-size-grid"},cc={key:1,class:"pd-field"},uc={class:"pd-radio-group",role:"radiogroup"},mc={class:"pd-radio"},pc=["checked"],vc={class:"pd-radio"},fc=["checked"],gc={class:"margin-grid"},hc={class:"pd-field"},bc={class:"pd-field"},Ec={class:"pd-field"},yc={class:"pd-field"},kc={class:"pd-field"},Vc={class:"pd-field"},Nc={class:"pd-field"},wc={key:2,class:"pd-hint tiling-summary"},Cc=e.defineComponent({__name:"TilingConfig",props:{modelValue:{},templateData:{}},emits:["update:modelValue"],setup(o,{emit:r}){const t=o,s=r,n=Object.keys(E.PAPER_PRESETS).filter(v=>v!=="CUSTOM"&&!E.PAPER_PRESETS[v]?.continuous),l=e.computed(()=>E.isContinuousPaperSize(t.templateData?.paperSize)),a=e.computed(()=>({...he.TILE_DEFAULTS,...t.modelValue??{},enabled:t.modelValue?.enabled??!1,sheetMargin:{...he.TILE_DEFAULTS.sheetMargin,...t.modelValue?.sheetMargin??{}}})),i=e.computed(()=>t.templateData?{...t.templateData,tiling:a.value}:void 0),d=e.computed(()=>i.value?he.validateTiling(i.value):[]),m=e.computed(()=>{const v=i.value;return v?Math.max(he.computeMaxColumns(v),1):1}),c=e.computed(()=>{const v=i.value;if(!(!v||d.value.length))try{return he.computeTileLayout(v)}catch{return}}),f=e.computed(()=>{const v=c.value,p=i.value;if(!v||!p)return"";const B=he.resolveSheetMm(p),_=a.value.sheetPaperSize==="CUSTOM"?"自定义":a.value.sheetPaperSize??"A4",ne=a.value.sheetPaperSize==="CUSTOM"?"":a.value.sheetOrientation==="landscape"?" 横向":" 纵向";return`目标纸 ${_}${ne} ${B.width}×${B.height}mm · ${v.columns} 列 × ${v.rows} 行 = 每张 ${v.perSheet} 格`});function g(v){s("update:modelValue",{...a.value,...v})}function h(v,p){g({sheetMargin:{...a.value.sheetMargin,[v]:p??0}})}function R(v){if(v!=="CUSTOM"){g({sheetPaperSize:v});return}const p=i.value,B=p?he.resolveSheetMm(p):{width:210,height:297};g({sheetPaperSize:"CUSTOM",sheetCustomWidth:a.value.sheetCustomWidth??B.width,sheetCustomHeight:a.value.sheetCustomHeight??B.height})}function C(v){if(!v){g({enabled:!1});return}const p=m.value,B=p>=1?Math.min(he.TILE_DEFAULTS.columns,p):1;g({...he.TILE_DEFAULTS,columns:B})}return(v,p)=>(e.openBlock(),e.createElementBlock("div",ec,[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",tc,[e.createElementVNode("label",oc,[e.createElementVNode("input",{type:"checkbox",checked:a.value.enabled,disabled:l.value,onChange:p[0]||(p[0]=B=>C(B.target.checked))},null,40,nc),p[13]||(p[13]=e.createElementVNode("span",null,"启用拼版",-1))]),l.value?(e.openBlock(),e.createElementBlock("p",lc,"连续纸不支持拼版")):e.createCommentVNode("",!0)]),a.value.enabled&&!l.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",ac,[p[15]||(p[15]=e.createElementVNode("span",{class:"pd-label"},"目标纸张",-1)),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:a.value.sheetPaperSize??"A4",onChange:p[1]||(p[1]=B=>R(B.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n),B=>(e.openBlock(),e.createElementBlock("option",{key:B,value:B},e.toDisplayString(e.unref(E.PAPER_PRESETS)[B]?.label??B),9,rc))),128)),p[14]||(p[14]=e.createElementVNode("option",{value:"CUSTOM"},"自定义",-1))],40,ic)]),a.value.sheetPaperSize==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",sc,[p[17]||(p[17]=e.createElementVNode("span",{class:"pd-label"},"目标纸宽高 (mm)",-1)),e.createElementVNode("div",dc,[e.createVNode(re,{"model-value":a.value.sheetCustomWidth,min:25,max:2e3,"onUpdate:modelValue":p[2]||(p[2]=B=>g({sheetCustomWidth:B}))},null,8,["model-value"]),p[16]||(p[16]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(re,{"model-value":a.value.sheetCustomHeight,min:25,max:2e3,"onUpdate:modelValue":p[3]||(p[3]=B=>g({sheetCustomHeight:B}))},null,8,["model-value"])])])):(e.openBlock(),e.createElementBlock("div",cc,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"目标纸方向",-1)),e.createElementVNode("div",uc,[e.createElementVNode("label",mc,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:(a.value.sheetOrientation??"portrait")==="portrait",onChange:p[4]||(p[4]=B=>g({sheetOrientation:"portrait"}))},null,40,pc),p[18]||(p[18]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",vc,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:a.value.sheetOrientation==="landscape",onChange:p[5]||(p[5]=B=>g({sheetOrientation:"landscape"}))},null,40,fc),p[19]||(p[19]=e.createElementVNode("span",null,"横向",-1))])])])),p[28]||(p[28]=e.createElementVNode("h3",{class:"pd-divider"},"拼版留白 (mm)",-1)),e.createElementVNode("div",gc,[e.createElementVNode("div",hc,[p[21]||(p[21]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(re,{"model-value":a.value.sheetMargin.top,min:0,max:100,"onUpdate:modelValue":p[6]||(p[6]=B=>h("top",B))},null,8,["model-value"])]),e.createElementVNode("div",bc,[p[22]||(p[22]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(re,{"model-value":a.value.sheetMargin.bottom,min:0,max:100,"onUpdate:modelValue":p[7]||(p[7]=B=>h("bottom",B))},null,8,["model-value"])]),e.createElementVNode("div",Ec,[p[23]||(p[23]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(re,{"model-value":a.value.sheetMargin.left,min:0,max:100,"onUpdate:modelValue":p[8]||(p[8]=B=>h("left",B))},null,8,["model-value"])]),e.createElementVNode("div",yc,[p[24]||(p[24]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(re,{"model-value":a.value.sheetMargin.right,min:0,max:100,"onUpdate:modelValue":p[9]||(p[9]=B=>h("right",B))},null,8,["model-value"])])]),p[29]||(p[29]=e.createElementVNode("h3",{class:"pd-divider"},"格间距与列数",-1)),e.createElementVNode("div",kc,[p[25]||(p[25]=e.createElementVNode("span",{class:"pd-label"},"横向间距",-1)),e.createVNode(re,{"model-value":a.value.gapX,min:0,max:50,"onUpdate:modelValue":p[10]||(p[10]=B=>g({gapX:B??0}))},null,8,["model-value"])]),e.createElementVNode("div",Vc,[p[26]||(p[26]=e.createElementVNode("span",{class:"pd-label"},"纵向间距",-1)),e.createVNode(re,{"model-value":a.value.gapY,min:0,max:50,"onUpdate:modelValue":p[11]||(p[11]=B=>g({gapY:B??0}))},null,8,["model-value"])]),e.createElementVNode("div",Nc,[p[27]||(p[27]=e.createElementVNode("span",{class:"pd-label"},"列数",-1)),e.createVNode(re,{"model-value":a.value.columns,min:1,max:m.value,"onUpdate:modelValue":p[12]||(p[12]=B=>g({columns:B??1}))},null,8,["model-value","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,B=>(e.openBlock(),e.createElementBlock("p",{key:B.code,class:"pd-hint tiling-error"},e.toDisplayString(B.message),1))),128)),!d.value.length&&f.value?(e.openBlock(),e.createElementBlock("p",wc,e.toDisplayString(f.value),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)]))}}),Sc=ce(Cc,[["__scopeId","data-v-aa278268"]]),xc={key:0,class:"prop-collapsed"},$c={class:"prop-head"},Bc={class:"pd-tabs prop-tabs"},Dc={class:"pd-tab-bar",role:"tablist"},Tc={class:"pd-tab-pane",role:"tabpanel"},Mc={class:"property-content"},zc={key:1,class:"pd-empty"},Ac={class:"pd-tab-pane",role:"tabpanel"},Pc={class:"pd-field"},Rc=["value"],Lc=["label"],Uc=["value"],Ic={key:0,class:"pd-hint"},Fc={key:1,class:"pd-field"},Hc={class:"pd-label"},Oc={class:"custom-size-grid"},Wc={key:2,class:"pd-field"},Gc={class:"pd-radio-group",role:"radiogroup"},Kc={class:"pd-radio"},qc=["checked"],Yc={class:"pd-radio"},jc=["checked"],Xc={key:3,class:"pd-field"},Zc={class:"pd-radio-group pd-radio-group--2col",role:"radiogroup"},Jc={class:"pd-radio"},Qc=["checked"],_c={class:"pd-radio"},eu=["checked"],tu={class:"pd-radio"},ou=["checked"],nu={class:"pd-radio"},lu=["checked"],au={class:"pd-field"},iu={class:"page-bg-row"},ru={key:5,class:"pd-hint"},su={class:"margin-grid"},du={class:"pd-field"},cu={class:"pd-field"},uu={class:"pd-field"},mu={class:"pd-field"},pu={class:"pd-field"},vu={class:"pd-field"},fu=e.defineComponent({__name:"PropertyPanel",props:{element:{},templateData:{},fields:{},activeTab:{},tableSelection:{},recordHistory:{type:Function},collapsed:{type:Boolean},multiPage:{type:Boolean}},emits:["delete-element","update:templateData","update:activeTab","toggle-collapse"],setup(o,{emit:r}){const t=o,s=r,n=e.computed(()=>{const V=[];for(const[w,P]of Object.entries(E.PAPER_PRESETS)){if(t.multiPage&&E.isContinuousPaperSize(w))continue;const ae=P.group??"其他";let me=V.find(ye=>ye.group===ae);me||(me={group:ae,items:[]},V.push(me)),me.items.push({key:w,label:P.label??w})}return V}),l=e.ref(""),a=e.computed(()=>t.element?["text","longText"].includes(t.element.printElementType.type):!1),i=e.computed(()=>t.element?t.element.printElementType.type==="image":!1),d=e.computed(()=>t.element?["barcode","qrcode"].includes(t.element.printElementType.type):!1),m=e.computed(()=>!t.element||t.element.printElementType.type!=="table"?!1:!!t.tableSelection&&t.tableSelection.elementId===t.element.id),c=e.computed(()=>t.element?t.element.printElementType.type==="table":!1),f=e.computed(()=>E.searchProperties(l.value)),g=e.computed(()=>f.value.groups),h=e.computed(()=>f.value.itemKeys),R=e.computed(()=>!!l.value.trim()),C=e.computed(()=>{if(!t.element)return[];if(t.element.printElementType.type==="table"&&t.tableSelection){const{r1:V,c1:w}=t.tableSelection,P=t.element.options.tableRows;if(P&&P[V]){const ae=P[V],me=t.element.options.fields?.[0]?.dataSource;return E.getTableCellBindings(ae.type,V,w,me)}}return E.getElementBindings(t.element)});function v(V){return V.split(".").flatMap(w=>{const P=w.match(/^([^\[]+)((?:\[\d+\])*)$/);if(!P)return[w];const ae=P[1],me=[...P[2].matchAll(/\[(\d+)\]/g)].map(ye=>Number(ye[1]));return[ae,...me]})}function p(V){return t.element?v(V).reduce((ae,me)=>ae==null?"":ae[me],t.element)??"":""}function B(V,w){if(!t.element)return;const P=v(V),ae=P.pop(),me=P.reduce((ye,we)=>((ye[we]===void 0||ye[we]===null)&&(ye[we]={}),ye[we]),t.element);me[ae]=w||void 0,t.recordHistory?.()}function _(V){l.value=V}function ne(V){t.element&&B("options.src",V)}const G=e.computed(()=>t.templateData?.paperSize||"A4"),J=e.computed(()=>!t.multiPage&&E.isContinuousPaperSize(G.value)),b=e.computed(()=>E.isLabelPaperSize(G.value)),W=e.computed(()=>t.templateData?.orientation||"portrait"),j=e.computed(()=>!!t.templateData?.tiling?.enabled),U=e.computed(()=>t.templateData?.outputRotation??0),y=e.computed({get:()=>t.templateData?.pageBackground||"#ffffff",set:V=>K(V)}),M=e.computed(()=>t.templateData?.margins.top??10),N=e.computed(()=>t.templateData?.margins.bottom??10),O=e.computed(()=>t.templateData?.margins.left??10),A=e.computed(()=>t.templateData?.margins.right??10),k=e.computed(()=>t.templateData?.header.height??10),z=e.computed(()=>t.templateData?.footer.height??10),u=e.computed(()=>t.templateData?.customWidth??E.PAPER_PRESETS[G.value]?.width??210),x=e.computed(()=>t.templateData?.customHeight??297),Y=e.computed(()=>t.templateData?.designBackground);function be(V){if(t.templateData){if(!V){const w={...t.templateData};delete w.designBackground,s("update:templateData",w);return}se({designBackground:V})}}const ge=e.computed(()=>t.templateData?.watermark??{});function fe(V){se({watermark:V})}function se(V){if(!t.templateData)return;const w={...t.templateData,...V};s("update:templateData",w)}function q(V){if(t.templateData){if(E.isContinuousPaperSize(V)){se({paperSize:V,customWidth:V==="CONTINUOUS"?t.templateData?.customWidth??80:void 0,orientation:"portrait",margins:{...t.templateData.margins,bottom:t.templateData?.margins.bottom??0}});return}if(V==="CUSTOM"){se({paperSize:"CUSTOM"});return}if(E.PAPER_PRESETS[V]){if(E.isLabelPaperSize(V)){se({paperSize:V,...E.labelPaperDefaults(t.templateData)});return}se({paperSize:V})}}}function S(V){se({orientation:String(V)})}function D(V){se({outputRotation:Number(V)})}function K(V){const w=V&&V.toLowerCase()!=="#ffffff"&&V.toLowerCase()!=="#fff"?V:void 0;se(w===void 0?{pageBackground:void 0}:{pageBackground:w})}function Z(){se({pageBackground:void 0})}function te(V){V!==void 0&&se({customWidth:V})}function pe(V){V!==void 0&&se({customHeight:V})}function T(V){V!==void 0&&se({margins:{...t.templateData.margins,top:V}})}function $(V){V!==void 0&&se({margins:{...t.templateData.margins,bottom:V}})}function I(V){V!==void 0&&se({margins:{...t.templateData.margins,left:V}})}function ee(V){V!==void 0&&se({margins:{...t.templateData.margins,right:V}})}function oe(V){V!==void 0&&se({header:{...t.templateData.header,height:V}})}function ue(V){V!==void 0&&se({footer:{...t.templateData.footer,height:V}})}const L=e.computed(()=>t.activeTab||"page");function F(V){s("update:activeTab",V),s("toggle-collapse")}return(V,w)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-panel",{collapsed:o.collapsed}])},[o.collapsed?(e.openBlock(),e.createElementBlock("div",xc,[e.createElementVNode("button",{class:"pc-btn",title:"展开属性台",onClick:w[0]||(w[0]=P=>F(L.value))},"«"),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:L.value==="element"}]),title:"元素属性",onClick:w[1]||(w[1]=P=>F("element"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["pc-btn",{on:L.value==="page"}]),title:"页面属性",onClick:w[2]||(w[2]=P=>F("page"))},"▤",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",$c,[w[18]||(w[18]=e.createElementVNode("span",{class:"prop-title"},"属性台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起属性台",onClick:w[3]||(w[3]=P=>V.$emit("toggle-collapse"))},"»")]),e.createElementVNode("div",Bc,[e.createElementVNode("div",Dc,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="element"}]),onClick:w[4]||(w[4]=P=>V.$emit("update:activeTab","element"))},"元素属性",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:(o.activeTab||"page")==="page"}]),onClick:w[5]||(w[5]=P=>V.$emit("update:activeTab","page"))},"页面属性",2)]),e.withDirectives(e.createElementVNode("div",Tc,[o.element?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(Ia,{onSearch:_}),e.createElementVNode("div",Mc,[g.value.includes("position-size")&&!m.value?(e.openBlock(),e.createBlock(Ja,{key:0,element:o.element,"matched-keys":h.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("appearance")?(e.openBlock(),e.createBlock(Ni,{key:1,element:o.element,"is-text-type":a.value,"matched-keys":h.value,searching:R.value},null,8,["element","is-text-type","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("code")&&d.value?(e.openBlock(),e.createBlock(Fi,{key:2,element:o.element,"matched-keys":h.value,searching:R.value,onChange:w[6]||(w[6]=P=>o.recordHistory?.())},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("binding")?(e.openBlock(),e.createBlock($e,{key:3,title:"内容",icon:"Document","default-expanded":"","group-key":"binding"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,P=>(e.openBlock(),e.createBlock(Br,{key:P.targetPath,descriptor:P,fields:o.fields,"model-value":p(P.targetPath),"onUpdate:modelValue":ae=>B(P.targetPath,ae)},null,8,["descriptor","fields","model-value","onUpdate:modelValue"]))),128)),i.value?(e.openBlock(),e.createBlock(ss,{key:0,onSuccess:ne})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0),c.value&&o.tableSelection&&o.tableSelection.elementId===o.element.id?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createVNode(vs,{element:o.element,selection:o.tableSelection},null,8,["element","selection"]),e.createVNode(Td,{element:o.element,selection:o.tableSelection,fields:o.fields},null,8,["element","selection","fields"])],64)):e.createCommentVNode("",!0),c.value&&g.value.includes("content")?(e.openBlock(),e.createBlock(Ir,{key:5,element:o.element,fields:o.fields},null,8,["element","fields"])):e.createCommentVNode("",!0),g.value.includes("border-bg")?(e.openBlock(),e.createBlock(Kr,{key:6,element:o.element,"matched-keys":h.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("pagination")&&c.value?(e.openBlock(),e.createBlock(Bt,{key:7,element:o.element,"matched-keys":h.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("pagination")&&!c.value?(e.openBlock(),e.createBlock(Bt,{key:8,element:o.element,"matched-keys":h.value,searching:R.value},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0),g.value.includes("advanced")?(e.openBlock(),e.createBlock(Qr,{key:9,element:o.element,"matched-keys":h.value,searching:R.value,onDeleteElement:w[7]||(w[7]=P=>V.$emit("delete-element"))},null,8,["element","matched-keys","searching"])):e.createCommentVNode("",!0)])],64)):(e.openBlock(),e.createElementBlock("p",zc,"请在画布中选择一个元素"))],512),[[e.vShow,(o.activeTab||"page")==="element"]]),e.withDirectives(e.createElementVNode("div",Ac,[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",Pc,[w[20]||(w[20]=e.createElementVNode("span",{class:"pd-label"},"纸张尺寸",-1)),e.createElementVNode("select",{value:G.value,class:"pd-select",onChange:w[8]||(w[8]=P=>q(P.target.value)),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,P=>(e.openBlock(),e.createElementBlock("optgroup",{key:P.group,label:P.group},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.items,ae=>(e.openBlock(),e.createElementBlock("option",{key:ae.key,value:ae.key},e.toDisplayString(ae.label),9,Uc))),128))],8,Lc))),128)),w[19]||(w[19]=e.createElementVNode("option",{value:"CUSTOM"},"自定义宽高",-1))],40,Rc)]),b.value?(e.openBlock(),e.createElementBlock("p",Ic,"标签纸默认整张给内容区:已取消页边距与页眉页脚,可在下方自行改回")):e.createCommentVNode("",!0),J.value||G.value==="CUSTOM"?(e.openBlock(),e.createElementBlock("div",Fc,[e.createElementVNode("span",Hc,e.toDisplayString(J.value?"纸宽 (mm)":"自定义宽高 (mm)"),1),e.createElementVNode("div",Oc,[e.createVNode(re,{"model-value":u.value,min:25,max:2e3,"onUpdate:modelValue":te},null,8,["model-value"]),G.value==="CUSTOM"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[w[21]||(w[21]=e.createElementVNode("span",{class:"custom-size-x"},"×",-1)),e.createVNode(re,{"model-value":x.value,min:25,max:2e3,"onUpdate:modelValue":pe},null,8,["model-value"])],64)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),J.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Wc,[w[24]||(w[24]=e.createElementVNode("span",{class:"pd-label"},"纸张方向",-1)),e.createElementVNode("div",Gc,[e.createElementVNode("label",Kc,[e.createElementVNode("input",{type:"radio",value:"portrait",checked:W.value==="portrait",onChange:w[9]||(w[9]=P=>S(P.target.value))},null,40,qc),w[22]||(w[22]=e.createElementVNode("span",null,"纵向",-1))]),e.createElementVNode("label",Yc,[e.createElementVNode("input",{type:"radio",value:"landscape",checked:W.value==="landscape",onChange:w[10]||(w[10]=P=>S(P.target.value))},null,40,jc),w[23]||(w[23]=e.createElementVNode("span",null,"横向",-1))])]),w[25]||(w[25]=e.createElementVNode("p",{class:"pd-hint"},"切换即交换纸张长宽(设计稿内容随之铺在该尺寸上)",-1))])),!J.value&&!j.value?(e.openBlock(),e.createElementBlock("div",Xc,[w[30]||(w[30]=e.createElementVNode("span",{class:"pd-label"},"内容旋转角度",-1)),e.createElementVNode("div",Zc,[e.createElementVNode("label",Jc,[e.createElementVNode("input",{type:"radio",value:"0",checked:U.value===0,onChange:w[11]||(w[11]=P=>D(P.target.value))},null,40,Qc),w[26]||(w[26]=e.createElementVNode("span",null,"0°",-1))]),e.createElementVNode("label",_c,[e.createElementVNode("input",{type:"radio",value:"90",checked:U.value===90,onChange:w[12]||(w[12]=P=>D(P.target.value))},null,40,eu),w[27]||(w[27]=e.createElementVNode("span",null,"90°",-1))]),e.createElementVNode("label",tu,[e.createElementVNode("input",{type:"radio",value:"180",checked:U.value===180,onChange:w[13]||(w[13]=P=>D(P.target.value))},null,40,ou),w[28]||(w[28]=e.createElementVNode("span",null,"180°",-1))]),e.createElementVNode("label",nu,[e.createElementVNode("input",{type:"radio",value:"270",checked:U.value===270,onChange:w[14]||(w[14]=P=>D(P.target.value))},null,40,lu),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",au,[w[32]||(w[32]=e.createElementVNode("span",{class:"pd-label"},"页面背景色",-1)),e.createElementVNode("div",iu,[e.createVNode(Ne,{modelValue:y.value,"onUpdate:modelValue":w[15]||(w[15]=P=>y.value=P),class:"page-bg-picker"},null,8,["modelValue"]),e.createElementVNode("button",{type:"button",class:"pd-reset",title:"恢复为默认白色",onClick:Z},"默认")])]),e.createVNode(_d,{"model-value":Y.value,"onUpdate:modelValue":be},null,8,["model-value"]),o.multiPage?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(Sc,{key:4,"model-value":o.templateData?.tiling,"template-data":o.templateData,"onUpdate:modelValue":w[16]||(w[16]=P=>se({tiling:P}))},null,8,["model-value","template-data"])),w[40]||(w[40]=e.createElementVNode("h3",{class:"pd-divider"},"页边距 (mm)",-1)),J.value?(e.openBlock(),e.createElementBlock("p",ru,"底部边距即连续纸走纸留白")):e.createCommentVNode("",!0),e.createElementVNode("div",su,[e.createElementVNode("div",du,[w[33]||(w[33]=e.createElementVNode("span",{class:"pd-label"},"上",-1)),e.createVNode(re,{"model-value":M.value,min:0,max:50,"onUpdate:modelValue":T},null,8,["model-value"])]),e.createElementVNode("div",cu,[w[34]||(w[34]=e.createElementVNode("span",{class:"pd-label"},"下",-1)),e.createVNode(re,{"model-value":N.value,min:0,max:100,"onUpdate:modelValue":$},null,8,["model-value"])]),e.createElementVNode("div",uu,[w[35]||(w[35]=e.createElementVNode("span",{class:"pd-label"},"左",-1)),e.createVNode(re,{"model-value":O.value,min:0,max:50,"onUpdate:modelValue":I},null,8,["model-value"])]),e.createElementVNode("div",mu,[w[36]||(w[36]=e.createElementVNode("span",{class:"pd-label"},"右",-1)),e.createVNode(re,{"model-value":A.value,min:0,max:50,"onUpdate:modelValue":ee},null,8,["model-value"])])]),w[41]||(w[41]=e.createElementVNode("h3",{class:"pd-divider"},"页眉/页脚高度 (mm)",-1)),e.createElementVNode("div",pu,[w[37]||(w[37]=e.createElementVNode("span",{class:"pd-label"},"页眉高度",-1)),e.createVNode(re,{"model-value":k.value,min:0,max:100,step:.1,"onUpdate:modelValue":oe},null,8,["model-value"])]),e.createElementVNode("div",vu,[w[38]||(w[38]=e.createElementVNode("span",{class:"pd-label"},"页脚高度",-1)),e.createVNode(re,{"model-value":z.value,min:0,max:100,step:.1,"onUpdate:modelValue":ue},null,8,["model-value"])])],32),e.createVNode(Yd,{"model-value":ge.value,fields:o.fields,"onUpdate:modelValue":fe},null,8,["model-value","fields"])],512),[[e.vShow,(o.activeTab||"page")==="page"]])])],64))],2))}}),gu=ce(fu,[["__scopeId","data-v-d2bf0fe4"]]),hu={class:"status-bar"},bu={key:0,class:"status-item coord"},Eu={class:"status-item"},yu={class:"status-item"},ku={class:"status-item status-paper"},Vu=e.defineComponent({__name:"StatusBar",props:{coordinate:{},scale:{},elementCount:{},selectedCount:{},paper:{},dirty:{type:Boolean}},setup(o){return(r,t)=>(e.openBlock(),e.createElementBlock("div",hu,[o.coordinate?(e.openBlock(),e.createElementBlock("span",bu," x:"+e.toDisplayString(o.coordinate.x.toFixed(1))+" y:"+e.toDisplayString(o.coordinate.y.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0),e.createElementVNode("span",Eu,"缩放 "+e.toDisplayString(o.scale)+"%",1),e.createElementVNode("span",yu,"元素 "+e.toDisplayString(o.elementCount)+e.toDisplayString(o.selectedCount?` (选中 ${o.selectedCount})`:""),1),e.createElementVNode("span",{class:e.normalizeClass(["status-dirty",{on:o.dirty}])},[t[0]||(t[0]=e.createElementVNode("span",{class:"dirty-dot"},null,-1)),e.createTextVNode(e.toDisplayString(o.dirty?"未保存":"已保存"),1)],2),e.createElementVNode("span",ku,e.toDisplayString(o.paper),1)]))}}),Nu=ce(Vu,[["__scopeId","data-v-a91952ff"]]),wu={id:"getting-started",title:"快速入门",content:`
6
+ */"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),be=require("@worm-vue3-print/core"),h=require("@worm-vue3-print/core/designer"),ue=require("lucide-vue-next"),Me=require("@worm-vue3-print/core/browser"),Lt=require("jsbarcode"),Xt=require("dompurify"),Je=Symbol("selected-ids"),It=Symbol("preview-ids");function Zt(t){const l=e.ref(new Set),o=e.ref(new Set),n=e.computed(()=>t.value.filter(d=>l.value.has(d.id))),i=e.computed(()=>l.value.size>0);function c(d,f=!1){if(f){const z=new Set(l.value);z.has(d)?z.delete(d):z.add(d),l.value=z}else l.value=new Set([d])}function r(){l.value=new Set}function a(d){l.value=new Set(d)}function s(d){o.value=new Set(d)}function m(){o.value=new Set}function u(){l.value=new Set(o.value),o.value=new Set}function g(){const d=n.value;if(d.length===0)return null;let f=1/0,z=1/0,V=-1/0,N=-1/0;return d.forEach(p=>{f=Math.min(f,p.options.left),z=Math.min(z,p.options.top),V=Math.max(V,p.options.left+p.options.width),N=Math.max(N,p.options.top+p.options.height)}),{left:f,top:z,width:V-f,height:N-z}}return{selectedIds:l,selectedElements:n,hasSelection:i,select:c,clearSelection:r,selectAll:a,getSelectionBounds:g,previewIds:o,setPreview:s,clearPreview:m,commitPreview:u}}function Jt(){const t=e.ref(null);function l(i){t.value=i.map(c=>({options:{...c.options},printElementType:{...c.printElementType}}))}function o(i=10){if(!t.value)return null;const c=new Map;for(const a of t.value){const s=a.options.groupId;s&&c.set(s,(c.get(s)??0)+1)}const r=new Map;for(const[a,s]of c)r.set(a,s>=2?h.generateGroupId():void 0);return t.value.map(a=>({id:h.generateId(),options:{...a.options,left:a.options.left+i,top:a.options.top+i,groupId:a.options.groupId?r.get(a.options.groupId):void 0},printElementType:{...a.printElementType}}))}function n(){return t.value!==null&&t.value.length>0}return{clipboard:t,copy:l,paste:o,hasData:n}}function Qt(t){const o=e.ref([]),n=e.ref([]),i=e.ref(!1),c=e.ref(!1);function r(){i.value=o.value.length>0,c.value=n.value.length>0}function a(f){const z={elements:JSON.parse(JSON.stringify(f?.elements??[])),templateData:JSON.parse(JSON.stringify(f?.templateData??{}))};return f?.pages&&(z.pages=JSON.parse(JSON.stringify(f.pages)),f.activePageIndex!==void 0&&(z.activePageIndex=f.activePageIndex)),z}function s(f){return a(f)}function m(f){o.value.push(s(f)),n.value=[],o.value.length>50&&o.value.shift(),r()}function u(f){if(o.value.length===0)return null;const z=o.value.pop();return n.value.push(f?s(f):a(z)),r(),o.value.length>0?a(o.value[o.value.length-1]):null}function g(f){if(n.value.length===0)return null;const z=n.value.pop();return o.value.push(f?s(f):a(z)),r(),a(z)}function d(){o.value=[],n.value=[],r()}return{push:m,undo:u,redo:g,canUndo:i,canRedo:c,clear:d}}const pt="开启拼版后只能有一个设计页面";function Re(){return{paperSize:"A4",orientation:"portrait",unit:"mm",margins:{top:10,right:10,bottom:10,left:10},header:{height:10,elements:[]},footer:{height:10,elements:[]},elements:[],watermark:{}}}function Ze(t){const l=(o,n)=>(o??[]).map(i=>{const c={...i.options};return(i.printElementType?.type??i.type)==="table"&&h.syncTableElementSize(c),{id:i.id||h.generateId(),zone:n,options:c,printElementType:{...i.printElementType}}});return{...t,margins:{...t.margins},header:{height:t.header?.height??10,elements:[]},footer:{height:t.footer?.height??10,elements:[]},guides:[...t.guides??[]],elements:[...l(t.elements??[],"content"),...l(t.header?.elements??[],"header"),...l(t.footer?.elements??[],"footer")]}}function wt(t){const l=(n,i)=>{const c=Ze(h.normalizeTemplateUnits(n));return c.name||(c.name=`页面 ${i+1}`),c};if(!t)return[l(Re(),0)];const o=Array.isArray(t.pages)?t.pages:[t];return o.length?o.map(l):[l(Re(),0)]}function Ct(t){const l=t.elements,o=n=>l.filter(i=>(i.zone||"content")===n).map(i=>({id:i.id,type:i.printElementType.type,options:{...i.options},printElementType:{...i.printElementType}}));return{unit:"mm",...t,header:{...t.header,elements:o("header")},footer:{...t.footer,elements:o("footer")},elements:o("content"),guides:[...t.guides??[]]}}function _t(t={}){const l=e.ref(100),o=e.ref(!0),n=e.ref(!0),i=e.ref(!1),c=e.ref(!0),r=e.ref(wt(t.initialTemplate)),a=e.ref(0),s=e.ref(r.value[0]??Ze(Re())),m=e.computed(()=>r.value.some(W=>W.tiling?.enabled===!0));function u(){return m.value?(alert(pt),!0):!1}function g(){r.value[a.value]=s.value}function d(W){W<0||W>=r.value.length||(g(),a.value=W,s.value=r.value[W],x())}const f=e.computed({get:()=>s.value.elements,set:W=>{s.value.elements=W}}),z=e.ref(t.initialFields||[]),{selectedIds:V,selectedElements:N,select:p,clearSelection:S,selectAll:O,previewIds:oe,setPreview:ee,clearPreview:Z,commitPreview:y}=Zt(f),{group:U,ungroup:Y,getGroupedIds:q}=h.useGroup(),{copy:E,paste:T,hasData:b}=Jt(),{align:$}=h.useAlign(),{push:M,undo:L,redo:J,canUndo:P,canRedo:X}=Qt(),re=e.computed(()=>{if(V.value.size===0)return null;const W=V.value.values().next().value;return f.value.find(se=>se.id===W)||null}),le=e.ref(null);function v(W){le.value=W}function x(){S(),v(null)}function K(){return{elements:f.value.map(W=>({id:W.id,zone:W.zone,options:JSON.parse(JSON.stringify(W.options)),printElementType:{...W.printElementType}})),templateData:{paperSize:s.value.paperSize,orientation:s.value.orientation,outputRotation:s.value.outputRotation,margins:{...s.value.margins},header:{height:s.value.header.height,elements:[]},footer:{height:s.value.footer.height,elements:[]},elements:[],customWidth:s.value.customWidth,customHeight:s.value.customHeight,watermark:s.value.watermark?{...s.value.watermark}:void 0,guides:[...s.value.guides??[]]},pages:JSON.parse(JSON.stringify(r.value)),activePageIndex:a.value}}function G(){M(K())}function C(W){return W.pages?.[W.activePageIndex??0]?.elements??W.elements}function D(){const W=L(K());W?.pages?(r.value=W.pages,a.value=W.activePageIndex??0,s.value=r.value[a.value]??r.value[0],x()):W?.templateData&&(s.value={...W.templateData,elements:W.elements})}function j(){const W=J(K());W?.pages?(r.value=W.pages,a.value=W.activePageIndex??0,s.value=r.value[a.value]??r.value[0],x()):W?.templateData&&(s.value={...W.templateData,elements:W.elements})}function _(){E(N.value)}function ae(){E(N.value),fe()}function ge(){const W=T();W&&W.length>0&&(f.value.push(...W),G())}function A(){E(N.value);const W=T();W&&W.length>0&&(W.forEach(se=>{se.options.left+=5,se.options.top+=5}),f.value.push(...W),p(W[0].id,!1),G())}function B(){l.value=100}const F=e.computed(()=>b());let ne=!1,ie=null;const ve=300;function I(W,se){const me=N.value.filter(ke=>!ke.options.locked);me.length!==0&&(me.forEach(ke=>{ke.options.left+=W,ke.options.top+=se}),ne||(ne=!0,G()),ie&&clearTimeout(ie),ie=setTimeout(()=>{ne=!1,ie=null},ve))}function H(){O(f.value.map(W=>W.id))}function k(W){$(N.value,W),G()}function w(W,se=!1){if(se){p(W,!0);return}V.value=new Set(q(f.value,W))}function R(){f.value=U(f.value,V.value),G()}function ce(){f.value=Y(f.value,V.value),G()}function fe(){V.value.size!==0&&(f.value=f.value.filter(W=>!V.value.has(W.id)),S(),G())}const{setup:ye,cleanup:we}=h.useKeyboard({onMove:I,onDelete:fe,onCopy:_,onPaste:ge,onSelectAll:H,onUndo:D,onRedo:j,onDuplicate:A,onResetZoom:B,onAlignLeft:()=>k("left"),onAlignRight:()=>k("right"),onAlignCenterH:()=>k("vertical"),onAlignTop:()=>k("top"),onAlignBottom:()=>k("bottom"),onGroup:R,onUngroup:ce});let xe=null;function Le(){xe=K()}function _e(){if(!xe)return;const W=new Map(xe.elements.map(Ee=>[Ee.id,Ee]));let se=!1;for(const Ee of f.value){const $e=W.get(Ee.id);if(!$e)continue;($e.options.left!==Ee.options.left||$e.options.top!==Ee.options.top||$e.options.width!==Ee.options.width||$e.options.height!==Ee.options.height)&&h.finalizeElementZone(Ee,s.value).rejected&&(se=!0)}se&&alert("该元素类型不能放入页眉/页脚");const me=Ee=>`${Ee.id}:${Ee.zone||"content"}:${Ee.options.left},${Ee.options.top},${Ee.options.width},${Ee.options.height}`,ke=C(xe).map(me).join("|"),Se=C(K()).map(me).join("|");xe=null,ke!==Se&&G()}function We(W,se){const me=h.zoneFromPaperPoint(s.value,se.x,se.y);if(me!=="content"&&!h.ZONE_ALLOWED_TYPES.includes(W.printElementType.type))return alert("该元素类型不能放入页眉/页脚"),!1;const ke=h.getZoneRects(s.value)[me];return W.zone=me,W.options.left=se.x-ke.left,W.options.top=se.y-ke.top,me!=="content"&&h.clampToZone(W,ke),!0}function et(W,se){const me=h.createRuntimeElement(W);se&&!We(me,se)||(f.value.push(me),p(me.id,!1),G())}function tt(W,se){const me=h.createFieldElement(W);se&&!We(me,se)||(f.value.push(me),p(me.id,!1),G())}function ot(W){if(V.value.size===0)return;const se=V.value.values().next().value,me=f.value.find(Ae=>Ae.id===se);if(!me)return;const ke=me.options.zIndex??0,Se=f.value.map(Ae=>Ae.options.zIndex??0),Ee=Math.max(...Se,0),$e=Math.min(...Se,0);switch(W){case"top":me.options.zIndex=Ee+1;break;case"bottom":me.options.zIndex=$e-1;break;case"up":me.options.zIndex=ke+1;break;case"down":me.options.zIndex=ke-1;break}G()}function nt(W,se){const{width:me,height:ke}=h.getPaperDimensions(s.value),Se=96/25.4;l.value=h.computeFitScale(W,se,me*Se,ke*Se)}function lt(W){if(s.value={...W},r.value[a.value]=s.value,r.value.length>1){const se={paperSize:W.paperSize,orientation:W.orientation,outputRotation:W.outputRotation,customWidth:W.customWidth,customHeight:W.customHeight};for(const me of r.value)Object.assign(me,se)}G()}function Ge(){return g(),r.value.length<=1?Ct(r.value[0]):{version:1,pages:r.value.map(Ct)}}function ze(W,se){r.value=wt(W),a.value=0,s.value=r.value[0],se&&(s.value={...s.value,elements:se.map(me=>({...me,id:me.id||h.generateId(),zone:me.zone||"content",options:{...me.options},printElementType:{...me.printElementType}}))},r.value[a.value]=s.value),M(K())}function qe(){const W=new Set(r.value.map(me=>me.name));let se=r.value.length+1;for(;W.has(`页面 ${se}`);)se++;return`页面 ${se}`}function at(){if(u())return;g();const W=r.value[a.value]??Re(),se=Ze({...Re(),paperSize:W.paperSize,orientation:W.orientation,customWidth:W.customWidth,customHeight:W.customHeight,name:qe()});r.value.push(se),a.value=r.value.length-1,s.value=se,x(),G()}function it(){if(u())return;g();const W=r.value[a.value],se=JSON.parse(JSON.stringify(W));se.name=`${W.name??`页面 ${a.value+1}`} 副本`,se.elements=se.elements.map(me=>({...me,id:h.generateId()})),r.value.splice(a.value+1,0,se),d(a.value+1),G()}function Ke(W){r.value.length<=1||(g(),r.value.splice(W,1),W<a.value?a.value--:W===a.value&&a.value>=r.value.length&&(a.value=r.value.length-1),s.value=r.value[a.value],x(),G())}function rt(W,se){r.value[W]&&(r.value[W].name=se)}function st(W,se){if(W===se)return;g();const[me]=r.value.splice(W,1);r.value.splice(se,0,me),a.value=se,s.value=me,x(),G()}return M(K()),e.onMounted(()=>ye()),e.onUnmounted(()=>{we(),ie&&(clearTimeout(ie),ie=null)}),{scale:l,showRuler:o,showGrid:n,snapToGrid:i,showTableGhostBorder:c,templateData:s,elements:f,fields:z,tilingEnabled:m,pages:r,activePageIndex:a,switchPage:d,addPage:at,duplicatePage:it,deletePage:Ke,renamePage:rt,movePage:st,selectedIds:V,selectedElements:N,selectedElement:re,select:p,selectElement:w,clearSelection:S,selectAll:H,previewIds:oe,setPreview:ee,clearPreview:Z,commitPreview:y,hasClipboard:F,copy:_,paste:ge,cutSelected:ae,tableSelection:le,setTableSelection:v,canUndo:P,canRedo:X,undo:D,redo:j,recordHistory:G,alignSelected:k,groupSelected:R,ungroupSelected:ce,deleteSelected:fe,duplicateSelected:A,resetZoom:B,dragStart:Le,dragStop:_e,addElement:et,addFieldElement:tt,moveLayer:ot,fitToWindow:nt,updateTemplateData:lt,getTemplateJson:Ge,loadTemplate:ze}}const Ce=Symbol("mixed"),vt=new Set(["text","longText"]);function eo(t){const{elements:l,selectedIds:o,tableSelection:n,recordHistory:i}=t,c=e.computed(()=>l.value.filter(b=>o.value.has(b.id)&&!b.options.locked)),r=e.computed(()=>{const b=n.value;return b?l.value.find($=>$.id===b.elementId)??null:null}),a=e.computed(()=>n.value&&r.value?"cells":c.value.length>0||o.value.size>0?"elements":"none"),s=e.computed(()=>{const b=n.value,$=r.value?.options.tableRows;if(!b||!$)return[];const M=[];for(let L=b.r1;L<=b.r2;L++)for(let J=b.c1;J<=b.c2;J++){const P=$[L]?.cells[J];P&&!P.merged&&M.push(P)}return M}),m=e.computed(()=>c.value.filter(b=>vt.has(b.printElementType.type))),u=e.computed(()=>a.value==="cells"?s.value.length>0:a.value!=="elements"?!1:c.value.length>0&&m.value.length===c.value.length),g=e.computed(()=>a.value==="cells"?s.value:m.value.map(b=>b.options));function d(b){if(!b.length)return;const $=b[0];return b.every(M=>M===$)?$:Ce}const f=(b,$)=>(b??"").split(/\s+/).includes($),z=e.computed(()=>{const b=g.value;if(!b.length)return{fontFamily:void 0,fontSize:void 0,color:void 0,backgroundColor:void 0,textAlign:void 0,verticalAlign:void 0,bold:!1,underline:!1,strike:!1};const $=b.map(L=>L.fontWeight==="bold"||L.fontWeight==="bolder"),M=b.map(L=>L.textDecoration);return{fontFamily:d(b.map(L=>L.fontFamily)),fontSize:d(b.map(L=>L.fontSize)),color:d(b.map(L=>L.color)),backgroundColor:d(b.map(L=>L.backgroundColor)),textAlign:d(b.map(L=>a.value==="cells"?L.align:L.textAlign)),verticalAlign:d(b.map(L=>a.value==="cells"?L.valign:L.verticalAlign)),bold:$.every(Boolean)?!0:$.some(Boolean)?Ce:!1,underline:M.map(L=>f(L,"underline")).every(Boolean)?!0:M.some(L=>f(L,"underline"))?Ce:!1,strike:M.map(L=>f(L,"line-through")).every(Boolean)?!0:M.some(L=>f(L,"line-through"))?Ce:!1}});function V(b){const $=s.value;$.length&&($.forEach(b),i())}function N(b){if(a.value==="cells"){V(X=>{"fontFamily"in b&&(X.fontFamily=b.fontFamily),"fontSize"in b&&(X.fontSize=b.fontSize),"color"in b&&(X.color=b.color),"backgroundColor"in b&&(X.backgroundColor=b.backgroundColor),"textAlign"in b&&(X.align=b.textAlign),"verticalAlign"in b&&(X.valign=b.verticalAlign)});return}const $=m.value,M=c.value,J=["fontFamily","fontSize","color","textAlign","verticalAlign"].some(X=>X in b),P="backgroundColor"in b;!($.length&&J)&&!(M.length&&P)||($.forEach(X=>{const re=X.options;"fontFamily"in b&&(re.fontFamily=b.fontFamily),"fontSize"in b&&(re.fontSize=b.fontSize),"color"in b&&(re.color=b.color),"textAlign"in b&&(re.textAlign=b.textAlign),"verticalAlign"in b&&(re.verticalAlign=b.verticalAlign)}),P&&M.forEach(X=>{X.options.backgroundColor=b.backgroundColor}),i())}function p(){if(a.value==="cells"){const M=z.value.bold!==!0;V(L=>{L.fontWeight=M?"bold":void 0});return}const b=z.value.bold!==!0,$=m.value;$.length&&($.forEach(M=>{M.options.fontWeight=b?"bold":"normal"}),i())}function S(b){if(a.value==="cells")return;const $=m.value;if(!$.length)return;const M=z.value[b==="underline"?"underline":"strike"]!==!0;$.forEach(L=>{const J=(L.options.textDecoration??"").split(/\s+/).filter(Boolean),P=J.indexOf(b);M&&P<0&&J.push(b),!M&&P>=0&&J.splice(P,1),L.options.textDecoration=J.length?J.join(" "):void 0}),i()}const O=()=>S("underline"),oe=()=>S("line-through");function ee(b,$){const M=c.value;M.length&&(M.forEach(L=>{L.options.borders=void 0,b==="none"?L.options.borderWidth=0:(L.options.borderWidth=$.width,L.options.borderStyle=$.style,L.options.borderColor=$.color)}),i())}function Z(b,$){const M=n.value,L=r.value?.options.tableRows;!M||!L||(h.applyBorderPreset(L,{r1:M.r1,c1:M.c1,r2:M.r2,c2:M.c2},b,$),i())}function y(b,$,M){V(L=>{const J={...L.borders??{}};for(const P of b)M?J[P]={...$}:delete J[P];L.borders=J})}const U=["top","right","bottom","left"],Y=e.computed(()=>{if(a.value!=="cells")return null;const b=s.value;if(!b.length)return null;const $={};for(const M of U){const L=b.map(J=>!!J.borders?.[M]);$[M]=L.every(Boolean)?!0:L.some(Boolean)?Ce:!1}return $});function q(b,$){const M=Y.value?.[b]!==!0;y([b],$,M)}const E=e.computed(()=>{if(a.value!=="elements")return null;const b=c.value;if(!b.length)return null;const $={};for(const M of U){const L=b.map(J=>!!J.options.borders?.[M]);$[M]=L.every(Boolean)?!0:L.some(Boolean)?Ce:!1}return $});function T(b,$){const M=c.value;if(!M.length)return;const L=E.value?.[b]!==!0;M.forEach(J=>{const P={...J.options.borders??{}};L?P[b]={width:$.width,style:$.style,color:$.color}:delete P[b],J.options.borders=P}),i()}return{context:a,fontEditable:u,values:z,applyStyle:N,toggleBold:p,toggleUnderline:O,toggleStrike:oe,applyElementBorder:ee,applyCellBorderPreset:Z,applyCellBorderEdges:y,cellEdges:Y,toggleCellEdge:q,elementEdges:E,toggleElementEdge:T}}const to=["fontFamily","fontSize","fontWeight","color","textAlign","verticalAlign","textDecoration"];function oo(t){const{elements:l,selectedIds:o,recordHistory:n}=t,i=e.ref(!1),c=e.ref(!1),r=e.ref(null);let a=null;const s=e.computed(()=>l.value.filter(V=>o.value.has(V.id)&&!V.options.locked)),m=e.computed(()=>s.value.length===1);function u(V){if(!V)return;const N={};for(const p of h.ELEMENT_BORDER_SIDES){const S=V[p];S&&(N[p]={...S})}return N}function g(V=!1){const N=s.value[0];if(!N)return!1;const p=N.options,S=N.printElementType.type;return a={text:vt.has(S)?Object.fromEntries(to.map(O=>[O,p[O]])):null,backgroundColor:p.backgroundColor,border:h.acceptsElementBorder(S)?{borderWidth:p.borderWidth,borderStyle:p.borderStyle,borderColor:p.borderColor,borders:u(p.borders)}:null},r.value=N.id,i.value=!0,c.value=V,!0}function d(){i.value=!1,c.value=!1,r.value=null,a=null}function f(V){const N=a;if(!N||V.options.locked||V.id===r.value)return!1;const p=V.options,S=V.printElementType.type;return N.text&&vt.has(S)&&Object.assign(p,N.text),p.backgroundColor=N.backgroundColor,N.border&&h.acceptsElementBorder(S)&&(p.borderWidth=N.border.borderWidth,p.borderStyle=N.border.borderStyle,p.borderColor=N.border.borderColor,p.borders=u(N.border.borders)),!0}e.watch(o,()=>{if(!i.value||!a)return;const V=s.value;if(!V.length){d();return}let N=!1;V.forEach(p=>{N=f(p)||N}),N&&(n(),c.value||d())});function z(V){if(V.key!=="Escape"||!i.value)return;const N=V.target?.tagName;N==="INPUT"||N==="TEXTAREA"||N==="SELECT"||d()}return document.addEventListener("keydown",z),e.onScopeDispose(()=>document.removeEventListener("keydown",z)),{active:i,locked:c,sourceId:r,capturable:m,capture:g,cancel:d}}let St=0;function no(){return St+=1,`guide-${St}`}function lo(t,l){const o=e.computed(()=>t.value.guides??[]);function n(s){t.value={...t.value,guides:s([...t.value.guides??[]])},l()}function i(s,m){n(u=>(u.push({type:s,position:m,id:no()}),u))}function c(s,m){n(u=>u.map(g=>g.id===s?{...g,position:m}:g))}function r(s){n(m=>m.filter(u=>u.id!==s))}function a(){const s=[],m=[];for(const u of o.value)u.type==="vertical"?s.push(u.position):m.push(u.position);return{vertical:s,horizontal:m}}return{guides:o,addGuide:i,moveGuide:c,removeGuide:r,getGuidePositions:a}}const He=Symbol("table-edit"),ft=Symbol("print-upload-image"),gt=Symbol("print-upload-design-background"),ht=Symbol("print-font-catalog"),ao=e.computed(()=>[]);function io(t){return{catalog:e.computed(()=>{const o=[],n=new Set;for(const i of e.toValue(t)??[]){const c=i?.family?.trim();if(!c)continue;const r=c.toLowerCase();if(n.has(r))continue;n.add(r);const a=i.label?.trim();o.push(a?{family:c,label:a}:{family:c})}return o})}}function ro(){return e.inject(ht,ao)}function xt(t,l){const o=l?.trim().toLowerCase();if(o)return t.find(n=>n.family.trim().toLowerCase()===o)}function Bt(t){return t.label?`${t.label}(${t.family})`:t.family}function Fe(t){return t.toLowerCase().replace(/\s+/g,"")}function $t(t,l){if(t===l)return 0;if(t.startsWith(l))return 1;if(t.includes(l))return 2;let o=0;for(const n of t)if(n===l[o]&&o++,o===l.length)return 3;return-1}function so(t,l){const o=Fe(l.trim());return o?t.map((n,i)=>({font:n,index:i,rank:co(n,o)})).filter(n=>n.rank>=0).sort((n,i)=>n.rank-i.rank||n.index-i.index).map(n=>n.font):[...t]}function co(t,l){const o=$t(Fe(t.family),l);if(!t.label)return o;const n=$t(Fe(t.label),l);return o<0?n:n<0?o:Math.min(o,n)}const uo="print-designer-font-face";function mo(t){const l=`${uo}-${e.useId()}`;let o;e.watchEffect(()=>{const n=e.toValue(t);if(!n){o?.remove(),o=void 0;return}o||(o=document.createElement("style"),o.id=l,document.head.appendChild(o)),o.textContent=n}),e.onUnmounted(()=>{o?.remove(),o=void 0})}const po=e.defineComponent({__name:"HelpButton",emits:["click"],setup(t){return(l,o)=>(e.openBlock(),e.createElementBlock("button",{class:"help-button",title:"帮助文档",onClick:o[0]||(o[0]=n=>l.$emit("click"))},[...o[1]||(o[1]=[e.createElementVNode("span",{class:"help-icon"},"?",-1)])]))}}),pe=(t,l)=>{const o=t.__vccOpts||t;for(const[n,i]of l)o[n]=i;return o},vo=pe(po,[["__scopeId","data-v-80ccab03"]]),fo=["disabled","data-test","data-tip"],go=e.defineComponent({__name:"ToolbarDropdown",props:{disabled:{type:Boolean,default:!1},testId:{default:"dd-trigger"},tip:{},panelClass:{},keepMounted:{type:Boolean,default:!1}},setup(t){const l=t,o=e.ref(!1),n=e.ref(null);function i(c){o.value&&(n.value?.contains(c.target)||(o.value=!1))}return e.watch(()=>l.disabled,c=>{c&&(o.value=!1)}),e.onMounted(()=>document.addEventListener("pointerdown",i)),e.onUnmounted(()=>document.removeEventListener("pointerdown",i)),(c,r)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"wrapRef",ref:n,class:"tb-dd"},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["tb-dd-trigger",{on:o.value}]),disabled:t.disabled,"data-test":t.testId,"data-tip":t.tip,onClick:r[0]||(r[0]=a=>o.value=!o.value)},[e.renderSlot(c.$slots,"trigger",{},void 0,!0),e.createVNode(e.unref(ue.ChevronDown),{size:12,class:e.normalizeClass(["tb-dd-arrow",{up:o.value}])},null,8,["class"])],10,fo),t.keepMounted||o.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["tb-dd-panel",[t.panelClass,{"is-hidden":t.keepMounted&&!o.value}]])},[e.renderSlot(c.$slots,"default",{},void 0,!0)],2)):e.createCommentVNode("",!0)],512))}}),Oe=pe(go,[["__scopeId","data-v-e5f0ee73"]]);function ho(t){return`tb-more-slot-${t}`}const bt=Symbol("worm-print-toolbar-overflow"),ct=2,bo=74;function Eo(){const t=e.shallowRef(null),l=new Map,o=e.reactive(new Map),n=new Map;let i=0;const c=e.ref(new Set),r=e.ref(!1),a=e.computed(()=>[...o.values()].sort((O,oe)=>O.order-oe.order)),s=e.computed(()=>c.value.size>0);function m(){for(const[O,oe]of l){const ee=oe.offsetWidth;ee>0&&n.set(O,ee)}}function u(O){const oe=getComputedStyle(O),ee=Number.parseFloat(oe.gap)||ct,Z=Number.parseFloat(oe.paddingLeft)||0,y=Number.parseFloat(oe.paddingRight)||0;let U=0;for(const Y of Array.from(O.children)){if(Y.hasAttribute("data-overflow-more")||Y.hasAttribute("data-overflow-spacer"))continue;const q=Math.max(Y.offsetWidth,Y.scrollWidth);q<=0||(U+=q+ee)}return{available:O.clientWidth-Z-y,natural:U}}function g(){const O=t.value;if(!O)return;const{available:oe,natural:ee}=u(O),Z=c.value.size>0;Z||(i=ee,m());const y=a.value.map(E=>({id:E.id,order:E.order,width:n.get(E.id)??0})),U=y.reduce((E,T)=>E-T.width-ct,i),Y=h.resolveToolbarOverflow({available:oe,pinned:U,moreTriggerWidth:bo,gap:ct,units:y});Y.movedIds.length===c.value.size&&Y.movedIds.every(E=>c.value.has(E))||(c.value=new Set(Y.movedIds)),r.value=Y.overflowRemains,Z&&c.value.size===0&&e.nextTick(g)}let d=null;function f(O){O!==t.value&&(d?.disconnect(),t.value=O,O&&typeof ResizeObserver<"u"&&(d=new ResizeObserver(()=>g()),d.observe(O)),e.nextTick(g))}function z(O,oe){o.set(O.id,O),l.set(O.id,oe),e.nextTick(g)}function V(O){l.delete(O),o.delete(O),n.delete(O),e.nextTick(g)}const N=document.createElement("div");function p(O){return c.value.has(O)}function S(O){return c.value,t.value?.querySelector(`[data-overflow-slot="${O}"]`)??N}return e.onUnmounted(()=>d?.disconnect()),{attachRoot:f,registerUnit:z,unregisterUnit:V,refresh:g,movedIds:c,overflowRemains:r,hasMoved:s,chain:a,moved:p,slotEl:S}}function Ut(){const t=Eo();return e.provide(bt,t),t}function Et(){return e.inject(bt,null)}function Ft(){const t=e.ref(new Set),l=document.createElement("div");return{attachRoot:()=>{},registerUnit:()=>{},unregisterUnit:()=>{},refresh:()=>{},movedIds:t,overflowRemains:e.ref(!1),hasMoved:e.computed(()=>!1),chain:e.computed(()=>[]),moved:()=>!1,slotEl:()=>l}}function yt(t){return{mounted(l,o){l.dataset.unit=o.value.id,t.registerUnit(o.value,l)},unmounted(l,o){t.unregisterUnit(o.value.id)}}}const yo={key:0,class:"tb-group tb-more-group","data-overflow-more":""},ko={class:"tb-menu tb-more-menu"},Vo=["data-unit"],No={class:"tb-menu-label"},wo=["id","data-overflow-slot","data-unit"],Co=e.defineComponent({__name:"ToolbarMore",setup(t){const l=Et(),o=e.computed(()=>!!l&&l.hasMoved.value),n=e.computed(()=>l?.chain.value??[]),i=e.computed(()=>l?.movedIds.value??new Set);return(c,r)=>e.unref(l)?e.withDirectives((e.openBlock(),e.createElementBlock("div",yo,[e.createVNode(Oe,{"test-id":"more-dd",tip:"更多","keep-mounted":"","panel-class":"tb-more-panel"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Ellipsis),{size:15}),r[0]||(r[0]=e.createElementVNode("span",{class:"tb-btn-text"},"更多",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",ko,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,a=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{key:a.id,class:"tb-more-item","data-unit":a.id},[e.createElementVNode("div",No,e.toDisplayString(a.label),1),e.createElementVNode("div",{id:e.unref(ho)(a.id),class:"tb-more-slot","data-overflow-slot":a.id,"data-unit":a.id},null,8,wo)],8,Vo)),[[e.vShow,i.value.has(a.id)]])),128))])]),_:1})],512)),[[e.vShow,o.value]]):e.createCommentVNode("",!0)}}),So=pe(Co,[["__scopeId","data-v-5d13dbea"]]),xo={class:"tb-group tb-brand"},Bo={class:"tb-title"},$o={class:"tb-title-name"},Do={class:"tb-group"},To=["disabled"],Mo=["disabled"],zo={class:"tb-ou tb-group"},Ao={class:"tb-menu","data-test":"arrange-panel"},Po={class:"tb-menu-grid"},Ro=["disabled"],Lo=["disabled"],Io=["disabled"],Uo=["disabled"],Fo=["disabled"],Oo=["disabled"],Ho=["disabled"],Wo=["disabled"],Go={class:"tb-menu-grid"},qo=["disabled"],Ko=["disabled"],jo=["disabled"],Yo=["disabled"],Xo={class:"tb-menu-grid"},Zo=["disabled"],Jo=["disabled"],Qo={class:"tb-menu tb-menu-rows","data-test":"view-panel"},_o={class:"tb-ou tb-group"},en={class:"tb-zoom"},tn={class:"tb-ou tb-group"},on=["disabled","data-tip"],nn=["disabled","data-tip"],ln=["disabled","data-tip"],an={key:0,class:"tb-group"},rn={class:"tb-group"},sn=e.defineComponent({__name:"DesignerToolbar",props:e.mergeModels({isEdit:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},hasMultiSelection:{type:Boolean},hasSelection:{type:Boolean},showRuler:{type:Boolean,default:!0},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},selectedElementHasGroup:{type:Boolean},showHelp:{type:Boolean,default:!0},clipboardDisabled:{type:Boolean,default:!0},hasClipboard:{type:Boolean,default:!1}},{scale:{default:100},scaleModifiers:{}}),emits:e.mergeModels(["preview","save","undo","redo","align","move-layer","toggle-ruler","toggle-grid","toggle-snap","toggle-table-ghost-border","group","ungroup","fit-window","zoom","help","copy","paste","delete"],["update:scale"]),setup(t){const l=Ut(),o=yt(l),n=e.ref(null);e.onMounted(()=>l.attachRoot(n.value));const i=e.useModel(t,"scale"),c=t,r=e.computed(()=>c.clipboardDisabled?"粘贴 (Ctrl+V),需选中元素":c.hasClipboard?"粘贴 (Ctrl+V)":"粘贴 (Ctrl+V),剪贴板为空");return(a,s)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:e.normalizeClass(["designer-toolbar",{"is-tight":e.unref(l).overflowRemains.value}])},[e.createElementVNode("div",xo,[s[30]||(s[30]=e.createStaticVNode('<span class="tb-mark" aria-hidden="true" data-v-b50decc4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-v-b50decc4><rect x="5" y="3" width="14" height="18" rx="2.5" data-v-b50decc4></rect><line x1="8.5" y1="8.5" x2="15.5" y2="8.5" data-v-b50decc4></line><line x1="8.5" y1="12.5" x2="15.5" y2="12.5" data-v-b50decc4></line><line x1="8.5" y1="16.5" x2="12.5" y2="16.5" data-v-b50decc4></line></svg></span>',1)),e.createElementVNode("div",Bo,[e.createElementVNode("span",$o,e.toDisplayString(t.isEdit?"编辑模板":"新建模板"),1),s[29]||(s[29]=e.createElementVNode("span",{class:"tb-title-sub"},"打印模板设计器",-1))])]),e.createElementVNode("div",Do,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canUndo,onClick:s[0]||(s[0]=m=>a.$emit("undo")),"data-tip":"撤销"},[e.createVNode(e.unref(ue.Undo2),{size:15})],8,To),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.canRedo,onClick:s[1]||(s[1]=m=>a.$emit("redo")),"data-tip":"重做"},[e.createVNode(e.unref(ue.Redo2),{size:15})],8,Mo)]),e.renderSlot(a.$slots,"default",{},void 0,!0),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("arrange-view"),disabled:!e.unref(l).moved("arrange-view")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",zo,[e.createVNode(Oe,{"test-id":"arrange-dd",tip:"排列"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Layers),{size:15}),s[31]||(s[31]=e.createElementVNode("span",{class:"tb-btn-text"},"排列",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Ao,[s[32]||(s[32]=e.createElementVNode("div",{class:"tb-menu-label"},"对齐 / 分布",-1)),e.createElementVNode("div",Po,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[2]||(s[2]=m=>a.$emit("align","left")),"data-tip":"左对齐"},[e.createVNode(e.unref(ue.AlignStartVertical),{size:15})],8,Ro),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[3]||(s[3]=m=>a.$emit("align","right")),"data-tip":"右对齐"},[e.createVNode(e.unref(ue.AlignEndVertical),{size:15})],8,Lo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[4]||(s[4]=m=>a.$emit("align","top")),"data-tip":"顶对齐"},[e.createVNode(e.unref(ue.AlignStartHorizontal),{size:15})],8,Io),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[5]||(s[5]=m=>a.$emit("align","bottom")),"data-tip":"底对齐"},[e.createVNode(e.unref(ue.AlignEndHorizontal),{size:15})],8,Uo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[6]||(s[6]=m=>a.$emit("align","vertical")),"data-tip":"水平居中"},[e.createVNode(e.unref(ue.AlignCenterVertical),{size:15})],8,Fo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[7]||(s[7]=m=>a.$emit("align","horizontal")),"data-tip":"垂直居中"},[e.createVNode(e.unref(ue.AlignCenterHorizontal),{size:15})],8,Oo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[8]||(s[8]=m=>a.$emit("align","distributeHor")),"data-tip":"水平分布"},[e.createVNode(e.unref(ue.AlignHorizontalSpaceBetween),{size:15})],8,Ho),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[9]||(s[9]=m=>a.$emit("align","distributeVer")),"data-tip":"垂直分布"},[e.createVNode(e.unref(ue.AlignVerticalSpaceBetween),{size:15})],8,Wo)]),s[33]||(s[33]=e.createElementVNode("div",{class:"tb-menu-label"},"层级",-1)),e.createElementVNode("div",Go,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[10]||(s[10]=m=>a.$emit("move-layer","top")),"data-tip":"置顶"},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:15})],8,qo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[11]||(s[11]=m=>a.$emit("move-layer","up")),"data-tip":"上移一层"},[e.createVNode(e.unref(ue.ArrowUp),{size:15})],8,Ko),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[12]||(s[12]=m=>a.$emit("move-layer","down")),"data-tip":"下移一层"},[e.createVNode(e.unref(ue.ArrowDown),{size:15})],8,jo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasSelection,onClick:s[13]||(s[13]=m=>a.$emit("move-layer","bottom")),"data-tip":"置底"},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:15})],8,Yo)]),s[34]||(s[34]=e.createElementVNode("div",{class:"tb-menu-label"},"组合",-1)),e.createElementVNode("div",Xo,[e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.hasMultiSelection,onClick:s[14]||(s[14]=m=>a.$emit("group")),"data-tip":"组合 (Ctrl+G)"},[e.createVNode(e.unref(ue.Group),{size:15})],8,Zo),e.createElementVNode("button",{class:"tb-btn tb-icon",disabled:!t.selectedElementHasGroup,onClick:s[15]||(s[15]=m=>a.$emit("ungroup")),"data-tip":"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ue.Ungroup),{size:15})],8,Jo)])])]),_:1}),e.createVNode(Oe,{"test-id":"view-dd",tip:"视图"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Eye),{size:15}),s[35]||(s[35]=e.createElementVNode("span",{class:"tb-btn-text"},"视图",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Qo,[e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showRuler}]),"data-tip":"显示/隐藏标尺",onClick:s[16]||(s[16]=m=>a.$emit("toggle-ruler"))},[...s[36]||(s[36]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 标尺 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showGrid}]),"data-tip":"显示/隐藏网格背景",onClick:s[17]||(s[17]=m=>a.$emit("toggle-grid"))},[...s[37]||(s[37]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 网格 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.showTableGhostBorder}]),"data-tip":"显示/隐藏无边框表格的虚拟虚线",onClick:s[18]||(s[18]=m=>a.$emit("toggle-table-ghost-border"))},[...s[38]||(s[38]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 虚框 ",-1)])],2),e.createElementVNode("button",{class:e.normalizeClass(["tb-btn tb-menu-row",{on:t.snapToGrid}]),"data-tip":"开启/关闭元素吸附到网格",onClick:s[19]||(s[19]=m=>a.$emit("toggle-snap"))},[...s[39]||(s[39]=[e.createElementVNode("span",{class:"dot"},null,-1),e.createTextVNode(" 吸附 ",-1)])],2)])]),_:1})])),[[e.unref(o),{id:"arrange-view",order:4,label:"排列 / 视图"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("zoom"),disabled:!e.unref(l).moved("zoom")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",_o,[e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[20]||(s[20]=m=>a.$emit("fit-window")),"data-tip":"适应窗口"},[e.createVNode(e.unref(ue.Maximize),{size:15})]),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[21]||(s[21]=m=>a.$emit("zoom",-10)),"data-tip":"缩小"},[e.createVNode(e.unref(ue.ZoomOut),{size:15})]),e.createElementVNode("span",en,e.toDisplayString(i.value)+"%",1),e.createElementVNode("button",{class:"tb-btn tb-icon",onClick:s[22]||(s[22]=m=>a.$emit("zoom",10)),"data-tip":"放大"},[e.createVNode(e.unref(ue.ZoomIn),{size:15})])])),[[e.unref(o),{id:"zoom",order:3,label:"缩放"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("clipboard"),disabled:!e.unref(l).moved("clipboard")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",tn,[e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"copy",disabled:t.clipboardDisabled,onClick:s[23]||(s[23]=m=>a.$emit("copy")),"data-tip":t.clipboardDisabled?"复制 (Ctrl+C),需选中元素":"复制 (Ctrl+C)"},[e.createVNode(e.unref(ue.Copy),{size:15})],8,on),e.createElementVNode("button",{class:"tb-btn tb-icon","data-test":"paste",disabled:t.clipboardDisabled||!t.hasClipboard,onClick:s[24]||(s[24]=m=>a.$emit("paste")),"data-tip":r.value},[e.createVNode(e.unref(ue.ClipboardPaste),{size:15})],8,nn),e.createElementVNode("button",{class:"tb-btn tb-icon danger","data-test":"delete",disabled:t.clipboardDisabled,onClick:s[25]||(s[25]=m=>a.$emit("delete")),"data-tip":t.clipboardDisabled?"删除 (Delete),需选中元素":"删除 (Delete)"},[e.createVNode(e.unref(ue.Trash2),{size:15})],8,ln)])),[[e.unref(o),{id:"clipboard",order:1,label:"剪贴板"}]])],8,["to","disabled"])),e.createVNode(So),s[40]||(s[40]=e.createElementVNode("div",{class:"tb-spacer","data-overflow-spacer":""},null,-1)),t.showHelp?(e.openBlock(),e.createElementBlock("div",an,[e.createVNode(vo,{onClick:s[26]||(s[26]=m=>a.$emit("help"))})])):e.createCommentVNode("",!0),e.createElementVNode("div",rn,[e.createElementVNode("button",{class:"btn-secondary","data-tip":"预览模板打印效果",onClick:s[27]||(s[27]=m=>a.$emit("preview"))},"预览"),e.createElementVNode("button",{class:"btn-primary","data-tip":"保存模板",onClick:s[28]||(s[28]=m=>a.$emit("save"))},"保存")])],2))}}),dn=pe(sn,[["__scopeId","data-v-b50decc4"]]),cn={class:"font-select"},un=["placeholder","disabled","aria-expanded","aria-activedescendant","onKeydown"],mn=["id","aria-selected","onMousedown"],pn=e.defineComponent({__name:"FontSelect",props:{modelValue:{},placeholder:{default:"默认"},disabled:{type:Boolean,default:!1}},emits:["update:model-value"],setup(t,{emit:l}){const o=t,n=l,i=ro(),c=`font-select-list-${e.useId()}`,r=e.ref(null),a=e.ref(null),s=e.ref("down"),m=e.ref(N(o.modelValue)),u=e.ref(""),g=e.ref(!1),d=e.ref(-1),f=e.computed(()=>{const b=o.modelValue?.trim();return b?xt(i.value,b)?"":b:""}),z=e.computed(()=>{const b=(o.modelValue??"").trim(),$=(J,P,X,re)=>({kind:J,key:P,label:X,value:re,selected:(re??"")===b}),M=u.value.trim();if(!M){const J=[$("clear","__clear__",o.placeholder)];f.value&&J.push($("unknown","__unknown__",`${f.value}(未知)`,f.value));for(const P of i.value)J.push($("font",P.family,Bt(P),P.family));return J}const L=so(i.value,M).map(J=>$("font",J.family,Bt(J),J.family));if(!L.length){const J=V(M);L.push($("free","__free__",`使用「${J}」`,J))}return L});function V(b){const $=Fe(b);return i.value.find(L=>L.label&&Fe(L.label)===$)?.family??b}function N(b){const $=b?.trim();return $?xt(i.value,$)?.label??$:""}const p=e.computed(()=>g.value&&d.value>=0?`${c}-${d.value}`:void 0);function S(){const b=(o.modelValue??"").trim();return z.value.findIndex($=>($.value??"")===b)}function O(){g.value||(g.value=!0,u.value="",d.value=S())}function oe(){g.value=!0}function ee(){g.value=!0,u.value=m.value,d.value=z.value.length?0:-1}function Z(b){if(!g.value){O();return}const $=z.value.length-1;$<0||(d.value=Math.min(Math.max(d.value+b,0),$),y())}function y(){e.nextTick(()=>{r.value?.children[d.value]?.scrollIntoView?.({block:"nearest"})})}function U(b){const $=window.innerHeight;for(let M=b.parentElement;M&&M!==document.body;M=M.parentElement){const L=getComputedStyle(M).overflowY;if(L==="auto"||L==="scroll"||L==="hidden"||L==="clip"){const J=M.getBoundingClientRect();return{top:Math.max(0,J.top),bottom:Math.min($,J.bottom)}}}return{top:0,bottom:$}}async function Y(){await e.nextTick();const b=a.value,$=r.value;if(!b||!$)return;const M=b.getBoundingClientRect(),L=U(b);s.value=h.resolveOverlayPlacement({triggerTop:M.top,triggerBottom:M.bottom,overlayHeight:$.getBoundingClientRect().height,boundaryTop:L.top,boundaryBottom:L.bottom})}e.watch([g,()=>z.value.length],()=>{g.value&&Y()});function q(){if(!g.value)return;const b=z.value[d.value];if(b){E(b);return}const $=u.value.trim();if($){const M=V($);E({value:M})}}function E(b){m.value=N(b.value),u.value="",g.value=!1,d.value=-1,n("update:model-value",b.value)}function T(){g.value=!1,u.value="",d.value=-1,m.value=N(o.modelValue)}return e.watch(()=>o.modelValue,b=>{m.value=N(b)}),(b,$)=>(e.openBlock(),e.createElementBlock("div",cn,[e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:a,"onUpdate:modelValue":$[0]||($[0]=M=>m.value=M),class:"pd-input font-select-input",type:"text",role:"combobox","aria-autocomplete":"list",autocomplete:"off",placeholder:t.placeholder,disabled:t.disabled,"aria-expanded":g.value,"aria-controls":c,"aria-activedescendant":p.value,onFocus:O,onClick:oe,onInput:ee,onKeydown:[$[1]||($[1]=e.withKeys(e.withModifiers(M=>Z(1),["prevent"]),["down"])),$[2]||($[2]=e.withKeys(e.withModifiers(M=>Z(-1),["prevent"]),["up"])),e.withKeys(e.withModifiers(q,["prevent"]),["enter"]),e.withKeys(e.withModifiers(T,["prevent"]),["esc"])],onBlur:T},null,40,un),[[e.vModelText,m.value]]),g.value?(e.openBlock(),e.createElementBlock("ul",{key:0,id:c,ref_key:"listRef",ref:r,class:e.normalizeClass(["font-select-list",{"is-up":s.value==="up"}]),role:"listbox"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,(M,L)=>(e.openBlock(),e.createElementBlock("li",{id:`${c}-${L}`,key:M.key,class:e.normalizeClass(["font-select-option",{"is-active":L===d.value,"is-muted":M.kind==="unknown"||M.kind==="free"}]),role:"option","aria-selected":M.selected,onMousedown:e.withModifiers(J=>E(M),["prevent"])},e.toDisplayString(M.label),43,mn))),128))],2)):e.createCommentVNode("",!0)]))}}),kt=pe(pn,[["__scopeId","data-v-68640be3"]]),vn={class:"pd-stepper"},fn=["disabled"],gn=["value","placeholder","min","max","step","disabled"],hn=["disabled"],bn=e.defineComponent({__name:"StepperInput",props:{modelValue:{},min:{},max:{},step:{default:1},placeholder:{},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>{const V=String(o.step),N=V.indexOf(".");return N===-1?0:V.length-N-1});function c(V){return Number.isFinite(V)?Number(V.toFixed(i.value)):0}const r=e.computed(()=>{const V=o.modelValue;if(!(V==null||!Number.isFinite(V)))return c(V)}),a=e.ref(r.value===void 0?"":String(r.value));e.watch(r,V=>{a.value=V===void 0?"":String(V)});const s=e.computed(()=>r.value!==void 0?r.value:o.min!==void 0?o.min:0),m=e.computed(()=>o.min!==void 0&&s.value<=o.min),u=e.computed(()=>o.max!==void 0&&s.value>=o.max);function g(V){let N=c(V);return o.min!==void 0&&N<o.min&&(N=o.min),o.max!==void 0&&N>o.max&&(N=o.max),N}function d(V){if(V<0&&m.value||V>0&&u.value)return;const N=g(s.value+V*o.step);a.value=String(N),n("update:modelValue",N)}function f(V){a.value=V.target.value}function z(){const V=a.value.trim();if(V===""){r.value!==void 0&&(a.value=String(r.value));return}const N=Number(V);if(!Number.isFinite(N)){a.value=r.value===void 0?"":String(r.value);return}const p=g(N);a.value=String(p),p!==r.value&&n("update:modelValue",p)}return(V,N)=>(e.openBlock(),e.createElementBlock("div",vn,[e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-minus",disabled:m.value||t.disabled,title:"减小","aria-label":"减小",onClick:N[0]||(N[0]=p=>d(-1))},"−",8,fn),e.createElementVNode("input",{type:"number",class:"pd-input pd-step-input",value:a.value,placeholder:t.placeholder,min:t.min,max:t.max,step:t.step,disabled:t.disabled,onInput:f,onChange:z,onBlur:z,onKeydown:N[1]||(N[1]=e.withKeys(e.withModifiers(p=>p.target.blur(),["prevent"]),["enter"]))},null,40,gn),e.createElementVNode("button",{type:"button",class:"pd-step-btn pd-step-plus",disabled:u.value||t.disabled,title:"增大","aria-label":"增大",onClick:N[2]||(N[2]=p=>d(1))},"+",8,hn)]))}}),de=pe(bn,[["__scopeId","data-v-627f09cb"]]),En=["aria-expanded","title"],yn={class:"picker-preview"},kn={class:"picker-heading"},Vn=["disabled"],Nn={class:"preset-color-grid"},wn=["title","aria-label","onClick"],Cn=e.defineComponent({inheritAttrs:!1,__name:"PresetColorPicker",props:{modelValue:{},clearable:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(!1),c=e.ref(),r=e.ref(),a=e.ref(),s=e.ref({}),m=e.ref(0),u=e.ref(0),g=e.ref(0),d=e.ref("#000000"),f=e.ref(!1),z=e.computed(()=>o.modelValue||"#000000"),V=e.computed(()=>o.modelValue?{background:o.modelValue}:{background:"transparent"}),N=e.computed(()=>re(v(m.value,u.value,g.value))),p=e.computed({get:()=>Math.round(m.value),set:G=>Z(x(G),u.value,g.value)});e.watch(()=>o.modelValue,G=>{if(!G){d.value="";return}ee(G)},{immediate:!0});function S(G){d.value=G.toUpperCase(),ee(G),n("update:modelValue",G)}function O(){o.clearable&&n("update:modelValue","")}function oe(G){const D=G.target.value.trim();if(!D){o.clearable&&n("update:modelValue","");return}P(D)&&(ee(D),n("update:modelValue",X(D)))}function ee(G){const C=P(G);if(!C)return;const D=le(C.r,C.g,C.b);m.value=D.h,u.value=D.s,g.value=D.v,d.value=X(G).toUpperCase()}function Z(G,C,D){m.value=x(G),u.value=K(C),g.value=K(D),d.value=N.value.toUpperCase(),n("update:modelValue",N.value)}function y(G){G.currentTarget.setPointerCapture(G.pointerId),f.value=!0,q(G)}function U(G){f.value&&q(G)}function Y(G){f.value=!1;const C=G.currentTarget;C.hasPointerCapture(G.pointerId)&&C.releasePointerCapture(G.pointerId)}function q(G){const C=a.value;if(!C)return;const D=C.getBoundingClientRect(),j=K((G.clientX-D.left)/D.width),_=K(1-(G.clientY-D.top)/D.height);Z(m.value,j,_)}function E(G){const C=G.shiftKey?.1:.02;let D=!0;G.key==="ArrowLeft"?Z(m.value,u.value-C,g.value):G.key==="ArrowRight"?Z(m.value,u.value+C,g.value):G.key==="ArrowUp"?Z(m.value,u.value,g.value+C):G.key==="ArrowDown"?Z(m.value,u.value,g.value-C):D=!1,D&&G.preventDefault()}function T(){i.value?$():b()}async function b(){const G=c.value;if(!G)return;o.modelValue&&ee(z.value),i.value=!0,await e.nextTick();const C=G.getBoundingClientRect(),D=190,j=r.value?.offsetHeight??216,_=8,ae=Math.min(C.left,window.innerWidth-D-_),ge=C.bottom+6,A=ge+j>window.innerHeight-_?Math.max(_,C.top-j-6):ge;s.value={left:`${Math.max(_,ae)}px`,top:`${A}px`}}function $(){i.value=!1}function M(G){const C=G.target;c.value?.contains(C)||r.value?.contains(C)||$()}function L(){i.value&&$()}function J(G){G.key==="Escape"&&i.value&&$()}function P(G){const C=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(G.trim());if(!C)return null;const D=C[1],j=D.length===3?D.split("").map(_=>_+_).join(""):D;return{r:Number.parseInt(j.slice(0,2),16),g:Number.parseInt(j.slice(2,4),16),b:Number.parseInt(j.slice(4,6),16)}}function X(G){const C=P(G);return C?re(C):"#000000"}function re({r:G,g:C,b:D}){return`#${[G,C,D].map(j=>Math.round(K(j/255)*255).toString(16).padStart(2,"0")).join("")}`}function le(G,C,D){const j=G/255,_=C/255,ae=D/255,ge=Math.max(j,_,ae),A=Math.min(j,_,ae),B=ge-A;let F=0;return B!==0&&(ge===j?F=(_-ae)/B%6:ge===_?F=(ae-j)/B+2:F=(j-_)/B+4,F*=60,F<0&&(F+=360)),{h:F,s:ge===0?0:B/ge,v:ge}}function v(G,C,D){const j=D*C,_=(G%360+360)%360/60,ae=j*(1-Math.abs(_%2-1)),[ge,A,B]=_<1?[j,ae,0]:_<2?[ae,j,0]:_<3?[0,j,ae]:_<4?[0,ae,j]:_<5?[ae,0,j]:[j,0,ae],F=D-j;return{r:(ge+F)*255,g:(A+F)*255,b:(B+F)*255}}function x(G){return((Number.isFinite(G)?G:0)%360+360)%360}function K(G){return Math.min(1,Math.max(0,Number.isFinite(G)?G:0))}return e.onMounted(()=>{document.addEventListener("pointerdown",M,!0),window.addEventListener("scroll",L,!0),window.addEventListener("resize",L),document.addEventListener("keydown",J)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",M,!0),window.removeEventListener("scroll",L,!0),window.removeEventListener("resize",L),document.removeEventListener("keydown",J)}),(G,C)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("button",e.mergeProps({ref_key:"triggerRef",ref:c},G.$attrs,{type:"button",class:"preset-color-trigger","aria-expanded":i.value,"aria-haspopup":"dialog",title:t.modelValue||"自动",onClick:T}),[e.createElementVNode("span",{class:"preset-color-swatch",style:e.normalizeStyle(V.value)},null,4)],16,En),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[i.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panelRef",ref:r,class:"preset-color-panel",role:"dialog","aria-label":"颜色选择",style:e.normalizeStyle(s.value),onPointerdown:C[2]||(C[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",yn,[e.createElementVNode("span",{class:e.normalizeClass(["picker-current",{"is-empty":!t.modelValue}]),style:e.normalizeStyle(t.modelValue?{background:N.value}:void 0)},null,6),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[0]||(C[0]=D=>d.value=D),class:"picker-hex",type:"text",maxlength:"7",spellcheck:"false","aria-label":"颜色值",onInput:oe},null,544),[[e.vModelText,d.value]])]),e.createElementVNode("div",{ref_key:"areaRef",ref:a,class:"picker-area",style:e.normalizeStyle({"--picker-hue":`${Math.round(m.value)}deg`}),"aria-label":"自定义颜色",tabindex:"0",onPointerdown:y,onPointermove:U,onPointerup:Y,onPointercancel:Y,onKeydown:E},[e.createElementVNode("span",{class:"picker-handle",style:e.normalizeStyle({left:`${u.value*100}%`,top:`${(1-g.value)*100}%`,background:N.value})},null,4)],36),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[1]||(C[1]=D=>p.value=D),class:"picker-hue",type:"range",min:"0",max:"360",step:"1","aria-label":"色相"},null,512),[[e.vModelText,p.value,void 0,{number:!0}]]),e.createElementVNode("div",kn,[C[4]||(C[4]=e.createElementVNode("span",null,"常用颜色",-1)),t.clearable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"picker-clear",disabled:!t.modelValue,title:"清除选中的颜色",onClick:O},[...C[3]||(C[3]=[e.createElementVNode("svg",{viewBox:"0 0 16 16",width:"12",height:"12","aria-hidden":"true"},[e.createElementVNode("path",{d:"M3 3l10 10M13 3L3 13",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round",fill:"none"})],-1),e.createTextVNode(" 清除 ",-1)])],8,Vn)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Nn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.PRESET_COLORS),D=>(e.openBlock(),e.createElementBlock("button",{key:D,type:"button",class:e.normalizeClass(["preset-color-item",{active:!!t.modelValue&&D.toLowerCase()===t.modelValue.toLowerCase()}]),style:e.normalizeStyle({background:D}),title:D,"aria-label":D,onClick:j=>S(D)},null,14,wn))),128))])],36)):e.createCommentVNode("",!0)]))],64))}}),Ne=pe(Cn,[["__scopeId","data-v-4ff2cd97"]]),Sn={class:"format-toolbar"},xn={class:"tb-ou ft-group"},Bn=["disabled","data-tip"],$n={class:"tb-ou ft-group"},Dn={class:"ft-font"},Tn={class:"ft-size","data-test":"font-size"},Mn={class:"tb-ou ft-group"},zn=["disabled","data-tip"],An=["disabled","data-tip"],Pn=["disabled","data-tip"],Rn={class:"tb-ou ft-group"},Ln=["title"],In={class:"ft-glyph"},Un={class:"tb-ou ft-group"},Fn={class:"ft-align-panel","data-test":"align-panel"},On={class:"ft-align-row"},Hn={class:"ft-align-row"},Wn={class:"tb-ou ft-group"},Gn={class:"ft-border-panel","data-test":"border-panel"},qn={class:"ft-border-grid"},Kn=["disabled","data-tip"],jn={class:"ft-style-row"},Yn=["data-test","data-tip","onClick"],Xn={class:"ft-border-style-row"},Zn={class:"ft-line-width"},Jn={class:"ft-border-style-row"},Qn=e.defineComponent({__name:"FormatToolbar",props:{format:{},painter:{}},setup(t){const l=Et()??Ft(),o=yt(l),n=t,i=e.computed(()=>n.format.values.value),c=e.computed(()=>!n.format.fontEditable.value),r=e.computed(()=>c.value||n.format.context.value==="cells"),a=e.computed(()=>n.format.context.value==="none"),s=e.computed(()=>n.painter?.active.value===!0),m=e.computed(()=>!n.painter||!s.value&&(n.format.context.value==="none"||n.format.context.value==="cells"||!n.painter.capturable.value)),u=e.computed(()=>s.value?"退出格式刷(Esc)":n.painter?n.format.context.value==="cells"?"格式刷(表格单元格暂不支持)":n.format.context.value==="none"?"格式刷(需选中元素)":n.painter.capturable.value?"格式刷:单击刷一次,双击连续刷":"格式刷(请仅选中一个源元素)":"格式刷");function g(){const J=n.painter;if(J){if(J.active.value){J.cancel();return}J.capture(!1)}}function d(){n.painter?.capture(!0)}const f=e.computed(()=>i.value.fontFamily===Ce?void 0:i.value.fontFamily),z=e.computed(()=>i.value.fontFamily===Ce?"混合":"默认"),V=e.computed(()=>i.value.fontSize===Ce?void 0:i.value.fontSize),N=e.computed(()=>i.value.fontSize===Ce?"混合":"默认"),p=e.computed(()=>i.value.bold===!0),S=e.computed(()=>i.value.color===Ce?void 0:i.value.color),O=e.computed(()=>i.value.backgroundColor===Ce?void 0:i.value.backgroundColor),oe=e.computed(()=>i.value.textAlign==="center"?ue.TextAlignCenter:i.value.textAlign==="right"?ue.TextAlignEnd:i.value.textAlign==="justify"?ue.TextAlignJustify:ue.TextAlignStart),ee=e.computed(()=>c.value?"对齐(需选中文本元素或单元格)":"对齐"),Z=e.computed(()=>a.value?"边框(需选中元素)":"边框");function y(J){return c.value?`${J}(需选中文本元素)`:n.format.context.value==="cells"?`${J}(单元格不支持)`:J}const U=e.ref("solid"),Y=e.ref(.75),q=e.ref("#333333"),E=e.computed(()=>n.format.context.value==="cells"),T=[{key:"solid",label:"实线",preview:"2px solid currentColor"},{key:"dashed",label:"虚线",preview:"2px dashed currentColor"},{key:"dotted",label:"点线",preview:"2px dotted currentColor"},{key:"double",label:"双线",preview:"3px double currentColor"}];function b(){return{width:Y.value,style:U.value,color:q.value}}function $(J){E.value?n.format.applyCellBorderPreset(J,b()):n.format.applyElementBorder(J==="none"?"none":"all",b())}function M(J){return(E.value?n.format.cellEdges.value:n.format.elementEdges.value)?.[J]===!0}function L(J){E.value?n.format.toggleCellEdge(J,b()):n.format.toggleElementEdge(J,b())}return(J,P)=>(e.openBlock(),e.createElementBlock("div",Sn,[(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("painter"),disabled:!e.unref(l).moved("painter")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",xn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:s.value}]),"data-test":"format-painter",disabled:m.value,"data-tip":u.value,onClick:g,onDblclick:d},[e.createVNode(e.unref(ue.Paintbrush),{size:15})],42,Bn)])),[[e.unref(o),{id:"painter",order:2,label:"格式刷"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("font"),disabled:!e.unref(l).moved("font")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",$n,[e.createElementVNode("div",Dn,[e.createVNode(kt,{"model-value":f.value,placeholder:z.value,disabled:c.value,"onUpdate:modelValue":P[0]||(P[0]=X=>t.format.applyStyle({fontFamily:X}))},null,8,["model-value","placeholder","disabled"])]),e.createElementVNode("div",Tn,[e.createVNode(de,{"model-value":V.value,min:5,max:72,placeholder:N.value,disabled:c.value,"onUpdate:modelValue":P[1]||(P[1]=X=>t.format.applyStyle({fontSize:X}))},null,8,["model-value","placeholder","disabled"])])])),[[e.unref(o),{id:"font",order:9,label:"字体与字号"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("style"),disabled:!e.unref(l).moved("style")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Mn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:p.value}]),"data-test":"bold",disabled:c.value,"data-tip":c.value?"加粗(需选中文本元素或单元格)":"加粗",onClick:P[2]||(P[2]=X=>t.format.toggleBold())},[e.createVNode(e.unref(ue.Bold),{size:15})],10,zn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.underline===!0}]),"data-test":"underline",disabled:r.value,"data-tip":y("下划线"),onClick:P[3]||(P[3]=X=>t.format.toggleUnderline())},[e.createVNode(e.unref(ue.Underline),{size:15})],10,An),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-btn",{on:i.value.strike===!0}]),"data-test":"strike",disabled:r.value,"data-tip":y("删除线"),onClick:P[4]||(P[4]=X=>t.format.toggleStrike())},[e.createVNode(e.unref(ue.Strikethrough),{size:15})],10,Pn)])),[[e.unref(o),{id:"style",order:8,label:"文字样式"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("color"),disabled:!e.unref(l).moved("color")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Rn,[e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:c.value}]),title:`字体颜色${c.value?"(需选中或混选文本元素)":""}`},[e.createVNode(Ne,{"model-value":S.value,"onUpdate:modelValue":P[5]||(P[5]=X=>t.format.applyStyle({color:X}))},null,8,["model-value"]),P[24]||(P[24]=e.createElementVNode("span",{class:"ft-glyph"},"A",-1))],10,Ln),e.createElementVNode("span",{class:e.normalizeClass(["ft-color-btn",{dim:a.value}]),title:"背景色"},[e.createVNode(Ne,{"model-value":O.value,"onUpdate:modelValue":P[6]||(P[6]=X=>t.format.applyStyle({backgroundColor:X}))},null,8,["model-value"]),e.createElementVNode("span",In,[e.createVNode(e.unref(ue.PaintBucket),{size:14})])],2)])),[[e.unref(o),{id:"color",order:6,label:"颜色"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("align"),disabled:!e.unref(l).moved("align")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Un,[e.createVNode(Oe,{"test-id":"align-dd",tip:ee.value,disabled:c.value},{trigger:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(oe.value),{size:15})),P[25]||(P[25]=e.createElementVNode("span",{class:"ft-btn-text"},"对齐",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Fn,[e.createElementVNode("div",On,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="left"}]),"data-test":"align-left","data-tip":"左对齐",onClick:P[7]||(P[7]=X=>t.format.applyStyle({textAlign:"left"}))},[e.createVNode(e.unref(ue.TextAlignStart),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="center"}]),"data-test":"align-center","data-tip":"水平居中",onClick:P[8]||(P[8]=X=>t.format.applyStyle({textAlign:"center"}))},[e.createVNode(e.unref(ue.TextAlignCenter),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="right"}]),"data-test":"align-right","data-tip":"右对齐",onClick:P[9]||(P[9]=X=>t.format.applyStyle({textAlign:"right"}))},[e.createVNode(e.unref(ue.TextAlignEnd),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.textAlign==="justify"}]),"data-test":"align-justify","data-tip":"两端对齐(撑满行宽,含末行)",onClick:P[10]||(P[10]=X=>t.format.applyStyle({textAlign:"justify"}))},[e.createVNode(e.unref(ue.TextAlignJustify),{size:15})],2)]),e.createElementVNode("div",Hn,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="top"}]),"data-test":"valign-top","data-tip":"顶端对齐",onClick:P[11]||(P[11]=X=>t.format.applyStyle({verticalAlign:"top"}))},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="middle"}]),"data-test":"valign-middle","data-tip":"垂直居中",onClick:P[12]||(P[12]=X=>t.format.applyStyle({verticalAlign:"middle"}))},[e.createVNode(e.unref(ue.ChevronsUpDown),{size:15})],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:i.value.verticalAlign==="bottom"}]),"data-test":"valign-bottom","data-tip":"底端对齐",onClick:P[13]||(P[13]=X=>t.format.applyStyle({verticalAlign:"bottom"}))},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:15})],2)])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"align",order:7,label:"对齐"}]])],8,["to","disabled"])),(e.openBlock(),e.createBlock(e.Teleport,{to:e.unref(l).slotEl("border"),disabled:!e.unref(l).moved("border")},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Wn,[e.createVNode(Oe,{"test-id":"border",tip:Z.value,disabled:a.value},{trigger:e.withCtx(()=>[e.createVNode(e.unref(ue.Grid3x3),{size:15}),P[26]||(P[26]=e.createElementVNode("span",{class:"ft-btn-text"},"边框",-1))]),default:e.withCtx(()=>[e.createElementVNode("div",Gn,[e.createElementVNode("div",qn,[e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-none","data-tip":"无边框",onClick:P[14]||(P[14]=X=>$("none"))},[...P[27]||(P[27]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"4",y1:"14",x2:"14",y2:"4"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-all","data-tip":"所有边框",onClick:P[15]||(P[15]=X=>$("all"))},[...P[28]||(P[28]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-outer","data-tip":"外侧边框",onClick:P[16]||(P[16]=X=>$("outer"))},[...P[29]||(P[29]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-solid",x:"2.5",y:"2.5",width:"13",height:"13",fill:"none"})],-1)])]),e.createElementVNode("button",{type:"button",class:"ft-cell-btn","data-test":"preset-inner",disabled:!E.value,"data-tip":E.value?"内部边框":"内部边框(仅表格单元格可用)",onClick:P[17]||(P[17]=X=>$("inner"))},[...P[30]||(P[30]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"9",y1:"3",x2:"9",y2:"15"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"9",x2:"15",y2:"9"})],-1)])],8,Kn),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("top")}]),"data-test":"edge-top","data-tip":"上边框",onClick:P[18]||(P[18]=X=>L("top"))},[...P[31]||(P[31]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"3",x2:"16",y2:"3"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("bottom")}]),"data-test":"edge-bottom","data-tip":"下边框",onClick:P[19]||(P[19]=X=>L("bottom"))},[...P[32]||(P[32]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"2",y1:"15",x2:"16",y2:"15"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("left")}]),"data-test":"edge-left","data-tip":"左边框",onClick:P[20]||(P[20]=X=>L("left"))},[...P[33]||(P[33]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"3",y1:"2",x2:"3",y2:"16"})],-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ft-cell-btn",{on:M("right")}]),"data-test":"edge-right","data-tip":"右边框",onClick:P[21]||(P[21]=X=>L("right"))},[...P[34]||(P[34]=[e.createElementVNode("svg",{viewBox:"0 0 18 18",width:"18",height:"18","aria-hidden":"true"},[e.createElementVNode("rect",{class:"g-faint",x:"2.5",y:"2.5",width:"13",height:"13"}),e.createElementVNode("line",{class:"g-solid",x1:"15",y1:"2",x2:"15",y2:"16"})],-1)])],2)]),e.createElementVNode("div",jn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(T,X=>e.createElementVNode("button",{key:X.key,type:"button",class:e.normalizeClass(["ft-style-btn",{on:U.value===X.key}]),"data-test":`style-${X.key}`,"data-tip":X.label,onClick:re=>U.value=X.key},[e.createElementVNode("span",{class:"ft-style-line",style:e.normalizeStyle({borderTop:X.preview})},null,4)],10,Yn)),64))]),e.createElementVNode("div",Xn,[P[35]||(P[35]=e.createElementVNode("span",{class:"ft-edge-label"},"粗细",-1)),e.createElementVNode("div",Zn,[e.createVNode(de,{modelValue:Y.value,"onUpdate:modelValue":P[22]||(P[22]=X=>Y.value=X),min:.25,max:5,step:.25},null,8,["modelValue"])])]),e.createElementVNode("div",Jn,[P[36]||(P[36]=e.createElementVNode("span",{class:"ft-edge-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:q.value,"onUpdate:modelValue":P[23]||(P[23]=X=>q.value=X),clearable:!1},null,8,["modelValue"])])])]),_:1},8,["tip","disabled"])])),[[e.unref(o),{id:"border",order:5,label:"边框"}]])],8,["to","disabled"]))]))}}),_n=pe(Qn,[["__scopeId","data-v-721695e4"]]),el={class:"layer-panel"},tl=["onClick"],ol={class:"layer-icon"},nl={class:"layer-name"},ll={key:0,class:"layer-zone"},al={class:"layer-zindex"},il={key:0,class:"layer-actions"},rl={key:1,class:"layer-actions"},sl=e.defineComponent({__name:"LayerPanel",props:{elements:{},selectedIds:{}},emits:["select","move-layer","group","ungroup"],setup(t){const l=t,o=e.computed(()=>l.elements.filter(u=>l.selectedIds.has(u.id))),n=e.computed(()=>o.value.length>=2),i=e.computed(()=>o.value.some(u=>!!u.options.groupId)),c=e.computed(()=>[...l.elements].sort((u,g)=>(g.options.zIndex??0)-(u.options.zIndex??0))),r={text:"T",longText:"¶",table:"⊞",image:"🖼",barcode:"≡",qrcode:"▣",hline:"—",vline:"|",rect:"□",oval:"○",html:"<>"};function a(u){return r[u.printElementType.type]||"?"}function s(u){return u.options.title||u.printElementType.title||u.printElementType.type}function m(u){return u.zone==="header"?"页眉":u.zone==="footer"?"页脚":""}return(u,g)=>(e.openBlock(),e.createElementBlock("div",el,[g[6]||(g[6]=e.createElementVNode("div",{class:"panel-title"},"图层",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.id,class:e.normalizeClass(["layer-item",{active:t.selectedIds.has(d.id)}]),onClick:f=>u.$emit("select",d.id,f.ctrlKey||f.metaKey)},[e.createElementVNode("span",ol,e.toDisplayString(a(d)),1),e.createElementVNode("span",nl,e.toDisplayString(s(d)),1),m(d)?(e.openBlock(),e.createElementBlock("span",ll,e.toDisplayString(m(d)),1)):e.createCommentVNode("",!0),e.createElementVNode("span",al,"z:"+e.toDisplayString(d.options.zIndex??0),1)],10,tl))),128)),c.value.length>0?(e.openBlock(),e.createElementBlock("div",il,[e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[0]||(g[0]=d=>u.$emit("move-layer","top")),title:"置顶"},[e.createVNode(e.unref(ue.ArrowUpToLine),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[1]||(g[1]=d=>u.$emit("move-layer","up")),title:"上移"},[e.createVNode(e.unref(ue.ArrowUp),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[2]||(g[2]=d=>u.$emit("move-layer","down")),title:"下移"},[e.createVNode(e.unref(ue.ArrowDown),{size:14})]),e.createElementVNode("button",{type:"button",class:"pd-button small",onClick:g[3]||(g[3]=d=>u.$emit("move-layer","bottom")),title:"置底"},[e.createVNode(e.unref(ue.ArrowDownToLine),{size:14})])])):e.createCommentVNode("",!0),n.value||i.value?(e.openBlock(),e.createElementBlock("div",rl,[n.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"pd-button small",onClick:g[4]||(g[4]=d=>u.$emit("group")),title:"组合 (Ctrl+G)"},[e.createVNode(e.unref(ue.Group),{size:14})])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"pd-button small",onClick:g[5]||(g[5]=d=>u.$emit("ungroup")),title:"取消组合 (Ctrl+Shift+G)"},[e.createVNode(e.unref(ue.Ungroup),{size:14})])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),dl=pe(sl,[["__scopeId","data-v-567d273e"]]),cl={class:"field-tree-panel"},ul={class:"tree-container"},ml=["onClick"],pl={class:"expand-icon"},vl={class:"node-icon"},fl=["title"],gl=["title","onDragstart"],hl={class:"node-meta"},bl={class:"node-label"},El={class:"node-key"},yl={key:0,class:"pd-empty"},kl=e.defineComponent({__name:"FieldTreePanel",props:{fields:{}},emits:["field-drag"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(""),c=e.ref(new Set),r=e.computed(()=>!!i.value.trim()),a=e.computed(()=>h.filterGroups(h.groupFields(o.fields),i.value));function s(u){const g=new Set(c.value);g.has(u)?g.delete(u):g.add(u),c.value=g}function m(u,g){u.dataTransfer?.setData("fieldData",JSON.stringify({fieldKey:g.fieldKey,fieldLabel:g.fieldLabel})),u.dataTransfer&&(u.dataTransfer.effectAllowed="copy"),n("field-drag",g)}return(u,g)=>(e.openBlock(),e.createElementBlock("div",cl,[g[2]||(g[2]=e.createElementVNode("div",{class:"panel-title"},"业务字段",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[0]||(g[0]=d=>i.value=d),class:"pd-input search-input",type:"search",placeholder:"搜索字段...","aria-label":"搜索字段"},null,512),[[e.vModelText,i.value]]),e.createElementVNode("div",ul,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.key||"_top"},[d.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["field-group-header",{"is-list":d.isList}]),onClick:f=>s(d.key)},[e.createElementVNode("span",pl,e.toDisplayString(c.value.has(d.key)&&!r.value?"▶":"▼"),1),e.createElementVNode("span",vl,e.toDisplayString(d.isList?"📋":"📁"),1),e.createElementVNode("span",{class:"group-label",title:d.label},e.toDisplayString(d.label),9,fl)],10,ml)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.fields,f=>(e.openBlock(),e.createElementBlock("div",{key:f.fieldKey,class:"field-row",draggable:"true",title:`${f.fieldLabel} (${f.fieldKey})`,style:e.normalizeStyle({paddingLeft:(d.key?22:8)+"px"}),onDragstart:z=>m(z,f)},[g[1]||(g[1]=e.createElementVNode("span",{class:"node-icon"},"📄",-1)),e.createElementVNode("span",hl,[e.createElementVNode("span",bl,e.toDisplayString(f.fieldLabel),1),e.createElementVNode("span",El,"("+e.toDisplayString(f.fieldKey)+")",1)])],44,gl))),128))],512),[[e.vShow,!d.key||r.value||!c.value.has(d.key)]])],64))),128))]),a.value.length===0?(e.openBlock(),e.createElementBlock("p",yl,"暂无字段")):e.createCommentVNode("",!0)]))}}),Vl=pe(kl,[["__scopeId","data-v-6a0d8392"]]),Nl={key:0,class:"left-collapsed"},wl={class:"left-head"},Cl={class:"pd-tabs left-tabs"},Sl={class:"pd-tab-bar",role:"tablist"},xl={class:"pd-tab-pane",role:"tabpanel"},Bl=["onDragstart"],$l={class:"material-icon"},Dl={class:"material-label"},Tl={class:"pd-tab-pane",role:"tabpanel"},Ml={class:"pd-tab-pane",role:"tabpanel"},zl=e.defineComponent({__name:"LeftPanel",props:{fields:{},elements:{},selectedIds:{},collapsed:{type:Boolean}},emits:["select","move-layer","group","ungroup","toggle-visible","toggle-locked","field-drag","toggle-collapse"],setup(t,{emit:l}){const o=l,n=e.ref("elements"),i=[{type:"text",label:"文本",icon:"T"},{type:"barcode",label:"条形码",icon:"▍▍"},{type:"qrcode",label:"二维码",icon:"▦"},{type:"image",label:"图片",icon:"▧"},{type:"table",label:"表格",icon:"⊞"},{type:"longText",label:"长文",icon:"¶"},{type:"hline",label:"横线",icon:"―"},{type:"vline",label:"竖线",icon:"│"},{type:"rect",label:"矩形",icon:"▭"},{type:"oval",label:"椭圆",icon:"◯"},{type:"html",label:"HTML",icon:"<>"}];function c(s,m){s.dataTransfer?.setData("elementType",m)}function r(s){o("field-drag",s)}function a(s){n.value=s,o("toggle-collapse")}return(s,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["left-panel",{collapsed:t.collapsed}])},[t.collapsed?(e.openBlock(),e.createElementBlock("div",Nl,[e.createElementVNode("button",{class:"lc-btn",title:"展开素材台",onClick:m[0]||(m[0]=u=>a(n.value))},"»"),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="elements"}]),title:"元素",onClick:m[1]||(m[1]=u=>a("elements"))},"▦",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="fields"}]),title:"字段",onClick:m[2]||(m[2]=u=>a("fields"))},"⊛",2),e.createElementVNode("button",{class:e.normalizeClass(["lc-btn",{on:n.value==="layers"}]),title:"图层",onClick:m[3]||(m[3]=u=>a("layers"))},"≡",2)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",wl,[m[14]||(m[14]=e.createElementVNode("span",{class:"left-title"},"素材台",-1)),e.createElementVNode("button",{class:"collapse-btn",title:"收起素材台",onClick:m[4]||(m[4]=u=>s.$emit("toggle-collapse"))},"«")]),e.createElementVNode("div",Cl,[e.createElementVNode("div",Sl,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="elements"}]),onClick:m[5]||(m[5]=u=>n.value="elements")},"元素",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="fields"}]),onClick:m[6]||(m[6]=u=>n.value="fields")},"字段",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["pd-tab",{active:n.value==="layers"}]),onClick:m[7]||(m[7]=u=>n.value="layers")},"图层",2)]),e.withDirectives(e.createElementVNode("div",xl,[m[15]||(m[15]=e.createElementVNode("div",{class:"panel-title"},"拖拽元素到画布",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,u=>e.createElementVNode("div",{key:u.type,class:"material-card",draggable:"true",onDragstart:g=>c(g,u.type)},[e.createElementVNode("span",$l,e.toDisplayString(u.icon),1),e.createElementVNode("span",Dl,e.toDisplayString(u.label),1)],40,Bl)),64))],512),[[e.vShow,n.value==="elements"]]),e.withDirectives(e.createElementVNode("div",Tl,[e.createVNode(Vl,{fields:t.fields,onFieldDrag:r},null,8,["fields"])],512),[[e.vShow,n.value==="fields"]]),e.withDirectives(e.createElementVNode("div",Ml,[e.createVNode(dl,{elements:t.elements,"selected-ids":t.selectedIds,onSelect:m[8]||(m[8]=(u,g)=>s.$emit("select",u,g)),onMoveLayer:m[9]||(m[9]=u=>s.$emit("move-layer",u)),onGroup:m[10]||(m[10]=u=>s.$emit("group")),onUngroup:m[11]||(m[11]=u=>s.$emit("ungroup")),onToggleVisible:m[12]||(m[12]=u=>s.$emit("toggle-visible",u)),onToggleLocked:m[13]||(m[13]=u=>s.$emit("toggle-locked",u))},null,8,["elements","selected-ids"])],512),[[e.vShow,n.value==="layers"]])])],64))],2))}}),Al=pe(zl,[["__scopeId","data-v-4501eea7"]]);function Pl(t,l){const o=e.ref(!1),n=e.ref(null);let i=0,c=0,r=0,a=0,s=!1;function m(V){if(l.disabled||V.button!==0)return;const N=V.target;if(!(N instanceof Element)||N.classList.contains("resize-handle"))return;o.value=!0,s=V.altKey,i=V.clientX,c=V.clientY;const p=t.value;p&&(r=parseFloat(p.style.left)||0,a=parseFloat(p.style.top)||0,n.value={left:r,top:a,width:parseFloat(p.style.width)||0,height:parseFloat(p.style.height)||0},l.onStart?.({altKey:s}),document.addEventListener("mousemove",g),document.addEventListener("mouseup",d),V.preventDefault())}function u(V){const N=l.getScale?.()??1;let p=r+(V.clientX-i)/N,S=a+(V.clientY-c)/N;if(l.axis==="x"&&(S=a),l.axis==="y"&&(p=r),l.onAdsorb){const O=t.value;if(O){const oe=parseFloat(O.style.width)||0,ee=parseFloat(O.style.height)||0,Z=l.onAdsorb({left:p,top:S,width:oe,height:ee});p=Z.left,S=Z.top}}return{left:p,top:S}}function g(V){const N=u(V);n.value&&(n.value.left=N.left,n.value.top=N.top),l.onDrag(N)}function d(V){o.value=!1;const N=u(V);l.onDragEnd?.(N,{altKey:s}),l.onStop?.(),n.value=null,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",d)}function f(){const V=t.value;V&&V.removeEventListener("mousedown",m),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",d)}function z(){f();const V=t.value;V&&V.addEventListener("mousedown",m)}return{isDragging:o,dragPreview:n,setup:z,cleanup:f}}function Rl(t){const l=[];return t.getAttribute("data-fit")==="shrink"&&l.push(t),t.querySelectorAll('[data-fit="shrink"]').forEach(o=>l.push(o)),l}function Ll(t){t.querySelectorAll("[data-fit-size]").forEach(l=>{if(l.getAttribute("data-fit")==="shrink")return;l.removeAttribute("data-fit-size");const o=l.getAttribute("data-fit-base");o?l.style.fontSize=`${o}pt`:l.style.removeProperty("font-size")})}function Vt(t,l){const o=()=>{const n=t.value;n&&(Rl(n).forEach(Me.fitTextNode),Ll(n))};e.watchEffect(()=>{l(),e.nextTick(o)},{flush:"post"}),e.onMounted(()=>{e.nextTick(o)})}const Il=["data-fit","data-fit-base","data-fit-min"],Ul=e.defineComponent({__name:"TextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),c=e.computed(()=>h.resolveElementTextFit("text",l.element.options)),r=e.computed(()=>l.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),s=e.computed(()=>{const u=l.element.options,g=c.value==="autoHeight";return{fontSize:r.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:u.fontFamily||"inherit",color:u.color||"#333",backgroundColor:u.backgroundColor||"transparent",textAlign:u.textAlign||"left",...u.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:u.lineHeight?u.lineHeight+"pt":"normal",letterSpacing:u.letterSpacing?u.letterSpacing+"pt":"normal",textDecoration:u.textDecoration||"none",padding:`${u.contentPaddingTop||0}pt ${u.contentPaddingRight||0}pt ${u.contentPaddingBottom||0}pt ${u.contentPaddingLeft||0}pt`,width:"100%",height:g?"auto":"100%",boxSizing:"border-box",overflow:g?"visible":"hidden",...u.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...u.verticalAlign?{display:"flex",...u.textAlign==="justify"?{flexDirection:"column",justifyContent:o[u.verticalAlign]??"flex-start"}:{alignItems:o[u.verticalAlign]??"flex-start",justifyContent:n[u.textAlign||"left"]??"flex-start"}}:{}}}),m=e.computed(()=>l.designMode?l.element.options.testData?l.element.options.testData:l.element.options.formatter||"文本":h.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[c.value,r.value,a.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.letterSpacing,l.element.options.lineHeight,m.value]),(u,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-text",style:e.normalizeStyle(s.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(r.value),"data-fit-min":String(a.value)},e.toDisplayString(m.value),13,Il))}}),Fl={class:"print-image"},Ol=["src"],Hl={key:1,class:"image-placeholder"},Wl=e.defineComponent({__name:"ImageElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const r=l.element.options.src||"";return r?r.includes("{")?l.designMode?h.evaluateTemplate(r,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(r,l.data?.[0]||{}):r:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const c=e.computed(()=>({objectFit:l.element.options.fit||"contain",...h.cropStyleDeclarations(l.element.options.fit,l.element.options.fitScale,l.element.options.objectPosition)}));return(r,a)=>(e.openBlock(),e.createElementBlock("div",Fl,[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(c.value),onError:i},null,44,Ol)):(e.openBlock(),e.createElementBlock("div",Hl,"图片"))]))}}),Gl=pe(Wl,[["__scopeId","data-v-73dc7258"]]),ql=["data-fit","data-fit-base","data-fit-min"],Kl=e.defineComponent({__name:"LongTextElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o={top:"flex-start",middle:"center",bottom:"flex-end"},n={left:"flex-start",center:"center",right:"flex-end"},i=e.ref(null),c=e.computed(()=>h.resolveElementTextFit("longText",l.element.options)),r=e.computed(()=>l.element.options.fontSize||12),a=e.computed(()=>h.resolveShrinkMinFontSize(l.element.options.shrinkMinFontSize)),s=e.computed(()=>{const u=l.element.options,g=c.value==="autoHeight";return{fontSize:r.value+"pt",fontWeight:u.fontWeight||"normal",fontFamily:u.fontFamily||"inherit",color:u.color||"#333",backgroundColor:u.backgroundColor||"transparent",textAlign:u.textAlign||"left",...u.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:u.lineHeight?u.lineHeight+"pt":"1.5",letterSpacing:u.letterSpacing?u.letterSpacing+"pt":"normal",textIndent:u.longTextIndent?u.longTextIndent+"em":"0",width:"100%",height:g?"auto":"100%",overflow:g?"visible":"hidden",wordBreak:"break-all",boxSizing:"border-box",...u.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{},...u.verticalAlign?{display:"flex",...u.textAlign==="justify"?{flexDirection:"column",justifyContent:o[u.verticalAlign]??"flex-start"}:{alignItems:o[u.verticalAlign]??"flex-start",justifyContent:n[u.textAlign||"left"]??"flex-start"}}:{}}}),m=e.computed(()=>l.designMode?l.element.options.formatter?l.element.options.formatter:"长文本内容":h.resolveTextBinding(l.element.options,l.data));return Vt(i,()=>[c.value,r.value,a.value,l.element.options.width,l.element.options.height,l.element.options.wordWrap,l.element.options.lineHeight,m.value]),(u,g)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:i,class:"print-longtext",style:e.normalizeStyle(s.value),"data-fit":c.value==="shrink"?"shrink":void 0,"data-fit-base":String(r.value),"data-fit-min":String(a.value)},e.toDisplayString(m.value),13,ql))}}),jl=["title"],Yl=["title","onClick"],Xl=e.defineComponent({__name:"TableContextMenu",props:{visible:{type:Boolean},x:{},y:{},canDeleteRow:{type:Boolean},canDeleteCol:{type:Boolean},mergeDisabledReason:{},canSplit:{type:Boolean},currentRowType:{},rowTypeDisabledReason:{type:Function}},emits:["action"],setup(t,{emit:l}){const o=[{value:"header",label:"标题行"},{value:"data",label:"数据行"},{value:"subtotal",label:"小计行"},{value:"summary",label:"汇总行"}],n=l;function i(c,r){n("action",c,r)}return(c,r)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[t.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"table-ctx-menu",style:e.normalizeStyle({left:t.x+"px",top:t.y+"px"}),onMousedown:r[8]||(r[8]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{class:"menu-item",onClick:r[0]||(r[0]=a=>i("insert-row-above"))},"在上方插入行"),e.createElementVNode("div",{class:"menu-item",onClick:r[1]||(r[1]=a=>i("insert-row-below"))},"在下方插入行"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteRow}]),onClick:r[2]||(r[2]=a=>t.canDeleteRow&&i("delete-row"))}," 删除行 ",2),r[9]||(r[9]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:"menu-item",onClick:r[3]||(r[3]=a=>i("insert-col-left"))},"在左侧插入列"),e.createElementVNode("div",{class:"menu-item",onClick:r[4]||(r[4]=a=>i("insert-col-right"))},"在右侧插入列"),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canDeleteCol}]),onClick:r[5]||(r[5]=a=>t.canDeleteCol&&i("delete-col"))}," 删除列 ",2),r[10]||(r[10]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!!t.mergeDisabledReason}]),title:t.mergeDisabledReason||"",onClick:r[6]||(r[6]=a=>!t.mergeDisabledReason&&i("merge"))}," 合并单元格 ",10,jl),e.createElementVNode("div",{class:e.normalizeClass(["menu-item",{disabled:!t.canSplit}]),onClick:r[7]||(r[7]=a=>t.canSplit&&i("split"))}," 拆分单元格 ",2),r[11]||(r[11]=e.createElementVNode("div",{class:"menu-divider"},null,-1)),r[12]||(r[12]=e.createElementVNode("div",{class:"menu-group-title"},"行类型",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(o,a=>e.createElementVNode("div",{key:a.value,class:e.normalizeClass(["menu-item",{disabled:!!t.rowTypeDisabledReason(a.value),active:t.currentRowType===a.value}]),title:t.rowTypeDisabledReason(a.value)||"",onClick:s=>!t.rowTypeDisabledReason(a.value)&&i("set-row-type",a.value)},e.toDisplayString(a.label),11,Yl)),64))],36)):e.createCommentVNode("",!0)]))}}),Zl=pe(Xl,[["__scopeId","data-v-fbbccae0"]]),Jl={class:"cell-barcode"},Ql=["preserveAspectRatio"],_l=["src"],ea={key:1,class:"cell-barcode-fallback"},ta=e.defineComponent({__name:"CellBarcode",props:{cellType:{},value:{},barcodeType:{},qrCodeLevel:{},qrQuietZone:{},showText:{type:Boolean},fit:{},maxWidth:{},maxHeight:{},printerDpi:{},targetWidthMm:{},targetHeightMm:{},barWidth:{},barFontSize:{}},setup(t){const l=t,o=e.ref(null),n=e.ref(!1),i=e.ref(""),c=e.ref(null),r={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},a=e.computed(()=>r[l.fit||"contain"]??"xMidYMid meet"),s=e.computed(()=>c.value?{width:c.value.width,height:c.value.height}:{maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}),m=e.computed(()=>({width:"100%",height:"100%",objectFit:l.fit||"contain",maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));function u(){if(n.value=!1,c.value=null,!o.value)return;const z=h.barcodeUnitsPerModule(l.barWidth);try{Lt(o.value,l.value,{format:l.barcodeType||"CODE128",width:z,height:h.BARCODE_BAR_HEIGHT_MODULES*z,displayValue:l.showText!==!1,fontSize:(l.barFontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*z,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*z,marginRight:h.BARCODE_QUIET_ZONE_MODULES*z,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*z})}catch{return}n.value=!0;const V=g(o.value),N=V?h.resolveBarcodeSize({unitWidth:V.width/z,unitHeight:V.height/z,boxWidthMm:h.barcodeAvailableBoxMm(l.targetWidthMm,l.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(l.targetHeightMm,l.maxHeight),dpi:l.printerDpi,barWidth:l.barWidth}):null;c.value=N?{width:`${N.widthMm}mm`,height:`${N.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function g(z){const V=(z.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return V.length!==4||V.some(N=>!Number.isFinite(N))?null:{width:V[2],height:V[3]}}function d(){if(!l.value){i.value="";return}try{const z=Me.browserCodeRenderer.render(l.value,"qrcode",{qrCodeLevel:String(l.qrCodeLevel||"M"),qrQuietZone:typeof l.qrQuietZone=="number"?l.qrQuietZone:void 0});i.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(z)}`}catch{i.value=""}}function f(){l.cellType==="barcode"?u():d()}return e.onMounted(f),e.watch(()=>[l.cellType,l.value,l.barcodeType,l.qrCodeLevel,l.qrQuietZone,l.showText,l.printerDpi,l.targetWidthMm,l.targetHeightMm,l.barWidth,l.barFontSize,l.maxWidth,l.maxHeight],f),(z,V)=>(e.openBlock(),e.createElementBlock("div",Jl,[e.withDirectives((e.openBlock(),e.createElementBlock("svg",{ref_key:"barcodeSvg",ref:o,preserveAspectRatio:a.value,style:e.normalizeStyle(s.value)},null,12,Ql)),[[e.vShow,t.cellType==="barcode"&&n.value]]),t.cellType==="qrcode"&&i.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:i.value,alt:"qrcode",style:e.normalizeStyle(m.value)},null,12,_l)):e.createCommentVNode("",!0),!n.value&&t.cellType==="barcode"?(e.openBlock(),e.createElementBlock("span",ea,e.toDisplayString(t.value||"条码"),1)):e.createCommentVNode("",!0)]))}}),oa=pe(ta,[["__scopeId","data-v-f7222c41"]]),na=["src"],la={key:1,class:"image-placeholder"},aa=e.defineComponent({__name:"CellImage",props:{value:{},fit:{},objectPosition:{},fitScale:{},maxWidth:{},maxHeight:{},designMode:{type:Boolean},data:{},boxHeightMm:{}},setup(t){const l=t,o=e.computed(()=>{const a=l.value||"";return a?a.includes("{")?l.designMode?h.evaluateTemplate(a,h.DEFAULT_DEMO_DATA):h.evaluateTemplate(a,l.data?.[0]||{}):a:""}),n=e.ref(!1);function i(){n.value=!0}e.watch(o,()=>{n.value=!1});const c=e.computed(()=>l.boxHeightMm?{height:`${l.boxHeightMm}mm`}:{}),r=e.computed(()=>({...l.boxHeightMm?{width:"100%",height:"100%"}:{},objectFit:l.fit||"contain",...h.cropStyleDeclarations(l.fit,l.fitScale,l.objectPosition),maxWidth:l.maxWidth?`${l.maxWidth}mm`:"100%",maxHeight:l.maxHeight?`${l.maxHeight}mm`:"100%"}));return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:"cell-image",style:e.normalizeStyle(c.value)},[o.value&&!n.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,style:e.normalizeStyle(r.value),onError:i},null,44,na)):(e.openBlock(),e.createElementBlock("div",la,"图片"))],4))}}),ia=pe(aa,[["__scopeId","data-v-2821a676"]]),ra=["rowspan","colspan","onMousedown","onMouseenter","onDblclick","onContextmenu"],sa=["data-fit","data-fit-base","data-fit-min","data-fit-mm"],da={key:0,class:"data-placeholder"},ca={key:3,class:"data-placeholder"},ua={key:0,class:"col-resize-layer"},ma=["aria-label","onMousedown"],pa={key:1,class:"row-badges"},Ye=3.7795275591,va=.1,fa=e.defineComponent({__name:"TableElement",props:{element:{},designMode:{type:Boolean},isSelected:{type:Boolean},showTableGhostBorder:{type:Boolean},scale:{},data:{}},emits:["dblclick-cell"],setup(t,{emit:l}){const o={header:"题",data:"数",subtotal:"小",summary:"汇"},n=t,i=l,c=e.inject(He,{tableSelection:e.ref(null),setTableSelection:()=>{},recordHistory:()=>{},maxTableWidth:e.ref(1/0)}),r=e.computed(()=>n.element.options.tableRows??[]),a=e.computed(()=>n.element.options.tableColWidths??[]),s=e.computed(()=>n.element.options.tableDefaultFontSize??10),m=e.computed(()=>n.element.options.tableDefaultColor??"#333333"),u=e.computed(()=>{const I=c.tableSelection.value;return I&&I.elementId===n.element.id?I:null});function g(I){let H=0;for(let k=0;k<I;k++)H+=r.value[k].height;return H}const d=e.ref(null),f=e.ref(null),z=e.ref([]);function V(){if(!n.designMode)return;const I=d.value;if(!I)return;const H=I.offsetHeight;if(H<=0)return;const k=n.element.options,w=H/Ye;Math.abs(w-(k.height??0))>va&&(k.height=Math.round(w*100)/100);const R=I.offsetTop;z.value=Array.from(I.rows).map(ce=>({top:(ce.offsetTop-R)/Ye,height:ce.offsetHeight/Ye}))}function N(I){return z.value[I]?.top??g(I)}function p(I){return z.value[I]?.height??r.value[I]?.height??0}e.watch(()=>[n.element.options,n.designMode],()=>V(),{deep:!0,flush:"post"}),e.onMounted(()=>{V(),document.fonts?.ready.then(()=>V())});const S=e.computed(()=>{const I=n.element.options.dataSource;if(I&&Array.isArray(h.DEFAULT_DEMO_DATA[I]))return h.DEFAULT_DEMO_DATA[I];for(const H of Object.values(h.DEFAULT_DEMO_DATA))if(Array.isArray(H))return H}),O=e.computed(()=>{if(n.data)return n.data});function oe(I){return I.cellType==="barcode"||I.cellType==="qrcode"}function ee(I,H){return oe(H)?h.resolveBarcodeDesignValue(H.formatter,S.value):H.formatter||""}function Z(I,H){const k=n.element.options,w={designMode:n.designMode,showGhostBorder:n.showTableGhostBorder};return{fontFamily:H.fontFamily||"inherit",textAlign:H.align??"left",...H.align==="justify"?{textAlignLast:"justify"}:{},verticalAlign:H.valign??"middle",fontSize:(H.fontSize??s.value)+"pt",fontWeight:H.fontWeight??"normal",color:H.color??m.value,backgroundColor:H.backgroundColor??"transparent",borderTop:h.resolveCellBorderCss(H.borders?.top,w),borderRight:h.resolveCellBorderCss(H.borders?.right,w),borderBottom:h.resolveCellBorderCss(H.borders?.bottom,w),borderLeft:h.resolveCellBorderCss(H.borders?.left,w),padding:(H.padding??k.tableDefaultPadding??1)+"mm",whiteSpace:H.wordWrap??!0?"normal":"nowrap",overflow:H.wordWrap??!0?"visible":"hidden"}}function y(I){return h.resolveCellTextFit(I)}function U(I){return y(I)!=="autoHeight"}function Y(I){return I.fontSize??s.value}function q(I,H){return h.cellFitCapMm(r.value,I,H,n.element.options.tableDefaultPadding??1)}function E(I,H){return h.cellFitWidthMm(a.value,I,H,n.element.options.tableDefaultPadding??1)}function T(I,H){return{maxHeight:q(H,I)+"mm",overflow:"hidden",...I.wordWrap===!1?{whiteSpace:"nowrap",textOverflow:"ellipsis"}:{}}}Vt(f,()=>[n.designMode,n.data?.length,a.value.join(","),s.value,n.element.options.tableDefaultPadding,r.value.map(I=>`${I.height}:${I.cells.map(H=>`${H.formatter??""}|${H.fontSize??""}|${H.wordWrap??""}|${H.textFit??""}|${H.colspan??1}`).join("~")}`).join(",")]);function b(I,H){const k=u.value;return{"cell-selected":!!k&&I>=k.r1&&I<=k.r2&&H>=k.c1&&H<=k.c2,"row-data-bg":r.value[I].type==="data"}}const $=e.ref(null);function M(I,H){const k=h.normalizeSelection(r.value,I,H);c.setTableSelection({elementId:n.element.id,...k})}function L(I,H,k){!n.designMode||!n.isSelected||(k.stopPropagation(),k.shiftKey&&u.value?M({r:u.value.r1,c:u.value.c1},{r:I,c:H}):($.value={r:I,c:H},M({r:I,c:H},{r:I,c:H})),window.addEventListener("mouseup",()=>{$.value=null},{once:!0}))}function J(I,H){$.value&&M($.value,{r:I,c:H})}function P(I,H){n.designMode&&i("dblclick-cell",n.element.id,I,H)}const X=e.reactive({visible:!1,x:0,y:0}),re=e.inject(Je,null);function le(I,H,k){if(!n.designMode)return;!n.isSelected&&re&&(re.value=new Set([n.element.id]));const w=u.value;w&&I>=w.r1&&I<=w.r2&&H>=w.c1&&H<=w.c2||M({r:I,c:H},{r:I,c:H}),X.x=k.clientX,X.y=k.clientY,X.visible=!0,window.removeEventListener("mouseup",v),window.addEventListener("mouseup",v)}function v(I){I.target?.closest?.(".table-ctx-menu")||(X.visible=!1,window.removeEventListener("mouseup",v))}const x=e.computed(()=>{const I=u.value;return I?h.canMergeReason(r.value,I):"未选择单元格"}),K=e.computed(()=>{const I=u.value;if(!I)return!1;for(let H=I.r1;H<=I.r2;H++)for(let k=I.c1;k<=I.c2;k++){const w=r.value[H].cells[k];if(!w.merged&&((w.rowspan??1)>1||(w.colspan??1)>1))return!0}return!1});function G(I){const H=u.value;if(!H)return"未选择单元格";if(H.r1!==H.r2)return"行类型仅支持单行设置";const k=JSON.parse(JSON.stringify(r.value));return h.setRowType(k,H.r1,I)}function C(){h.syncTableElementSize(n.element.options)}function D(I,H){const k=c.maxTableWidth.value,w=I.reduce((R,ce)=>R+ce,0)+I[H];return w>k?`插入后表格总宽 ${Math.round(w*10)/10}mm 超过打印范围宽度 ${k}mm,请先缩小列宽`:null}function j(I,H){const k=u.value;if(!k)return;X.visible=!1;const w=n.element.options,R=w.tableRows,ce=w.tableColWidths;let fe=null;switch(I){case"insert-row-above":h.insertRow(R,k.r1,"above");break;case"insert-row-below":h.insertRow(R,k.r2,"below");break;case"delete-row":fe=h.deleteRow(R,k.r1);break;case"insert-col-left":fe=D(ce,k.c1),fe||h.insertCol(R,ce,k.c1,"left");break;case"insert-col-right":fe=D(ce,k.c2),fe||h.insertCol(R,ce,k.c2,"right");break;case"delete-col":fe=h.deleteCol(R,ce,k.c1);break;case"merge":h.mergeCells(R,k);break;case"split":h.splitCells(R,k);break;case"set-row-type":fe=h.setRowType(R,k.r1,H);break}if(fe){alert(fe);return}c.setTableSelection(null),C(),c.recordHistory()}const _=e.computed(()=>n.designMode&&!!n.isSelected&&!n.element.options.locked&&a.value.length>=1),ae=e.computed(()=>Array.from({length:a.value.length},(I,H)=>H+1));function ge(I){return a.value.slice(0,I).reduce((H,k)=>H+k,0)}const A=e.ref(null);let B=0,F=0;function ne(I,H){_.value&&H.button===0&&(A.value=I,B=H.clientX,F=a.value[I-1],document.addEventListener("mousemove",ie),document.addEventListener("mouseup",ve))}function ie(I){if(A.value===null)return;const H=n.scale||1,k=(I.clientX-B)/(H*Ye),w=A.value-1,R=n.element.options.tableColWidths;R[w]=h.clampResizedColumnWidth(R,w,F+k,c.maxTableWidth.value),C()}function ve(){document.removeEventListener("mousemove",ie),document.removeEventListener("mouseup",ve),A.value!==null&&(A.value=null,C(),c.recordHistory())}return e.onUnmounted(()=>{document.removeEventListener("mousemove",ie),document.removeEventListener("mouseup",ve)}),(I,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:f,class:e.normalizeClass(["print-table",{"design-mode":t.designMode}]),onContextmenu:H[0]||(H[0]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("table",{ref_key:"tableRef",ref:d,style:e.normalizeStyle({fontSize:s.value+"pt",color:m.value})},[e.createElementVNode("colgroup",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(k,w)=>(e.openBlock(),e.createElementBlock("col",{key:w,style:e.normalizeStyle({width:k+"mm"})},null,4))),128))]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,w)=>(e.openBlock(),e.createElementBlock("tr",{key:k.id,style:e.normalizeStyle({height:k.height+"mm"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.cells,(R,ce)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:R.id},[R.merged?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("td",{key:0,rowspan:R.rowspan||1,colspan:R.colspan||1,class:e.normalizeClass(b(w,ce)),style:e.normalizeStyle(Z(k,R)),onMousedown:e.withModifiers(fe=>L(w,ce,fe),["left"]),onMouseenter:fe=>J(w,ce),onDblclick:e.withModifiers(fe=>P(w,ce),["stop"]),onContextmenu:e.withModifiers(fe=>le(w,ce,fe),["prevent","stop"])},[oe(R)?(e.openBlock(),e.createBlock(oa,{key:0,"cell-type":R.cellType,value:ee(k,R),"barcode-type":R.barcodeType,"qr-code-level":R.qrCodeLevel,"qr-quiet-zone":R.qrQuietZone,"show-text":R.showBarcodeText!==!1,fit:R.fit,"max-width":R.maxWidth,"max-height":R.maxHeight,"printer-dpi":R.printerDpi,"target-width-mm":E(ce,R),"target-height-mm":q(w,R),"bar-width":R.barWidth,"bar-font-size":R.barFontSize},null,8,["cell-type","value","barcode-type","qr-code-level","qr-quiet-zone","show-text","fit","max-width","max-height","printer-dpi","target-width-mm","target-height-mm","bar-width","bar-font-size"])):R.cellType==="image"?(e.openBlock(),e.createBlock(ia,{key:1,value:R.formatter||"",fit:R.fit,"object-position":R.objectPosition,"fit-scale":R.fitScale,"max-width":R.maxWidth,"max-height":R.maxHeight,"box-height-mm":e.unref(h.cellImageBoxMm)(R.fit,q(w,R)),"design-mode":t.designMode,data:O.value},null,8,["value","fit","object-position","fit-scale","max-width","max-height","box-height-mm","design-mode","data"])):U(R)?(e.openBlock(),e.createElementBlock("div",{key:2,class:"cell-fit",style:e.normalizeStyle(T(R,w)),"data-fit":y(R)==="shrink"?"shrink":void 0,"data-fit-base":String(Y(R)),"data-fit-min":String(e.unref(h.resolveShrinkMinFontSize)(R.shrinkMinFontSize)),"data-fit-mm":q(w,R)},[k.type==="data"?(e.openBlock(),e.createElementBlock("span",da,e.toDisplayString(ee(k,R)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(ee(k,R)),1)],64))],12,sa)):k.type==="data"?(e.openBlock(),e.createElementBlock("span",ca,e.toDisplayString(ee(k,R)),1)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createTextVNode(e.toDisplayString(ee(k,R)),1)],64))],46,ra))],64))),128))],4))),128))])],4),_.value?(e.openBlock(),e.createElementBlock("div",ua,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ae.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k,class:e.normalizeClass(["col-resize-handle",{dragging:A.value===k}]),role:"separator","aria-label":"列宽手柄"+k,style:e.normalizeStyle({left:ge(k)+"mm"}),onMousedown:e.withModifiers(w=>ne(k,w),["stop","prevent"])},null,46,ma))),128))])):e.createCommentVNode("",!0),t.designMode&&t.isSelected?(e.openBlock(),e.createElementBlock("div",pa,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,w)=>(e.openBlock(),e.createElementBlock("span",{key:k.id,class:"row-badge",style:e.normalizeStyle({top:N(w)+"mm",height:p(w)+"mm"})},e.toDisplayString(o[k.type]),5))),128))])):e.createCommentVNode("",!0),e.createVNode(Zl,{visible:X.visible,x:X.x,y:X.y,"can-delete-row":r.value.length>1,"can-delete-col":a.value.length>1,"merge-disabled-reason":x.value,"can-split":K.value,"current-row-type":u.value?r.value[u.value.r1]?.type??null:null,"row-type-disabled-reason":G,onAction:j},null,8,["visible","x","y","can-delete-row","can-delete-col","merge-disabled-reason","can-split","current-row-type"])],34))}}),ga=pe(fa,[["__scopeId","data-v-f086e160"]]),Dt=e.defineComponent({__name:"LineElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="hline"),n=e.computed(()=>{const i=l.element.options,c=(i.borderWidth||.75)+"pt",r=i.borderStyle||"solid",a=i.borderColor||"#333";return o.value?{width:"100%",height:"0",borderTop:`${c} ${r} ${a}`,boxSizing:"border-box"}:{width:"0",height:"100%",borderLeft:`${c} ${r} ${a}`,boxSizing:"border-box"}});return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-line",style:e.normalizeStyle(n.value)},null,4))}}),Tt=e.defineComponent({__name:"ShapeElement",props:{element:{}},setup(t){const l=t,o=e.computed(()=>l.element.printElementType.type==="oval"),n=e.computed(()=>{const i=l.element.options;return{width:"100%",height:"100%",borderWidth:(i.borderWidth||1)+"pt",borderStyle:i.borderStyle||"solid",borderColor:i.borderColor||"#333",backgroundColor:i.backgroundColor||"transparent",borderRadius:o.value?"50%":"0",boxSizing:"border-box"}});return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"print-shape",style:e.normalizeStyle(n.value)},null,4))}}),ha={class:"print-barcode",ref:"containerRef"},ba=["preserveAspectRatio"],Ea=e.defineComponent({__name:"BarcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(null),n=e.ref(null),i={contain:"xMidYMid meet",cover:"xMidYMid slice",fill:"none",none:"xMidYMid meet","scale-down":"xMidYMid meet"},c=e.computed(()=>i[l.element.options.fit||"contain"]??"xMidYMid meet"),r=e.computed(()=>n.value?{width:n.value.width,height:n.value.height}:{maxWidth:"100%",maxHeight:"100%"});function a(){if(!o.value)return;const m=l.element.options,u=(l.designMode?m.testData||m.formatter:h.resolveTextBinding(m,l.data))||"条码",g=h.barcodeUnitsPerModule(m.barWidth);try{Lt(o.value,u,{format:m.barcodeType||"CODE128",width:g,height:h.BARCODE_BAR_HEIGHT_MODULES*g,displayValue:!m.hideTitle,fontSize:(m.fontSize??h.BARCODE_TEXT_FONT_SIZE_MODULES)*g,margin:0,marginLeft:h.BARCODE_QUIET_ZONE_MODULES*g,marginRight:h.BARCODE_QUIET_ZONE_MODULES*g,marginTop:0,marginBottom:h.BARCODE_MARGIN_BOTTOM_MODULES*g})}catch{n.value=null;return}const d=s(o.value),f=d?h.resolveBarcodeSize({unitWidth:d.width/g,unitHeight:d.height/g,boxWidthMm:h.barcodeAvailableBoxMm(m.width,m.maxWidth),boxHeightMm:h.barcodeAvailableBoxMm(m.height,m.maxHeight),dpi:m.printerDpi,barWidth:m.barWidth}):null;n.value=f?{width:`${f.widthMm}mm`,height:`${f.heightMm}mm`}:null,o.value.setAttribute("shape-rendering","crispEdges")}function s(m){const u=(m.getAttribute("viewBox")??"").trim().split(/[\s,]+/).map(Number);return u.length!==4||u.some(g=>!Number.isFinite(g))?null:{width:u[2],height:u[3]}}return e.onMounted(a),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.barcodeType,l.element.options.width,l.element.options.height,l.element.options.barWidth,l.element.options.printerDpi,l.element.options.hideTitle,l.element.options.fontSize,l.element.options.maxWidth,l.element.options.maxHeight],a),(m,u)=>(e.openBlock(),e.createElementBlock("div",ha,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgRef",ref:o,preserveAspectRatio:c.value,style:e.normalizeStyle(r.value)},null,12,ba))],512))}}),ya=pe(Ea,[["__scopeId","data-v-6eb95a40"]]),ka={class:"print-qrcode"},Va=["src"],Na=e.defineComponent({__name:"QrcodeElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.ref(""),n=e.computed(()=>{const c=l.element.options;return{width:"100%",height:"100%",objectFit:c.fit||"contain",maxWidth:c.maxWidth?`${c.maxWidth}mm`:"100%",maxHeight:c.maxHeight?`${c.maxHeight}mm`:"100%"}});function i(){const c=l.element.options,r=(l.designMode?c.testData||c.formatter:h.resolveTextBinding(c,l.data))||"二维码";try{const a=Me.browserCodeRenderer.render(r,"qrcode",{qrCodeLevel:String(c.qrCodeLevel??"M"),qrQuietZone:typeof c.qrQuietZone=="number"?c.qrQuietZone:void 0});o.value=`data:image/svg+xml;charset=utf-8,${encodeURIComponent(a)}`}catch{o.value=""}}return e.onMounted(i),e.watch(()=>[l.element.options.formatter,l.element.options.testData,l.element.options.qrCodeLevel,l.element.options.qrQuietZone],i),(c,r)=>(e.openBlock(),e.createElementBlock("div",ka,[o.value?(e.openBlock(),e.createElementBlock("img",{key:0,src:o.value,alt:"qrcode",style:e.normalizeStyle(n.value)},null,12,Va)):e.createCommentVNode("",!0)]))}}),wa=pe(Na,[["__scopeId","data-v-792ee33c"]]),Ca=["innerHTML"],Sa=e.defineComponent({__name:"HtmlElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{if(l.element.options.formatter){const n=l.data&&l.data.length>0?l.data[0]:{},i=h.evaluateTemplate(l.element.options.formatter,n??{});return i?Xt.sanitize(i):""}return'<div style="background:#e0e0e0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:10pt;color:#999">HTML</div>'});return(n,i)=>(e.openBlock(),e.createElementBlock("div",{class:"print-html",innerHTML:o.value},null,8,Ca))}}),xa=pe(Sa,[["__scopeId","data-v-880bbde5"]]),Ba=e.defineComponent({__name:"PageNumberElement",props:{element:{},data:{},designMode:{type:Boolean}},setup(t){const l=t,o=e.computed(()=>{const i=l.element.options;return{fontSize:(i.fontSize||12)+"pt",fontWeight:i.fontWeight||"normal",fontFamily:i.fontFamily||"inherit",color:i.color||"#333",textAlign:i.textAlign||"left",...i.textAlign==="justify"?{textAlignLast:"justify"}:{},lineHeight:i.lineHeight?i.lineHeight+"pt":"normal",letterSpacing:i.letterSpacing?i.letterSpacing+"pt":"normal"}}),n=e.computed(()=>l.designMode?l.element.options.title||"{pageIndex}/{totalPages}":l.element.options.title||"");return(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"page-number-element",style:e.normalizeStyle(o.value)},e.toDisplayString(n.value),5))}}),$a=pe(Ba,[["__scopeId","data-v-9762b52f"]]),Da={key:0,class:"drag-preview"},Ta={key:1,class:"resize-handles"},Ma=["onMousedown"],za={key:2,class:"selected-indicator"},Aa={class:"position-label"},Pa=e.defineComponent({__name:"BaseElement",props:{element:{},isSelected:{type:Boolean},designMode:{type:Boolean},printData:{},scale:{},allElements:{},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},zone:{},adsorbHandler:{type:Function},clearAdsorbGuides:{type:Function}},emits:["select","update:element","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","clone-element"],setup(t,{emit:l}){const o=t,n=l,i=e.ref(null),c=e.inject(Je,null),r=e.computed(()=>c?.value?c.value.has(o.element.id):o.isSelected??!1),a=e.inject(It,null),s=e.computed(()=>a?.value.has(o.element.id)??!1),m={text:e.markRaw(Ul),image:e.markRaw(Gl),longText:e.markRaw(Kl),table:e.markRaw(ga),hline:e.markRaw(Dt),vline:e.markRaw(Dt),rect:e.markRaw(Tt),oval:e.markRaw(Tt),barcode:e.markRaw(ya),qrcode:e.markRaw(wa),html:e.markRaw(xa),pageNumber:e.markRaw($a)},u=e.computed(()=>m[o.element.printElementType.type]),g=e.computed(()=>o.element.printElementType.type==="table"?{showTableGhostBorder:o.showTableGhostBorder,scale:o.scale}:{}),d=e.computed(()=>{const E=o.element.options,T=h.resolveElementBorder(o.element.printElementType.type,E),b={};if(T?.all&&(b.border=`${T.all.borderWidth} ${T.all.borderStyle} ${T.all.borderColor}`),T)for(const $ of h.ELEMENT_BORDER_SIDES){const M=T.edges[$];M&&(b[`border${$.charAt(0).toUpperCase()}${$.slice(1)}`]=`${M.borderWidth} ${M.borderStyle} ${M.borderColor}`)}return{position:"absolute",left:E.left+"mm",top:E.top+"mm",width:E.width+"mm",height:E.height+"mm",zIndex:E.zIndex||"auto",...b}}),f=e.computed(()=>{const E=o.element.options;return`x:${Math.round(E.left)} y:${Math.round(E.top)} ${Math.round(E.width)}×${Math.round(E.height)}mm`});let z=0,V=0;const N=e.reactive({disabled:!o.designMode||!!o.element.options.locked,getScale:()=>(o.scale||1)*h.mmToPx(1),onDrag:E=>{const T=E.left-z,b=E.top-V;i.value&&(i.value.style.transform=`translate(${T}mm, ${b}mm)`)},onDragEnd:(E,T)=>{if(T.altKey){const M=JSON.parse(JSON.stringify(o.element));M.id=h.generateId(),M.options.left=E.left,M.options.top=E.top,M.options.groupId=void 0,n("clone-element",M,{left:E.left,top:E.top}),i.value&&(i.value.style.transform="");return}const b=E.left-z,$=E.top-V;if(o.element.options.left=E.left,o.element.options.top=E.top,i.value&&(i.value.style.transform=""),o.element.options.groupId&&o.allElements)for(const M of o.allElements)M.id!==o.element.id&&M.options.groupId===o.element.options.groupId&&(M.options.left+=b,M.options.top+=$)},onStart:()=>{z=o.element.options.left,V=o.element.options.top,n("drag-start")},onStop:()=>{o.clearAdsorbGuides?.(),n("drag-stop")},onAdsorb:E=>{let T=E.left,b=E.top;return o.snapToGrid&&(T=Math.round(E.left/5)*5,b=Math.round(E.top/5)*5),o.adsorbHandler?o.adsorbHandler({id:o.element.id,left:T,top:b,width:o.element.options.width,height:o.element.options.height}):{left:T,top:b,lines:[]}}}),{setup:p,cleanup:S,isDragging:O}=Pl(i,N);e.watchEffect(()=>{N.disabled=!o.designMode||!!o.element.options.locked});const oe=e.computed(()=>r.value&&!!o.designMode&&!o.element.options.locked&&o.element.printElementType.type!=="table"),{startResize:ee,cleanup:Z}=h.useResize({minWidth:3.5,minHeight:3.5,getScale:()=>(o.scale||1)*h.mmToPx(1),getRect:()=>({left:o.element.options.left,top:o.element.options.top,width:o.element.options.width,height:o.element.options.height}),onResize:E=>{o.element.options.left=E.left,o.element.options.top=E.top,o.element.options.width=E.width,o.element.options.height=E.height},onStart:()=>{n("drag-start")},onStop:()=>{n("drag-stop")}});function y(E){o.designMode&&E.button===0&&n("select",o.element.id,E.ctrlKey||E.metaKey)}function U(){o.designMode&&n("dblclick-element",o.element.id)}function Y(E,T,b){o.designMode&&n("dblclick-cell",E,T,b)}e.onMounted(()=>{o.designMode&&p()});function q(){S(),Z(),o.clearAdsorbGuides?.()}return e.onUnmounted(()=>{q()}),(E,T)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"elRef",ref:i,class:e.normalizeClass(["print-element",{selected:r.value,previewed:s.value,"design-mode":t.designMode,locked:t.element.options.locked,hidden:t.element.options.visible===!1,"drag-ghost":e.unref(O),[`type-${t.element.printElementType.type}`]:!0,[`zone-${t.zone||"content"}`]:!0}]),style:e.normalizeStyle(d.value),onMousedown:e.withModifiers(y,["stop"]),onDblclick:e.withModifiers(U,["stop"]),onContextmenu:T[0]||(T[0]=e.withModifiers(b=>E.$emit("contextmenu",t.element.id,b),["prevent","stop"]))},[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(u.value),e.mergeProps({element:t.element,data:t.printData,"design-mode":t.designMode,"is-selected":r.value},g.value,{onDblclickCell:Y}),null,16,["element","data","design-mode","is-selected"])),e.unref(O)?(e.openBlock(),e.createElementBlock("div",Da)):e.createCommentVNode("",!0),oe.value?(e.openBlock(),e.createElementBlock("div",Ta,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.RESIZE_POINTS),b=>(e.openBlock(),e.createElementBlock("div",{key:b,class:e.normalizeClass(["resize-handle",`handle-${b}`]),onMousedown:e.withModifiers($=>e.unref(ee)(b,$),["stop"])},null,42,Ma))),128))])):e.createCommentVNode("",!0),r.value&&t.designMode?(e.openBlock(),e.createElementBlock("div",za,[e.createElementVNode("div",Aa,e.toDisplayString(f.value),1)])):e.createCommentVNode("",!0)],38))}}),ut=pe(Pa,[["__scopeId","data-v-5a7482f4"]]);function Ra(t={}){const l=e.ref([]),o=e.ref({width:0,height:0});function n(r,a,s){return h.computeAdsorb(r,a,s,t)}function i(r,a,s){l.value=r,o.value={width:a,height:s}}function c(){l.value=[]}return{check:n,renderLines:i,clearLines:c,guideLines:l,paperSize:o}}function La(t){const{check:l,renderLines:o,clearLines:n,guideLines:i,paperSize:c}=Ra(t.config??{adsorbMin:1,adsorbLineMin:2,showAdsorbLine:!0});function r(s){const m=t.getElements().filter(d=>d.id!==s.id).map(d=>({id:d.id,left:d.options.left,top:d.options.top,width:d.options.width,height:d.options.height})),u=l(s,m,t.getGuides?.()),g=t.getPaperSize();return o(u.lines,g.width,g.height),u}function a(){n()}return{requestAdsorb:r,clearGuides:a,guideLines:i,paperSize:c}}const Ia=["src"],Ua=["width","height","viewBox"],Fa=["x","y","font-size","fill","transform"],Oa={key:0,class:"zone-label"},Ha={key:0,class:"zone-height-tip"},Wa={key:0,class:"zone-label"},Ga={key:0,class:"zone-height-tip"},qa=["onMousedown","onDblclick"],Ka=e.defineComponent({__name:"CanvasPaper",props:{templateData:{},runtimeElements:{},designMode:{type:Boolean},printData:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},guides:{}},emits:["select","drag-start","drag-stop","dblclick-element","dblclick-cell","contextmenu","zone-height-change","zone-height-commit","guide-move","guide-remove","clone-element"],setup(t,{expose:l,emit:o}){const n=t,i=o,c=e.ref(null),r=e.computed(()=>h.getPaperDimensions(n.templateData).width),a=e.computed(()=>h.getPaperDimensions(n.templateData).height),s=e.computed(()=>n.templateData.designBackground),m=e.ref(!1);e.watch(()=>s.value?.src,()=>{m.value=!1});const u=e.computed(()=>{const C=s.value?.rotation;return C===90||C===180||C===270?C:0}),g=e.computed(()=>{const C=u.value,D=C===90||C===270,j=D?a.value:r.value,_=D?r.value:a.value,ae={width:j+"mm",height:_+"mm",left:(r.value-j)/2+"mm",top:(a.value-_)/2+"mm"};return C!==0&&(ae.transform=`rotate(${C}deg)`),ae});function d(){m.value=!0,console.warn("[print-designer] 设计背景图加载失败:",s.value?.src)}const f=e.computed(()=>`${8/(n.scale||1)}px`),z=e.computed(()=>{const C=n.scale||1,D=h.mmToPx(r.value)*C,j=h.mmToPx(a.value)*C;return{width:D+"px",height:j+"px",position:"relative"}}),V=e.computed(()=>{const C=n.templateData.margins,D=n.templateData.header.height,j=n.templateData.footer.height,_=r.value-C.left-C.right;return{header:{left:C.left,top:C.top,width:_,height:D},content:{left:C.left,top:C.top+D,width:_,height:a.value-C.top-C.bottom-D-j},footer:{left:C.left,top:a.value-C.bottom-j,width:_,height:j}}});function N(C){return{position:"absolute",left:C.left+"mm",top:C.top+"mm",width:C.width+"mm",height:C.height+"mm"}}const p=e.computed(()=>{const C={header:[],footer:[],content:[]};for(const D of n.runtimeElements)D.zone==="header"?C.header.push(D):D.zone==="footer"?C.footer.push(D):C.content.push(D);return C}),S=e.computed(()=>p.value.header),O=e.computed(()=>p.value.footer),oe=e.computed(()=>p.value.content);let ee="content";const{requestAdsorb:Z,clearGuides:y,guideLines:U,paperSize:Y}=La({getElements:()=>p.value[ee],getPaperSize:()=>{const C=V.value[ee];return{width:C.width,height:C.height}},getGuides:()=>{const C=[],D=[];for(const j of n.guides??[])j.type==="vertical"?C.push(j.position):D.push(j.position);return{vertical:C,horizontal:D}}});function q(C){ee=n.runtimeElements.find(_=>_.id===C.id)?.zone||"content";const j=Z(C);return(j.left!==C.left||j.top!==C.top)&&P(j.left+C.width/2,j.top+C.height/2),j}function E(C,D){if(C.button!==0)return;const j=D.position,_=C.clientX,ae=C.clientY,ge=n.scale??1,A=25.4/96,B=ne=>{const ie=(D.type==="vertical"?ne.clientX-_:ne.clientY-ae)/ge*A,ve=D.type==="vertical"?r.value:a.value,I=Math.min(Math.max(j+ie,0),ve);i("guide-move",D.id,I)},F=()=>{window.removeEventListener("mousemove",B),window.removeEventListener("mouseup",F)};window.addEventListener("mousemove",B),window.addEventListener("mouseup",F)}const T=e.computed(()=>({width:r.value+"mm",minHeight:a.value+"mm",background:n.templateData.pageBackground||"var(--pd-paper, #fff)",boxShadow:"var(--pd-shadow-paper, 0 1px 2px rgba(0,0,0,.12), 0 8px 24px rgba(0,0,0,.08))",overflow:"hidden",position:"relative",transform:n.scale?`scale(${n.scale})`:void 0,transformOrigin:"0 0"})),b=e.computed(()=>{const C=n.templateData.margins;return{padding:`${C.top}mm ${C.right}mm ${C.bottom}mm ${C.left}mm`,position:"relative",boxSizing:"border-box",minHeight:a.value+"mm"}}),$=e.computed(()=>({backgroundImage:`url("data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><path d="M0 .5H20M.5 0V20" fill="none" stroke="rgba(0,0,0,0.08)" stroke-width="1" stroke-dasharray="4 4"/></svg>')}")`,backgroundSize:"5mm 5mm",backgroundPosition:"0 0"}));let M=0,L=null;const J=e.ref(null);function P(C,D){M+=1,J.value={left:C,top:D,key:M},L&&clearTimeout(L),L=setTimeout(()=>{J.value=null},300)}const X=e.computed(()=>be.resolveWatermarkLayout(n.templateData.watermark,n.printData,{width:r.value,height:a.value})),re=e.ref(null);function le(C,D){D.button===0&&(K(),re.value={zone:C,startY:D.clientY,startH:n.templateData[C].height},window.addEventListener("mousemove",v),window.addEventListener("mouseup",x))}function v(C){if(!re.value)return;const{zone:D,startY:j,startH:_}=re.value,ge=(C.clientY-j)/(n.scale||1)*25.4/96,A=D==="header"?ge:-ge,B=Math.min(100,a.value-n.templateData.margins.top-n.templateData.margins.bottom-(D==="header"?n.templateData.footer.height:n.templateData.header.height)-10),F=Math.min(B,Math.max(0,Math.round((_+A)*10)/10));i("zone-height-change",D,F)}function x(){if(!re.value)return;const C=re.value.zone;re.value=null,window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",x),i("zone-height-commit",C)}function K(){window.removeEventListener("mousemove",v),window.removeEventListener("mouseup",x),re.value=null}e.onUnmounted(()=>{K(),L&&clearTimeout(L)});function G(C,D){i("select",C,D)}return l({contentRef:c}),(C,D)=>(e.openBlock(),e.createElementBlock("div",{class:"paper-wrapper",style:e.normalizeStyle(z.value)},[e.createElementVNode("div",{class:"hiprint-printPaper",style:e.normalizeStyle(T.value)},[t.designMode&&s.value?.src&&!m.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"design-background",style:e.normalizeStyle(g.value)},[e.createElementVNode("img",{src:s.value.src,draggable:"false",alt:"",onError:d},null,40,Ia)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"hiprint-printPaper-content",ref_key:"contentRef",ref:c,style:e.normalizeStyle(b.value)},[t.showGrid&&t.designMode?(e.openBlock(),e.createElementBlock("div",{key:0,class:"grid-bg",style:e.normalizeStyle($.value)},null,4)):e.createCommentVNode("",!0),J.value?(e.openBlock(),e.createElementBlock("div",{key:J.value.key,class:"snap-indicator",style:e.normalizeStyle({left:J.value.left+"mm",top:J.value.top+"mm"})},null,4)):e.createCommentVNode("",!0),X.value?(e.openBlock(),e.createElementBlock("div",{key:2,class:"watermark-layer",style:e.normalizeStyle({opacity:String(X.value.opacity)})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value.tiles,(j,_)=>(e.openBlock(),e.createElementBlock("svg",{key:_,class:"watermark-tile",width:j.widthMm+"mm",height:j.heightMm+"mm",viewBox:`0 0 ${X.value.tileWidthPx} ${X.value.tileHeightPx}`,style:e.normalizeStyle({left:j.leftMm+"mm",top:j.topMm+"mm"}),xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("text",{x:X.value.tileWidthPx/2,y:X.value.tileHeightPx/2,"font-size":X.value.fontSizePx,fill:X.value.color,"text-anchor":"middle","dominant-baseline":"middle",transform:`rotate(${X.value.rotate},${X.value.tileWidthPx/2},${X.value.tileHeightPx/2})`},e.toDisplayString(X.value.text),9,Fa)],12,Ua))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-header",{"design-mode":t.designMode}]),style:e.normalizeStyle(N(V.value.header))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Oa,"页眉")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":S.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"header","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[0]||(D[0]=_=>C.$emit("drag-start")),onDragStop:D[1]||(D[1]=_=>C.$emit("drag-stop")),onDblclickElement:D[2]||(D[2]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[3]||(D[3]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[4]||(D[4]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-bottom",onMousedown:D[5]||(D[5]=e.withModifiers(j=>le("header",j),["prevent","stop"]))},[re.value?.zone==="header"?(e.openBlock(),e.createElementBlock("div",Ha,e.toDisplayString(t.templateData.header.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-content",{"design-mode":t.designMode}]),style:e.normalizeStyle(N(V.value.content))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(oe.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":oe.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"content","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[6]||(D[6]=_=>C.$emit("drag-start")),onDragStop:D[7]||(D[7]=_=>C.$emit("drag-stop")),onDblclickElement:D[8]||(D[8]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[9]||(D[9]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[10]||(D[10]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128))],6),e.createElementVNode("div",{class:e.normalizeClass(["zone-layer zone-footer",{"design-mode":t.designMode}]),style:e.normalizeStyle(N(V.value.footer))},[t.designMode?(e.openBlock(),e.createElementBlock("span",Wa,"页脚")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,j=>(e.openBlock(),e.createBlock(ut,{key:j.id,element:j,"design-mode":t.designMode,"print-data":t.printData,scale:t.scale,"all-elements":O.value,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,zone:"footer","adsorb-handler":q,"clear-adsorb-guides":e.unref(y),onSelect:G,onDragStart:D[11]||(D[11]=_=>C.$emit("drag-start")),onDragStop:D[12]||(D[12]=_=>C.$emit("drag-stop")),onDblclickElement:D[13]||(D[13]=_=>C.$emit("dblclick-element",_)),onDblclickCell:D[14]||(D[14]=(_,ae,ge)=>C.$emit("dblclick-cell",_,ae,ge)),onContextmenu:D[15]||(D[15]=(_,ae)=>C.$emit("contextmenu",_,ae)),onCloneElement:(_,ae)=>C.$emit("clone-element",_,ae)},null,8,["element","design-mode","print-data","scale","all-elements","snap-to-grid","show-table-ghost-border","clear-adsorb-guides","onCloneElement"]))),128)),t.designMode?(e.openBlock(),e.createElementBlock("div",{key:1,class:"zone-resize-handle handle-top",onMousedown:D[16]||(D[16]=e.withModifiers(j=>le("footer",j),["prevent","stop"]))},[re.value?.zone==="footer"?(e.openBlock(),e.createElementBlock("div",Ga,e.toDisplayString(t.templateData.footer.height.toFixed(1))+"mm ",1)):e.createCommentVNode("",!0)],32)):e.createCommentVNode("",!0)],6),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(U),(j,_)=>(e.openBlock(),e.createElementBlock("div",{key:_,class:e.normalizeClass(["adsorb-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:e.unref(Y).height+"mm",borderLeftColor:j.color||"var(--pd-accent-secondary, #f56c6c)"}:{top:j.position+"mm",left:"0",width:e.unref(Y).width+"mm",borderTopColor:j.color||"var(--pd-accent-secondary, #f56c6c)"})},null,6))),128)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.guides,j=>(e.openBlock(),e.createElementBlock("div",{key:"mg-"+j.id,class:e.normalizeClass(["manual-guide",[`guide-${j.type}`]]),style:e.normalizeStyle(j.type==="vertical"?{left:j.position+"mm",top:"0",height:a.value+"mm","--guide-hit":f.value}:{top:j.position+"mm",left:"0",width:r.value+"mm","--guide-hit":f.value}),onMousedown:e.withModifiers(_=>E(_,j),["prevent","stop"]),onDblclick:e.withModifiers(_=>j.id&&i("guide-remove",j.id),["prevent","stop"])},null,46,qa))),128))],4)],4)],4))}}),ja=pe(Ka,[["__scopeId","data-v-4682b43a"]]),Ya=e.defineComponent({__name:"Ruler",props:{orientation:{},viewportPx:{},originPx:{},paperLengthMM:{},scale:{},cursorPx:{}},emits:["add-guide","guide-dragging"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>o.orientation==="horizontal"),c=e.computed(()=>i.value?"vertical":"horizontal"),r=e.ref(null),a=e.ref(null),s=e.computed(()=>a.value??o.cursorPx??null),m=e.computed(()=>i.value?{width:o.viewportPx+"px",height:h.RULER_THICKNESS+"px"}:{width:h.RULER_THICKNESS+"px",height:o.viewportPx+"px"});let u=0;function g(){u||(u=requestAnimationFrame(()=>{u=0,d()}))}function d(){const y=r.value;if(!y)return;const U=y.getContext("2d");if(!U)return;const Y=window.devicePixelRatio||1,q=Math.max(0,Math.round(o.viewportPx)),E=h.RULER_THICKNESS;y.width=(i.value?q:E)*Y,y.height=(i.value?E:q)*Y,U.setTransform(Y,0,0,Y,0,0);const T=getComputedStyle(y),b=T.getPropertyValue("--pd-ruler-bg").trim()||"#F8F9FC",$=T.getPropertyValue("--pd-ruler").trim()||"#9AA1AF",M=T.getPropertyValue("--pd-accent").trim()||"#165DFF";U.fillStyle=b,U.fillRect(0,0,i.value?q:E,i.value?E:q);const L=o.scale>0?o.scale:1,J=h.mmToPx(1)*L;if(J<=0)return;const P=-o.originPx/J,X=(q-o.originPx)/J,re=h.chooseMajorStepMM(L),le=h.buildRulerTicks(P,X,re);f(U,le,J,$,!0),f(U,le,J,$,!1),z(U,0,M),z(U,o.paperLengthMM,M);const v=s.value;if(v!==null&&v>=0&&v<=q){if(U.strokeStyle=M,U.lineWidth=1.5,U.beginPath(),i.value){const x=Math.round(v)+.5;U.moveTo(x,0),U.lineTo(x,E)}else{const x=Math.round(v)+.5;U.moveTo(0,x),U.lineTo(E,x)}U.stroke()}}function f(y,U,Y,q,E){y.strokeStyle=q,y.fillStyle=q,y.globalAlpha=E?.32:1,y.lineWidth=1,y.font="9px ui-monospace, Menlo, monospace",y.textBaseline="top";for(const T of U){if((T.mm<0||T.mm>o.paperLengthMM)!==E)continue;const $=Math.round(o.originPx+T.mm*Y)+.5,M=T.major?8:4;y.beginPath(),i.value?(y.moveTo($,0),y.lineTo($,M)):(y.moveTo(0,$),y.lineTo(M,$)),y.stroke(),T.major&&T.label&&(i.value?y.fillText(T.label,$+2,11):(y.save(),y.translate(11,$+2),y.rotate(-Math.PI/2),y.fillText(T.label,0,0),y.restore()))}y.globalAlpha=1}function z(y,U,Y){const q=h.mmToPx(1)*(o.scale>0?o.scale:1),E=Math.round(o.originPx+U*q)+.5;E<=0||E>=o.viewportPx||(y.strokeStyle=Y,y.globalAlpha=.55,y.lineWidth=1,y.beginPath(),i.value?(y.moveTo(E,0),y.lineTo(E,h.RULER_THICKNESS)):(y.moveTo(0,E),y.lineTo(h.RULER_THICKNESS,E)),y.stroke(),y.globalAlpha=1)}e.watch(()=>[o.viewportPx,o.originPx,o.paperLengthMM,o.scale,o.cursorPx,o.orientation],g),e.onMounted(g),e.onBeforeUnmount(()=>{u&&cancelAnimationFrame(u)});let V=!1;function N(y){const U=r.value;if(!U)return null;const Y=U.getBoundingClientRect(),q=i.value?y.clientX-Y.left:y.clientY-Y.top;if(q<0||q>o.viewportPx)return null;const E=h.mmToPx(1)*(o.scale>0?o.scale:1);return(q-o.originPx)/E}function p(y){y.button===0&&(V=!0,y.preventDefault(),window.addEventListener("mousemove",ee),window.addEventListener("mouseup",Z),oe(y))}function S(y){const U=r.value;if(!U)return;const Y=U.getBoundingClientRect();a.value=i.value?y.clientX-Y.left:y.clientY-Y.top,g()}function O(){a.value=null,g()}function oe(y){const U=N(y);n("guide-dragging",U)}function ee(y){V&&oe(y)}function Z(y){if(!V)return;V=!1,window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",Z);const U=N(y);U!==null&&U>=0&&U<=o.paperLengthMM&&n("add-guide",c.value,U),n("guide-dragging",null)}return e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",ee),window.removeEventListener("mouseup",Z)}),(y,U)=>(e.openBlock(),e.createElementBlock("canvas",{ref_key:"canvasRef",ref:r,class:e.normalizeClass(["pd-ruler",`is-${t.orientation}`]),style:e.normalizeStyle(m.value),onMousedown:p,onMousemove:S,onMouseleave:O},null,38))}}),Mt=pe(Ya,[["__scopeId","data-v-1e7d0633"]]),Xa={class:"canvas-scroll"},Xe=96/25.4,Za=e.defineComponent({__name:"CanvasArea",props:{templateData:{},elements:{},scale:{},showGrid:{type:Boolean},snapToGrid:{type:Boolean},showTableGhostBorder:{type:Boolean},hasClipboard:{type:Boolean},guides:{},showRuler:{type:Boolean,default:!0}},emits:["select","drop-element","drop-field","drag-start","drag-stop","dblclick-element","dblclick-cell","zone-height-change","zone-height-commit","select-all","clear-selection","preview","commit-preview","paste","copy","cut","delete","move-layer","coordinate","add-guide","guide-move","guide-remove","zoom","clone-element"],setup(t,{expose:l,emit:o}){const n=t,i=o;function c(A,B){i("select",A,B)}const r=e.ref(null),a=e.computed(()=>h.getPaperDimensions(n.templateData).width),s=e.computed(()=>h.getPaperDimensions(n.templateData).height),m=e.reactive({originX:0,originY:0,viewW:0,viewH:0,paperScale:1}),u=e.reactive({x:null,y:null}),g=e.reactive({x:0,y:0}),d=e.computed(()=>({transform:`translate(${g.x}px, ${g.y}px)`}));function f(){const A=r.value,B=A?.querySelector(".hiprint-printPaper");if(!A||!B)return;const F=A.getBoundingClientRect(),ne=B.getBoundingClientRect(),ie=n.scale||1,ve=ne.width/h.mmToPx(a.value);m.paperScale=Math.abs(ve-ie)<.002?ie:ve,m.originX=ne.left-F.left-h.RULER_THICKNESS,m.originY=ne.top-F.top-h.RULER_THICKNESS,m.viewW=A.clientWidth-h.RULER_THICKNESS,m.viewH=A.clientHeight-h.RULER_THICKNESS}function z(){g.x=r.value?.scrollLeft??0,g.y=r.value?.scrollTop??0,f()}let V=null,N=0;function p(){cancelAnimationFrame(N);const A=performance.now()+220,B=()=>{f(),performance.now()<A&&(N=requestAnimationFrame(B))};N=requestAnimationFrame(B)}const S=e.ref(null);function O(A,B){S.value=B===null?null:{type:A,mm:B}}const oe=e.computed(()=>{const A=S.value,B=r.value?.querySelector(".hiprint-printPaper");if(!A||!B)return{};const F=B.getBoundingClientRect(),ne=F.width/h.mmToPx(a.value),ie=h.mmToPx(A.mm)*(ne>0?ne:n.scale||1);return A.type==="vertical"?{left:F.left+ie+"px",top:F.top+"px",height:F.height+"px"}:{left:F.left+"px",top:F.top+ie+"px",width:F.width+"px"}});function ee(A){const B=r.value?.querySelector(".hiprint-printPaper");if(!B)return;const F=B.getBoundingClientRect(),ne=n.scale||1,ie=h.pxToMm((A.clientX-F.left)/ne),ve=h.pxToMm((A.clientY-F.top)/ne);if(!(ie<0||ve<0))return{x:ie,y:ve}}function Z(A){const B=ee(A),F=A.dataTransfer?.getData("fieldData");if(F)try{const ie=JSON.parse(F);i("drop-field",ie,B);return}catch{}const ne=A.dataTransfer?.getData("elementType");ne&&i("drop-element",ne,B)}const y=e.reactive({visible:!1,x:0,y:0,w:0,h:0});let U={x:0,y:0};function Y(A){return!A||!(A instanceof HTMLElement)?!1:!!(A===r.value||A.classList.contains("canvas-scroll")||A.classList.contains("hiprint-printPaper")||A.classList.contains("hiprint-printPaper-content")||A.classList.contains("zone-layer")||A.classList.contains("grid-bg")||A.classList.contains("watermark-layer"))}function q(A){const B=r.value,F=B?.querySelector(".hiprint-printPaper");if(!B||!F)return;const ne=B.getBoundingClientRect();u.x=A.clientX-ne.left-h.RULER_THICKNESS,u.y=A.clientY-ne.top-h.RULER_THICKNESS;const ie=F.getBoundingClientRect(),ve=n.scale||1,I=h.pxToMm((A.clientX-ie.left)/ve),H=h.pxToMm((A.clientY-ie.top)/ve);if(I<0||H<0){i("coordinate",null);return}i("coordinate",{x:I,y:H})}function E(){i("coordinate",null),u.x=null,u.y=null}function T(A,B,F,ne){const ie=r.value;if(!ie)return;const ve=Math.max(ne,Math.round(A)),I=Math.round((n.scale||1)*100);if(ve===I)return;const H=n.scale||1,k=ve/100/H,w=getComputedStyle(ie),R=parseFloat(w.paddingLeft)||0,ce=parseFloat(w.paddingTop)||0,fe=ie.scrollLeft+B-R,ye=ie.scrollTop+F-ce;i("zoom",ve-I),e.nextTick(()=>{const we=getComputedStyle(ie),xe=parseFloat(we.paddingLeft)||0,Le=parseFloat(we.paddingTop)||0;ie.scrollLeft=fe*k-B+xe,ie.scrollTop=ye*k-F+Le})}function b(A){if(!(A.ctrlKey||A.metaKey))return;A.preventDefault();const B=r.value;if(!B)return;const F=Math.round((n.scale||1)*100),ne=h.nextWheelScale(F,A.deltaY>0?-1:1);if(ne===F)return;const ie=B.getBoundingClientRect();T(ne,A.clientX-ie.left,A.clientY-ie.top,h.MIN_SCALE_PERCENT)}function $(A){const B=r.value;if(!B)return;const F=Math.round((n.scale||1)*100),ne=h.nextWheelScale(F,A);T(ne,B.clientWidth/2,B.clientHeight/2,h.MIN_SCALE_PERCENT)}function M(A){const B=r.value;if(!B)return;const F=B.querySelector(".hiprint-printPaper"),ne=F?.style.transition??"";F&&(F.style.transition="none"),T(A,B.clientWidth/2,B.clientHeight/2,h.FIT_SCALE_MIN_PERCENT),e.nextTick(()=>{F&&(F.style.transition=ne)})}function L(A){A.button!==2&&Y(A.target)&&(i("clear-selection"),U={x:A.clientX,y:A.clientY},y.visible=!0,y.x=A.clientX,y.y=A.clientY,y.w=0,y.h=0,window.addEventListener("mousemove",P),window.addEventListener("mouseup",X))}function J(){if(y.w<3||y.h<3)return[];const A=r.value?.querySelector(".hiprint-printPaper");if(!A)return[];const B=A.getBoundingClientRect(),F=n.scale||1,ne=y.x<U.x,ie=[];for(const ve of n.elements){if(ve.options.visible===!1||ve.options.locked)continue;const I=B.left+ve.options.left*Xe*F,H=B.top+ve.options.top*Xe*F,k=I+ve.options.width*Xe*F,w=H+ve.options.height*Xe*F,R=I<y.x+y.w&&k>y.x&&H<y.y+y.h&&w>y.y,ce=I>=y.x&&k<=y.x+y.w&&H>=y.y&&w<=y.y+y.h;(ne?ce:R)&&ie.push(ve.id)}return ie}function P(A){const B=A.clientX-U.x,F=A.clientY-U.y;y.x=B>=0?U.x:A.clientX,y.y=F>=0?U.y:A.clientY,y.w=Math.abs(B),y.h=Math.abs(F),i("preview",J())}function X(){window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",X);const A=J();i("preview",A),A.length>0?i("commit-preview"):i("clear-selection"),i("preview",[]),y.visible=!1}const re=e.reactive({visible:!1,x:0,y:0,flipX:0,flipY:0,targetId:null}),le=e.ref(null),v=e.inject(Je,null);function x(A,B){if(!B&&!Y(A.target))return;B&&!v?.value.has(B)&&i("select",B,!1),re.targetId=B??null,re.visible=!0,re.x=A.clientX,re.y=A.clientY,re.flipX=0,re.flipY=0,e.nextTick(()=>{const ne=le.value;if(!ne)return;const ie=ne.getBoundingClientRect(),ve=4;A.clientX+ie.width+ve>window.innerWidth&&(re.flipX=-ie.width),A.clientY+ie.height+ve>window.innerHeight&&(re.flipY=-ie.height)}),window.removeEventListener("mousedown",G);const F=++K;e.nextTick(()=>{F===K&&window.addEventListener("mousedown",G)})}let K=0;function G(A){const B=le.value;B&&B.contains(A.target)||C()}function C(){re.visible=!1,window.removeEventListener("mousedown",G)}function D(){C(),n.hasClipboard&&i("paste")}function j(){C(),i("select-all")}function _(){C(),i("clear-selection")}function ae(A,B){C(),A==="copy"?i("copy"):A==="cut"?i("cut"):A==="paste"?D():A==="delete"?i("delete"):A==="move-layer"&&i("move-layer",B)}e.onMounted(()=>{e.nextTick(f),r.value&&typeof ResizeObserver<"u"&&(V=new ResizeObserver(f),V.observe(r.value))}),e.watch(()=>n.scale,p),e.watch([a,s],()=>e.nextTick(f));function ge(){const A=r.value;if(!A)return;let B=0,F=0,ne=0;const ie=performance.now()+800,ve=()=>{const{scrollWidth:I,scrollHeight:H}=A;if(I===F&&H===ne?B++:B=0,F=I,ne=H,B>=2||performance.now()>ie){const k=A.scrollWidth,w=A.scrollHeight,R=A.clientWidth,ce=A.clientHeight;A.scrollLeft=Math.max(0,(k-R)/2),A.scrollTop=Math.max(0,(w-ce)/2);return}requestAnimationFrame(ve)};requestAnimationFrame(ve)}return l({centerScroll:ge,fitToWindow:M,zoomByStep:$}),e.onBeforeUnmount(()=>{window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",X),window.removeEventListener("mousedown",G),V?.disconnect(),cancelAnimationFrame(N)}),(A,B)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:r,class:"canvas-area",onDragover:B[23]||(B[23]=e.withModifiers(()=>{},["prevent"])),onDrop:Z,onMousedown:L,onMousemove:q,onMouseleave:E,onWheel:b,onScroll:z,onContextmenu:e.withModifiers(x,["prevent"])},[e.createElementVNode("div",Xa,[e.createVNode(ja,{"template-data":t.templateData,"runtime-elements":t.elements,"design-mode":!0,"print-data":[],scale:t.scale,"show-grid":t.showGrid,"snap-to-grid":t.snapToGrid,"show-table-ghost-border":t.showTableGhostBorder,guides:t.guides,onSelect:c,onGuideMove:B[0]||(B[0]=(F,ne)=>A.$emit("guide-move",F,ne)),onGuideRemove:B[1]||(B[1]=F=>A.$emit("guide-remove",F)),onDragStart:B[2]||(B[2]=F=>A.$emit("drag-start")),onDragStop:B[3]||(B[3]=F=>A.$emit("drag-stop")),onDblclickElement:B[4]||(B[4]=F=>A.$emit("dblclick-element",F)),onDblclickCell:B[5]||(B[5]=(F,ne,ie)=>A.$emit("dblclick-cell",F,ne,ie)),onContextmenu:B[6]||(B[6]=(F,ne)=>x(ne,F)),onZoneHeightChange:B[7]||(B[7]=(F,ne)=>A.$emit("zone-height-change",F,ne)),onZoneHeightCommit:B[8]||(B[8]=F=>A.$emit("zone-height-commit",F)),onCloneElement:B[9]||(B[9]=(F,ne)=>A.$emit("clone-element",F,ne))},null,8,["template-data","runtime-elements","scale","show-grid","snap-to-grid","show-table-ghost-border","guides"])]),t.showRuler?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ruler-overlay",style:e.normalizeStyle(d.value)},[B[24]||(B[24]=e.createElementVNode("div",{class:"ruler-corner"},null,-1)),e.createVNode(Mt,{orientation:"horizontal","viewport-px":m.viewW,"origin-px":m.originX,"paper-length-m-m":a.value,scale:m.paperScale,"cursor-px":u.x,onAddGuide:B[10]||(B[10]=(F,ne)=>i("add-guide",F,ne)),onGuideDragging:B[11]||(B[11]=F=>O("vertical",F))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"]),e.createVNode(Mt,{orientation:"vertical","viewport-px":m.viewH,"origin-px":m.originY,"paper-length-m-m":s.value,scale:m.paperScale,"cursor-px":u.y,onAddGuide:B[12]||(B[12]=(F,ne)=>i("add-guide",F,ne)),onGuideDragging:B[13]||(B[13]=F=>O("horizontal",F))},null,8,["viewport-px","origin-px","paper-length-m-m","scale","cursor-px"])],4)):e.createCommentVNode("",!0),S.value?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["ruler-guide-preview",`guide-${S.value.type}`]),style:e.normalizeStyle(oe.value)},null,6)):e.createCommentVNode("",!0),y.visible?(e.openBlock(),e.createElementBlock("div",{key:2,class:"marquee-selection",style:e.normalizeStyle({left:y.x+"px",top:y.y+"px",width:y.w+"px",height:y.h+"px"})},null,4)):e.createCommentVNode("",!0),re.visible?(e.openBlock(),e.createElementBlock("div",{key:3,ref_key:"contextMenuRef",ref:le,class:"context-menu",onMousedown:B[22]||(B[22]=e.withModifiers(()=>{},["stop"])),style:e.normalizeStyle({left:re.x+re.flipX+"px",top:re.y+re.flipY+"px"})},[re.targetId?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",{class:"context-menu-item",onClick:B[14]||(B[14]=F=>ae("copy"))},"复制"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[15]||(B[15]=F=>ae("cut"))},"剪切"),e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:B[16]||(B[16]=F=>ae("paste"))},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:B[17]||(B[17]=F=>ae("delete"))},"删除"),B[25]||(B[25]=e.createElementVNode("div",{class:"context-menu-sep"},null,-1)),e.createElementVNode("div",{class:"context-menu-item",onClick:B[18]||(B[18]=F=>ae("move-layer","top"))},"置顶"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[19]||(B[19]=F=>ae("move-layer","up"))},"上移"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[20]||(B[20]=F=>ae("move-layer","down"))},"下移"),e.createElementVNode("div",{class:"context-menu-item",onClick:B[21]||(B[21]=F=>ae("move-layer","bottom"))},"置底")],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",{class:e.normalizeClass(["context-menu-item",{disabled:!t.hasClipboard}]),onClick:D},"粘贴",2),e.createElementVNode("div",{class:"context-menu-item",onClick:j},"全选"),e.createElementVNode("div",{class:"context-menu-item",onClick:_},"取消选择")],64))],36)):e.createCommentVNode("",!0)],544))}}),Ja=pe(Za,[["__scopeId","data-v-427d3548"]]),Qa={class:"property-search"},_a=e.defineComponent({__name:"PropertySearch",emits:["search"],setup(t,{emit:l}){const o=e.ref(""),n=l;function i(){n("search",o.value)}return(c,r)=>(e.openBlock(),e.createElementBlock("div",Qa,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[0]||(r[0]=a=>o.value=a),class:"pd-input",type:"search",placeholder:"搜索属性...","aria-label":"搜索属性",onInput:i},null,544),[[e.vModelText,o.value]])]))}}),ei=pe(_a,[["__scopeId","data-v-10ab6c84"]]),ti={class:"group-icon"},oi={class:"group-title"},ni={class:"expand-icon"},li={class:"group-content"},ai=e.defineComponent({__name:"PropertyGroup",props:{title:{},icon:{},defaultExpanded:{type:Boolean},groupKey:{}},setup(t){const l=t,o=e.ref(l.defaultExpanded??!0),i={Document:"≡",Brush:"◧",Setting:"⚙"}[l.icon]||"•";function c(){o.value=!o.value,r()}function r(){const s=`property-group-${l.groupKey}`;try{localStorage.setItem(s,String(o.value))}catch{}}function a(){const s=`property-group-${l.groupKey}`;try{const m=localStorage.getItem(s);m!==null&&(o.value=m==="true")}catch{}}return e.onMounted(()=>{a()}),(s,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["property-group",{"is-expanded":o.value}])},[e.createElementVNode("div",{class:"group-header",onClick:c},[e.createElementVNode("span",ti,e.toDisplayString(e.unref(i)),1),e.createElementVNode("span",oi,e.toDisplayString(t.title),1),e.createElementVNode("span",ni,e.toDisplayString(o.value?"▾":"▸"),1)]),e.withDirectives(e.createElementVNode("div",li,[e.renderSlot(s.$slots,"default",{},void 0,!0)],512),[[e.vShow,o.value]])],2))}}),Be=pe(ai,[["__scopeId","data-v-2ba57031"]]),ii={class:"position-grid"},ri={class:"pd-field"},si={class:"pd-field"},di={class:"pd-field"},ci={class:"pd-field"},ui=e.defineComponent({__name:"PositionSizeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(n){return l.searching?l.matchedKeys?.has(n)??!0:!0}return(n,i)=>(e.openBlock(),e.createBlock(Be,{title:"位置与尺寸",icon:"Location","default-expanded":"","group-key":"position-size"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:i[4]||(i[4]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("div",ii,[e.withDirectives(e.createElementVNode("div",ri,[i[5]||(i[5]=e.createElementVNode("span",{class:"pd-label"},"X",-1)),e.createVNode(de,{modelValue:t.element.options.left,"onUpdate:modelValue":i[0]||(i[0]=c=>t.element.options.left=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-left")]]),e.withDirectives(e.createElementVNode("div",si,[i[6]||(i[6]=e.createElementVNode("span",{class:"pd-label"},"Y",-1)),e.createVNode(de,{modelValue:t.element.options.top,"onUpdate:modelValue":i[1]||(i[1]=c=>t.element.options.top=c),min:0},null,8,["modelValue"])],512),[[e.vShow,o("ps-top")]]),e.withDirectives(e.createElementVNode("div",di,[i[7]||(i[7]=e.createElementVNode("span",{class:"pd-label"},"W",-1)),e.createVNode(de,{modelValue:t.element.options.width,"onUpdate:modelValue":i[2]||(i[2]=c=>t.element.options.width=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-width")]]),e.withDirectives(e.createElementVNode("div",ci,[i[8]||(i[8]=e.createElementVNode("span",{class:"pd-label"},"H",-1)),e.createVNode(de,{modelValue:t.element.options.height,"onUpdate:modelValue":i[3]||(i[3]=c=>t.element.options.height=c),min:4},null,8,["modelValue"])],512),[[e.vShow,o("ps-height")]])])],32)]),_:1}))}}),mi=pe(ui,[["__scopeId","data-v-bc364679"]]),pi=["data-field"],vi={class:"pd-label"},fi=["data-tip"],gi=["value"],hi=["value"],bi={key:0,value:"custom"},Ei={class:"pd-field","data-field":"ap-img-fit-scale"},yi={class:"pd-label"},ki=["data-tip"],Vi=["data-field"],Ni={class:"pd-label"},wi={key:0,class:"pd-crop-note"},Ci={key:1,class:"pd-crop-note"},Si={class:"pd-crop-preview"},xi=["src","alt"],Bi=e.defineComponent({__name:"CropAnchorField",props:{fieldKey:{},label:{},src:{default:""},modelValue:{default:void 0},widthMm:{},heightMm:{},fit:{default:void 0},scale:{default:void 0}},emits:["update:modelValue","update:scale"],setup(t,{emit:l}){const o=t,n=l,i=e.computed(()=>h.propertyTip(o.fieldKey)),c=h.propertyTip("ap-img-fit-scale"),r=e.computed(()=>h.resolveCropPreview(o.src)),a=e.ref(void 0);function s(E){const T=E.target;T.naturalWidth>0&&T.naturalHeight>0&&(a.value={width:T.naturalWidth,height:T.naturalHeight})}function m(){a.value=void 0}e.watch(()=>r.value.src,m);const u=e.computed(()=>h.parseCropAnchor(o.modelValue)),g=e.computed(()=>u.value.kind==="custom"),d=e.computed(()=>u.value.kind==="axes"?u.value.x:50),f=e.computed(()=>u.value.kind==="axes"?u.value.y:50),z=e.computed(()=>({widthMm:o.widthMm,heightMm:o.heightMm,naturalWidth:a.value?.width,naturalHeight:a.value?.height,fit:o.fit,scalePct:o.scale})),V=e.computed(()=>h.resolveCropTravel(z.value)),N=e.computed(()=>h.cropPresetOptions(V.value,d.value,f.value)),p=e.computed(()=>g.value?"custom":`${d.value},${f.value}`),S=e.computed(()=>h.cropAxisFields(V.value,d.value,f.value)),O=e.computed(()=>h.cropAxisNote(V.value,g.value));function oe(E,T){n("update:modelValue",h.buildCropAnchor(E,T))}function ee(E){const T=E.target.value;if(T==="custom")return;const[b,$]=T.split(",").map(Number);oe(b,$)}function Z(E,T){T!==void 0&&(E==="horizontal"?oe(T,f.value):oe(d.value,T))}function y(E){n("update:scale",E!==void 0&&E>h.CROP_SCALE_MIN?E:void 0)}const U=e.computed(()=>h.cropWindow(z.value,d.value,f.value));function Y(E){return`${Math.round(E*1e4)/1e4}%`}const q=e.computed(()=>U.value&&{left:Y(U.value.leftPct),top:Y(U.value.topPct),width:Y(U.value.widthPct),height:Y(U.value.heightPct)});return(E,T)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{class:"pd-field","data-field":t.fieldKey},[e.createElementVNode("span",vi,[e.createTextVNode(e.toDisplayString(t.label),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":i.value,"aria-label":"字段说明"},null,8,fi)]),e.createElementVNode("select",{class:"pd-select",style:{width:"100%"},value:p.value,onChange:ee},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,b=>(e.openBlock(),e.createElementBlock("option",{key:b.value,value:b.value},e.toDisplayString(b.label),9,hi))),128)),g.value?(e.openBlock(),e.createElementBlock("option",bi,"自定义(保留原值)")):e.createCommentVNode("",!0)],40,gi)],8,pi),e.createElementVNode("div",Ei,[e.createElementVNode("span",yi,[e.createTextVNode(e.toDisplayString(e.unref(h.CROP_SCALE_LABEL)),1),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(c),"aria-label":"字段说明"},null,8,ki)]),e.createVNode(de,{"model-value":t.scale,min:e.unref(h.CROP_SCALE_MIN),max:e.unref(h.CROP_SCALE_MAX),step:5,placeholder:"默认 100","onUpdate:modelValue":y},null,8,["model-value","min","max"])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,b=>(e.openBlock(),e.createElementBlock("div",{class:"pd-field",key:b.name,"data-field":t.fieldKey},[e.createElementVNode("span",Ni,e.toDisplayString(b.label),1),e.createVNode(de,{"model-value":b.value,min:0,max:100,step:1,"onUpdate:modelValue":$=>Z(b.name,$)},null,8,["model-value","onUpdate:modelValue"])],8,Vi))),128)),O.value?(e.openBlock(),e.createElementBlock("p",wi,e.toDisplayString(O.value),1)):e.createCommentVNode("",!0),r.value.isSample?(e.openBlock(),e.createElementBlock("p",Ci,e.toDisplayString(e.unref(h.CROP_SAMPLE_NOTE)),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Si,[(e.openBlock(),e.createElementBlock("img",{class:"pd-crop-thumb",key:r.value.src,src:r.value.src,alt:r.value.isSample?"示例图":"原图",onLoad:s,onError:m},null,40,xi)),U.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-crop-win",style:e.normalizeStyle(q.value)},null,4)):e.createCommentVNode("",!0)])],64))}}),Ot=pe(Bi,[["__scopeId","data-v-e9ea4c5a"]]),$i={class:"pd-field"},Di={class:"pd-field"},Ti={class:"pd-field"},Mi={class:"pd-field"},zi={class:"pd-radio-group",role:"radiogroup"},Ai={class:"pd-radio"},Pi={class:"pd-radio"},Ri={class:"pd-radio"},Li={class:"pd-radio"},Ii={class:"pd-field"},Ui={class:"pd-radio-group",role:"radiogroup"},Fi={class:"pd-radio"},Oi={class:"pd-radio"},Hi={class:"pd-radio"},Wi={class:"color-row"},Gi={class:"pd-field"},qi={class:"pd-field"},Ki={class:"pd-field"},ji={class:"pd-field"},Yi={class:"pd-field"},Xi=["value"],Zi={key:0,class:"pd-field"},Ji={key:1,class:"pd-field"},Qi={class:"pd-label"},_i=["data-tip"],er={class:"pd-field"},tr=["checked"],or={class:"pd-field"},nr={class:"pd-label"},lr=["data-tip"],ar=["value"],ir={key:0},rr={key:2,class:"pd-empty"},sr=e.defineComponent({__name:"AppearanceGroup",props:{element:{},isTextType:{type:Boolean},matchedKeys:{},searching:{type:Boolean}},setup(t){const l=t;function o(g){return l.searching?l.matchedKeys?.has(g)??!0:!0}const n=e.computed(()=>l.element.printElementType.type==="table"),i=e.computed(()=>l.element.printElementType.type==="longText"),c=e.computed(()=>l.element.printElementType.type==="image"),r=h.propertyTip("ap-long-text-indent"),a=h.propertyTip("ap-img-fit"),s=e.computed(()=>{const g=String(l.element.options.src??"");return g.includes("{")?String(h.evaluateTemplate(g,h.DEFAULT_DEMO_DATA)):g}),m=e.computed(()=>h.resolveElementTextFit(l.element.printElementType.type||"text",l.element.options));function u(g){l.element.options.textFit=g.target.value}return(g,d)=>(e.openBlock(),e.createBlock(Be,{title:"外观",icon:"Brush","default-expanded":"","group-key":"appearance"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:d[20]||(d[20]=e.withModifiers(()=>{},["prevent"]))},[t.isTextType?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",$i,[d[21]||(d[21]=e.createElementVNode("span",{class:"pd-label"},"字体",-1)),e.createVNode(kt,{modelValue:t.element.options.fontFamily,"onUpdate:modelValue":d[0]||(d[0]=f=>t.element.options.fontFamily=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-family")]]),e.withDirectives(e.createElementVNode("div",Di,[d[22]||(d[22]=e.createElementVNode("span",{class:"pd-label"},"字体大小",-1)),e.createVNode(de,{modelValue:t.element.options.fontSize,"onUpdate:modelValue":d[1]||(d[1]=f=>t.element.options.fontSize=f),min:8,max:72},null,8,["modelValue"])],512),[[e.vShow,o("ap-font-size")]]),e.withDirectives(e.createElementVNode("div",Ti,[d[24]||(d[24]=e.createElementVNode("span",{class:"pd-label"},"字体粗细",-1)),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":d[2]||(d[2]=f=>t.element.options.fontWeight=f),style:{width:"100%"}},[...d[23]||(d[23]=[e.createElementVNode("option",{value:"normal"},"正常",-1),e.createElementVNode("option",{value:"bold"},"粗体",-1),e.createElementVNode("option",{value:"bolder"},"更粗",-1),e.createElementVNode("option",{value:"lighter"},"细体",-1)])],512),[[e.vModelSelect,t.element.options.fontWeight]])],512),[[e.vShow,o("ap-font-weight")]]),e.withDirectives(e.createElementVNode("div",Mi,[d[29]||(d[29]=e.createElementVNode("span",{class:"pd-label"},"对齐",-1)),e.createElementVNode("div",zi,[e.createElementVNode("label",Ai,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[3]||(d[3]=f=>t.element.options.textAlign=f),value:"left"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[25]||(d[25]=e.createElementVNode("span",null,"左",-1))]),e.createElementVNode("label",Pi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[4]||(d[4]=f=>t.element.options.textAlign=f),value:"center"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[26]||(d[26]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Ri,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[5]||(d[5]=f=>t.element.options.textAlign=f),value:"right"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[27]||(d[27]=e.createElementVNode("span",null,"右",-1))]),e.createElementVNode("label",Li,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[6]||(d[6]=f=>t.element.options.textAlign=f),value:"justify"},null,512),[[e.vModelRadio,t.element.options.textAlign]]),d[28]||(d[28]=e.createElementVNode("span",null,"两端",-1))])])],512),[[e.vShow,o("ap-align")]]),e.withDirectives(e.createElementVNode("div",Ii,[d[33]||(d[33]=e.createElementVNode("span",{class:"pd-label"},"垂直对齐",-1)),e.createElementVNode("div",Ui,[e.createElementVNode("label",Fi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[7]||(d[7]=f=>t.element.options.verticalAlign=f),value:"top"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[30]||(d[30]=e.createElementVNode("span",null,"顶",-1))]),e.createElementVNode("label",Oi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[8]||(d[8]=f=>t.element.options.verticalAlign=f),value:"middle"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[31]||(d[31]=e.createElementVNode("span",null,"中",-1))]),e.createElementVNode("label",Hi,[e.withDirectives(e.createElementVNode("input",{type:"radio","onUpdate:modelValue":d[9]||(d[9]=f=>t.element.options.verticalAlign=f),value:"bottom"},null,512),[[e.vModelRadio,t.element.options.verticalAlign]]),d[32]||(d[32]=e.createElementVNode("span",null,"底",-1))])])],512),[[e.vShow,o("ap-vertical-align")]]),e.createElementVNode("div",Wi,[e.withDirectives(e.createElementVNode("div",Gi,[d[34]||(d[34]=e.createElementVNode("span",{class:"pd-label"},"颜色",-1)),e.createVNode(Ne,{modelValue:t.element.options.color,"onUpdate:modelValue":d[10]||(d[10]=f=>t.element.options.color=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-color")]]),e.withDirectives(e.createElementVNode("div",qi,[d[35]||(d[35]=e.createElementVNode("span",{class:"pd-label"},"背景色",-1)),e.createVNode(Ne,{modelValue:t.element.options.backgroundColor,"onUpdate:modelValue":d[11]||(d[11]=f=>t.element.options.backgroundColor=f)},null,8,["modelValue"])],512),[[e.vShow,o("ap-bg-color")]])]),e.withDirectives(e.createElementVNode("div",Ki,[d[36]||(d[36]=e.createElementVNode("span",{class:"pd-label"},"行高",-1)),e.createVNode(de,{modelValue:t.element.options.lineHeight,"onUpdate:modelValue":d[12]||(d[12]=f=>t.element.options.lineHeight=f),min:0,max:100},null,8,["modelValue"])],512),[[e.vShow,o("ap-line-height")]]),e.withDirectives(e.createElementVNode("div",ji,[d[37]||(d[37]=e.createElementVNode("span",{class:"pd-label"},"字间距",-1)),e.createVNode(de,{modelValue:t.element.options.letterSpacing,"onUpdate:modelValue":d[13]||(d[13]=f=>t.element.options.letterSpacing=f),min:0,max:20,step:.5},null,8,["modelValue"])],512),[[e.vShow,o("ap-letter-spacing")]]),e.withDirectives(e.createElementVNode("div",Yi,[d[39]||(d[39]=e.createElementVNode("span",{class:"pd-label"},"文字溢出",-1)),e.createElementVNode("select",{class:"pd-select",value:m.value,style:{width:"100%"},onChange:u},[...d[38]||(d[38]=[e.createElementVNode("option",{value:"clip"},"截断",-1),e.createElementVNode("option",{value:"shrink"},"自动缩小",-1),e.createElementVNode("option",{value:"autoHeight"},"自适应行高",-1)])],40,Xi)],512),[[e.vShow,o("ap-text-fit")]]),m.value==="shrink"?e.withDirectives((e.openBlock(),e.createElementBlock("div",Zi,[d[40]||(d[40]=e.createElementVNode("span",{class:"pd-label"},"最小字号 (pt)",-1)),e.createVNode(de,{"model-value":t.element.options.shrinkMinFontSize,min:1,max:72,step:.5,placeholder:"默认 6","onUpdate:modelValue":d[14]||(d[14]=f=>t.element.options.shrinkMinFontSize=f??void 0)},null,8,["model-value"])],512)),[[e.vShow,o("ap-shrink-min")]]):e.createCommentVNode("",!0),i.value?e.withDirectives((e.openBlock(),e.createElementBlock("div",Ji,[e.createElementVNode("span",Qi,[d[41]||(d[41]=e.createTextVNode("首行缩进 (字符)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(r),"aria-label":"字段说明"},null,8,_i)]),e.createVNode(de,{modelValue:t.element.options.longTextIndent,"onUpdate:modelValue":d[15]||(d[15]=f=>t.element.options.longTextIndent=f),min:0,max:10,placeholder:"默认 0"},null,8,["modelValue"])],512)),[[e.vShow,o("ap-long-text-indent")]]):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("div",er,[d[42]||(d[42]=e.createElementVNode("span",{class:"pd-label"},"自动换行",-1)),e.createElementVNode("input",{checked:t.element.options.wordWrap!==!1,type:"checkbox",class:"pd-switch",onInput:d[16]||(d[16]=f=>t.element.options.wordWrap=f.target.checked?void 0:!1)},null,40,tr)],512),[[e.vShow,o("ap-word-wrap")]])],64)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",or,[e.createElementVNode("span",nr,[d[43]||(d[43]=e.createTextVNode("缩放模式",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(a),"aria-label":"字段说明"},null,8,lr)]),e.withDirectives(e.createElementVNode("select",{class:"pd-select","onUpdate:modelValue":d[17]||(d[17]=f=>t.element.options.fit=f),style:{width:"100%"}},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.IMAGE_FIT_OPTIONS),f=>(e.openBlock(),e.createElementBlock("option",{key:f.value,value:f.value},e.toDisplayString(f.label),9,ar))),128))],512),[[e.vModelSelect,t.element.options.fit]])],512),[[e.vShow,o("ap-img-fit")]]),t.element.options.fit==="cover"?e.withDirectives((e.openBlock(),e.createElementBlock("div",ir,[e.createVNode(Ot,{"field-key":"ap-img-object-position",label:"裁剪锚点",src:s.value,fit:t.element.options.fit,"width-mm":t.element.options.width||0,"height-mm":t.element.options.height||0,scale:t.element.options.fitScale,"model-value":t.element.options.objectPosition,"onUpdate:modelValue":d[18]||(d[18]=f=>t.element.options.objectPosition=f),"onUpdate:scale":d[19]||(d[19]=f=>t.element.options.fitScale=f)},null,8,["src","fit","width-mm","height-mm","scale","model-value"])],512)),[[e.vShow,o("ap-img-object-position")]]):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),!t.isTextType&&!c.value&&!n.value?(e.openBlock(),e.createElementBlock("p",rr,"当前元素不支持外观设置")):e.createCommentVNode("",!0)],32)]),_:1}))}}),dr=pe(sr,[["__scopeId","data-v-0e474454"]]),cr={class:"pd-field"},ur=["value"],mr={class:"pd-field"},pr=["value"],vr={class:"pd-hint"},fr={class:"pd-field"},gr={class:"pd-field"},hr=["checked"],br={class:"pd-field"},Er={class:"pd-field"},yr=["value"],kr={class:"pd-field"},Vr={class:"pd-label"},Nr=["data-tip"],wr={key:2,class:"pd-hint"},Cr={key:3,class:"pd-field"},Sr=["value"],xr=["value"],Br={class:"pd-field"},$r={class:"pd-field"},Dr=e.defineComponent({__name:"CodeGroup",props:{element:{},matchedKeys:{},searching:{type:Boolean}},emits:["change"],setup(t,{emit:l}){const o=h.propertyTip("cd-quiet-zone"),n=t,i=l,c=e.computed(()=>n.element.printElementType.type==="barcode"),r=e.computed(()=>n.element.printElementType.type==="qrcode"),a=e.computed(()=>(n.element.options.barcodeType||"CODE128").toUpperCase()),s=e.computed(()=>n.element.options.printerDpi?String(n.element.options.printerDpi):""),m=e.computed(()=>!!n.element.options.printerDpi),u=e.computed(()=>c.value&&m.value);function g(N){const p=Number(N.target.value);n.element.options.printerDpi=p>0?p:void 0,V()}function d(N){const p=N.target.value;n.element.options.barcodeType=p==="CODE128"?void 0:p,V()}function f(N){n.element.options.fit=N.target.value||void 0,V()}function z(N){return n.searching?n.matchedKeys?.has(N)??!0:!0}function V(){i("change")}return(N,p)=>(e.openBlock(),e.createBlock(Be,{title:"条码设置",icon:"Postcard","default-expanded":"","group-key":"code"},{default:e.withCtx(()=>[e.createElementVNode("form",{class:"pd-form",onSubmit:p[7]||(p[7]=e.withModifiers(()=>{},["prevent"]))},[c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.withDirectives(e.createElementVNode("div",cr,[p[9]||(p[9]=e.createElementVNode("span",{class:"pd-label"},"码制",-1)),e.createElementVNode("select",{class:"pd-select",value:a.value,onChange:d},[...p[8]||(p[8]=[e.createElementVNode("option",{value:"CODE128"},"CODE128(通用)",-1),e.createElementVNode("option",{value:"EAN13"},"EAN13(商品码)",-1),e.createElementVNode("option",{value:"EAN8"},"EAN8",-1),e.createElementVNode("option",{value:"UPC"},"UPC",-1),e.createElementVNode("option",{value:"CODE39"},"CODE39",-1),e.createElementVNode("option",{value:"ITF14"},"ITF14",-1)])],40,ur)],512),[[e.vShow,z("cd-type")]]),e.withDirectives(e.createElementVNode("div",mr,[p[11]||(p[11]=e.createElementVNode("span",{class:"pd-label"},"打印机分辨率",-1)),e.createElementVNode("select",{class:"pd-select",value:s.value,onChange:g},[...p[10]||(p[10]=[e.createElementVNode("option",{value:""},"不指定(按条宽渲染)",-1),e.createElementVNode("option",{value:"203"},"203 dpi(8 点/mm)",-1),e.createElementVNode("option",{value:"300"},"300 dpi(11.8 点/mm)",-1),e.createElementVNode("option",{value:"600"},"600 dpi(23.6 点/mm)",-1)])],40,pr)],512),[[e.vShow,z("cd-dpi")]]),e.withDirectives(e.createElementVNode("p",vr,"填写后条宽吸附到整数打印点(消除出纸「条宽忽宽忽窄」):条码先按条宽渲染,可用宽度够就原样落纸,不够才整体等比缩小",512),[[e.vShow,z("cd-dpi")]]),e.withDirectives(e.createElementVNode("div",fr,[p[12]||(p[12]=e.createElementVNode("span",{class:"pd-label"},"条宽(倍率)",-1)),e.createVNode(de,{"model-value":t.element.options.barWidth??2,min:2,max:4,step:.5,"onUpdate:modelValue":p[0]||(p[0]=S=>{t.element.options.barWidth=S,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-bar-width")]]),e.withDirectives(e.createElementVNode("p",{class:"pd-hint"},e.toDisplayString(u.value?"已设置打印机分辨率:条宽会被吸附到最近的整数打印点(DPI 优先于毫米值),元素框放不下时整体等比缩小":"热敏/针式打印建议 3 及以上:决定条码的落纸尺寸,条越粗出纸后条宽越稳定"),513),[[e.vShow,z("cd-bar-width")]]),e.withDirectives(e.createElementVNode("div",gr,[p[13]||(p[13]=e.createElementVNode("span",{class:"pd-label"},"显示文本",-1)),e.createElementVNode("input",{checked:t.element.options.hideTitle!==!0,type:"checkbox",class:"pd-switch",onInput:p[1]||(p[1]=S=>{t.element.options.hideTitle=S.target.checked?void 0:!0,V()})},null,40,hr)],512),[[e.vShow,z("cd-show-text")]]),e.withDirectives(e.createElementVNode("div",br,[p[14]||(p[14]=e.createElementVNode("span",{class:"pd-label"},"文本字号(相对条高,条高为 30)",-1)),e.createVNode(de,{"model-value":t.element.options.fontSize,min:5,max:24,placeholder:"默认 10","onUpdate:modelValue":p[2]||(p[2]=S=>{t.element.options.fontSize=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-font-size")]])],64)):r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("div",Er,[p[16]||(p[16]=e.createElementVNode("span",{class:"pd-label"},"纠错级别",-1)),e.createElementVNode("select",{class:"pd-select",value:String(t.element.options.qrCodeLevel??"M"),onChange:p[3]||(p[3]=S=>{t.element.options.qrCodeLevel=S.target.value,V()})},[...p[15]||(p[15]=[e.createElementVNode("option",{value:"L"},"L(最低,容量大)",-1),e.createElementVNode("option",{value:"M"},"M(推荐)",-1),e.createElementVNode("option",{value:"Q"},"Q",-1),e.createElementVNode("option",{value:"H"},"H(最高)",-1)])],40,yr)],512),[[e.vShow,z("cd-ec-level")]]),e.withDirectives(e.createElementVNode("div",kr,[e.createElementVNode("span",Vr,[p[17]||(p[17]=e.createTextVNode("静区 (模块)",-1)),e.createElementVNode("button",{type:"button",class:"pd-help","data-tip":e.unref(o),"aria-label":"字段说明"},null,8,Nr)]),e.createVNode(de,{"model-value":t.element.options.qrQuietZone,min:0,max:8,placeholder:"默认 0","onUpdate:modelValue":p[4]||(p[4]=S=>{t.element.options.qrQuietZone=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-quiet-zone")]])],64)):e.createCommentVNode("",!0),p[21]||(p[21]=e.createElementVNode("h3",{class:"pd-divider"},"自定义设置",-1)),c.value?(e.openBlock(),e.createElementBlock("p",wr,"条码尺寸由「条宽」与「打印机分辨率」结算:宽度足够时按条宽原样落纸,不足时整体等比缩小;拉伸会把条宽变成非整数,故条形码不提供缩放模式,可用「最大宽高」限制上限")):e.createCommentVNode("",!0),c.value?e.createCommentVNode("",!0):e.withDirectives((e.openBlock(),e.createElementBlock("div",Cr,[p[18]||(p[18]=e.createElementVNode("span",{class:"pd-label"},"缩放模式",-1)),e.createElementVNode("select",{class:"pd-select",value:t.element.options.fit||"contain",onChange:f},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h.IMAGE_FIT_OPTIONS),S=>(e.openBlock(),e.createElementBlock("option",{key:S.value,value:S.value},e.toDisplayString(S.label),9,xr))),128))],40,Sr)],512)),[[e.vShow,z("cd-fit")]]),e.withDirectives(e.createElementVNode("div",Br,[p[19]||(p[19]=e.createElementVNode("span",{class:"pd-label"},"最大宽度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxWidth,min:1,max:200,placeholder:"默认","onUpdate:modelValue":p[5]||(p[5]=S=>{t.element.options.maxWidth=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-max-width")]]),e.withDirectives(e.createElementVNode("div",$r,[p[20]||(p[20]=e.createElementVNode("span",{class:"pd-label"},"最大高度 (mm)",-1)),e.createVNode(de,{"model-value":t.element.options.maxHeight,min:1,max:200,placeholder:"默认","onUpdate:modelValue":p[6]||(p[6]=S=>{t.element.options.maxHeight=S??void 0,V()})},null,8,["model-value"])],512),[[e.vShow,z("cd-max-height")]])],32)]),_:1}))}}),Tr={class:"pd-dialog pd-dialog-large",role:"dialog","aria-modal":"true","aria-labelledby":"expression-editor-title"},Mr={class:"pd-dialog-header"},zr={class:"expression-editor"},Ar={class:"ee-nav"},Pr={class:"ee-nav-tabs"},Rr={class:"ee-content"},Lr={class:"ee-content-search"},Ir=["placeholder"],Ur={class:"ee-content-list"},Fr={class:"ee-field-group-icon"},Or=["onDblclick"],Hr={class:"ee-field-info"},Wr={class:"ee-item-label"},Gr={class:"ee-item-key"},qr={key:0,class:"pd-empty"},Kr=["onDblclick"],jr={class:"ee-field-info"},Yr={class:"ee-item-label"},Xr={class:"ee-item-key"},Zr={class:"ee-func-group"},Jr=["onDblclick"],Qr={class:"ee-field-info"},_r={class:"ee-item-label"},es={class:"ee-item-key"},ts={class:"ee-func-group"},os=["onDblclick"],ns={class:"ee-field-info"},ls={class:"ee-item-label"},as={class:"ee-item-key"},is={class:"ee-func-group"},rs=["onDblclick"],ss={class:"ee-field-info"},ds={class:"ee-item-label"},cs={class:"ee-item-key"},us={class:"ee-editor"},ms={class:"ee-editor-section"},ps={class:"ee-editor-section"},vs={class:"pd-dialog-footer"},fs=e.defineComponent({__name:"ExpressionEditor",props:{modelValue:{type:Boolean},expression:{},fields:{}},emits:["update:modelValue","update:expression"],setup(t,{emit:l}){const o=t,n=l,i=e.computed({get:()=>o.modelValue,set:q=>n("update:modelValue",q)}),c=e.ref("field"),r=e.computed(()=>{switch(c.value){case"field":return"搜索字段...";case"variable":return"搜索变量...";case"function":return"搜索函数...";default:return"搜索..."}}),a=e.ref(""),s=e.computed(()=>h.filterGroups(h.groupFields(o.fields??[]),a.value));e.watch(i,q=>{q&&(p.value=o.expression||"")});function m(q){const{insideParens:E}=d();U(E?q.fieldKey:`{${q.fieldKey}}`)}function u(q){const{insideParens:E}=d();U(E?q.template.replace(/^\{|\}$/g,""):q.template)}function g(q){const{insideBlock:E}=d(),T=E?q.template:`{${q.template}}`,b=T.indexOf("(")+1;U(T,b)}function d(){const E=S.value?.selectionStart??p.value.length,T=p.value.substring(0,E);let b=!1;const $=T.lastIndexOf("{");$!==-1&&!T.slice($+1).includes("}")&&(b=!0);let M=!1;const L=T.lastIndexOf("(");return L!==-1&&!T.slice(L+1).includes(")")&&(M=!0),{insideBlock:b,insideParens:M}}const f=e.computed(()=>{if(!a.value.trim())return Z;const q=a.value.trim().toLowerCase();return Z.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),z=e.computed(()=>{if(!a.value.trim())return O;const q=a.value.trim().toLowerCase();return O.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),V=e.computed(()=>{if(!a.value.trim())return oe;const q=a.value.trim().toLowerCase();return oe.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),N=e.computed(()=>{if(!a.value.trim())return ee;const q=a.value.trim().toLowerCase();return ee.filter(E=>E.label.toLowerCase().includes(q)||E.name.toLowerCase().includes(q))}),p=e.ref(o.expression||""),S=e.ref(null);e.watch(()=>o.expression,q=>{p.value=q||""});const O=[{name:"SUM",label:"求和",template:"SUM()"},{name:"AVG",label:"平均值",template:"AVG()"},{name:"COUNT",label:"计数",template:"COUNT()"},{name:"MIN",label:"最小值",template:"MIN()"},{name:"MAX",label:"最大值",template:"MAX()"}],oe=[{name:"ADD",label:"相加",template:"ADD()"},{name:"SUB",label:"相减",template:"SUB()"},{name:"MUL",label:"相乘",template:"MUL()"},{name:"DIV",label:"相除",template:"DIV()"},{name:"ROUND",label:"四舍五入",template:"ROUND()"},{name:"ROUNDUP",label:"进一法",template:"ROUNDUP()"},{name:"ROUNDDOWN",label:"去尾法",template:"ROUNDDOWN()"},{name:"ROUNDBANK",label:"四舍六入五成双",template:"ROUNDBANK()"}],ee=[{name:"MONEY",label:"金额格式化",template:"MONEY()"},{name:"DATE",label:"日期格式化",template:"DATE()"},{name:"UPPER",label:"大写金额",template:"UPPER()"},{name:"IF",label:"条件判断",template:"IF()"}],Z=[{name:"pageIndex",label:"当前页码",template:"{pageIndex}"},{name:"totalPages",label:"总页数",template:"{totalPages}"},{name:"printDate",label:"打印日期",template:"{printDate}"},{name:"printTime",label:"打印时间",template:"{printTime}"}],y=e.computed(()=>{if(!p.value.trim())return"(输入表达式后预览)";try{const q={...h.DEFAULT_DEMO_DATA,...be.resolveSystemVariables()},E=h.evaluateTemplate(p.value,q);return E==null?"(无法计算)":String(E)}catch{return"(表达式错误)"}});function U(q,E=q.length){const T=S.value;if(!T){p.value+=q;return}const b=T.selectionStart,$=T.selectionEnd,M=p.value.substring(0,b),L=p.value.substring($);p.value=M+q+L;const J=b+E;e.nextTick(()=>{T.focus(),T.selectionStart=T.selectionEnd=J})}function Y(){n("update:expression",p.value),i.value=!1}return(q,E)=>i.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"pd-dialog-overlay",onKeydown:E[7]||(E[7]=e.withKeys(T=>i.value=!1,["esc"]))},[e.createElementVNode("section",Tr,[e.createElementVNode("header",Mr,[E[8]||(E[8]=e.createElementVNode("strong",{id:"expression-editor-title"},"编辑表达式",-1)),e.createElementVNode("button",{type:"button",class:"pd-close","aria-label":"关闭",onClick:E[0]||(E[0]=T=>i.value=!1)},"×")]),e.createElementVNode("div",zr,[e.createElementVNode("div",Ar,[E[9]||(E[9]=e.createElementVNode("div",{class:"ee-nav-title"},"类型",-1)),e.createElementVNode("div",Pr,[e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="field"}]),onClick:E[1]||(E[1]=T=>c.value="field")}," 📁 字段 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="variable"}]),onClick:E[2]||(E[2]=T=>c.value="variable")}," 🔧 变量 ",2),e.createElementVNode("div",{class:e.normalizeClass(["ee-nav-tab",{active:c.value==="function"}]),onClick:E[3]||(E[3]=T=>c.value="function")}," ⚡ 函数 ",2)])]),e.createElementVNode("div",Rr,[e.createElementVNode("div",Lr,[e.withDirectives(e.createElementVNode("input",{class:"pd-input","onUpdate:modelValue":E[4]||(E[4]=T=>a.value=T),placeholder:r.value},null,8,Ir),[[e.vModelText,a.value]])]),e.createElementVNode("div",Ur,[c.value==="field"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,T=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:T.key||"_top"},[T.key?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ee-field-group",{"is-list":T.isList}])},[e.createElementVNode("span",Fr,e.toDisplayString(T.isList?"📋":"📁"),1),e.createElementVNode("span",null,e.toDisplayString(T.label),1)],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.fields,b=>(e.openBlock(),e.createElementBlock("div",{key:b.fieldKey,class:"ee-list-item ee-field-item",style:e.normalizeStyle({paddingLeft:T.key?"22px":"10px"}),onDblclick:$=>m(b)},[e.createElementVNode("div",Hr,[e.createElementVNode("span",Wr,e.toDisplayString(b.fieldLabel),1),e.createElementVNode("span",Gr,e.toDisplayString(b.fieldKey),1)])],44,Or))),128))],64))),128)),s.value.length===0?(e.openBlock(),e.createElementBlock("p",qr,"暂无字段")):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),c.value==="variable"?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(f.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>u(T)},[e.createElementVNode("div",jr,[e.createElementVNode("span",Yr,e.toDisplayString(T.label),1),e.createElementVNode("span",Xr,e.toDisplayString(T.template),1)])],40,Kr))),128)):e.createCommentVNode("",!0),c.value==="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",Zr,[E[10]||(E[10]=e.createElementVNode("div",{class:"ee-func-group-title"},"聚合函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",Qr,[e.createElementVNode("span",_r,e.toDisplayString(T.label),1),e.createElementVNode("span",es,e.toDisplayString(T.name)+"()",1)])],40,Jr))),128))]),e.createElementVNode("div",ts,[E[11]||(E[11]=e.createElementVNode("div",{class:"ee-func-group-title"},"数值运算",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",ns,[e.createElementVNode("span",ls,e.toDisplayString(T.label),1),e.createElementVNode("span",as,e.toDisplayString(T.name)+"()",1)])],40,os))),128))]),e.createElementVNode("div",is,[E[12]||(E[12]=e.createElementVNode("div",{class:"ee-func-group-title"},"格式化函数",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,T=>(e.openBlock(),e.createElementBlock("div",{key:T.name,class:"ee-list-item",onDblclick:b=>g(T)},[e.createElementVNode("div",ss,[e.createElementVNode("span",ds,e.toDisplayString(T.label),1),e.createElementVNode("span",cs,e.toDisplayString(T.name)+"()",1)])],40,rs))),128))])],64)):e.createCommentVNode("",!0)])]),e.createElementVNode("div",us,[e.createElementVNode("div",ms,[E[13]||(E[13]=e.createElementVNode("div",{class:"ee-editor-title"},"表达式编辑",-1)),e.withDirectives(e.createElementVNode("textarea",{ref_key:"textareaRef",ref:S,"onUpdate:modelValue":E[5]||(E[5]=T=>p.value=T),class:"ee-textarea",rows:"6",placeholder:"双击左侧字段/变量/函数插入,或直接输入静态内容"},null,512),[[e.vModelText,p.value]])]),e.createElementVNode("div",ps,[E[14]||(E[14]=e.createElementVNode("div",{class:"ee-editor-title"},"预览结果",-1)),e.createElementVNode("div",{class:e.normalizeClass(["ee-preview",{"ee-preview-error":y.value==="(表达式错误)"}])},e.toDisplayString(y.value),3)]),E[15]||(E[15]=e.createStaticVNode('<div class="ee-help-section" data-v-f3837718><div class="ee-help-title" data-v-f3837718>帮助信息</div><div class="ee-help-grid" data-v-f3837718><div class="ee-help-card ee-help-field" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>输入方式</div><div class="ee-help-card-content" data-v-f3837718> 双击左侧字段、变量、函数即可插入到表达式输入框中<br data-v-f3837718> 静态数据直接输入即可,如:供应商名称<br data-v-f3837718> 动态解析字段、变量、函数必须用 {} 包裹<br data-v-f3837718> 示例:{SUM(supplier.name)}<br data-v-f3837718> 注意:只能嵌套一层 </div></div><div class="ee-help-card ee-help-function" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>函数使用</div><div class="ee-help-card-content" data-v-f3837718> SUM(字段) - 求和<br data-v-f3837718> AVG(字段) - 平均值<br data-v-f3837718> COUNT(字段) - 计数<br data-v-f3837718> IF(条件, 真值, 假值) - 条件判断<br data-v-f3837718> 四则运算:{qty * price}、{ADD(qty, 1)}<br data-v-f3837718> 修约:ROUND 四舍五入 / ROUNDUP 进一 / ROUNDDOWN 去尾 / ROUNDBANK 四舍六入五成双 </div></div><div class="ee-help-card ee-help-variable" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>系统变量</div><div class="ee-help-card-content" data-v-f3837718> {pageIndex} - 当前页码<br data-v-f3837718> {totalPages} - 总页数<br data-v-f3837718> {printDate} - 打印日期 </div></div><div class="ee-help-card ee-help-conditional" data-v-f3837718><div class="ee-help-card-title" data-v-f3837718>示例</div><div class="ee-help-card-content" data-v-f3837718> 静态文本:供应商名称<br data-v-f3837718> 动态字段:{supplier.name}<br data-v-f3837718> 函数调用:{SUM(amount)}<br data-v-f3837718> 条件判断:{IF(amount&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:`
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
- `},Cu={id:"features",title:"功能说明",content:`
46
+ `},Nm={id:"features",title:"功能说明",content:`
47
47
  <h2>元素类型</h2>
48
48
  <table>
49
49
  <thead>
@@ -54,7 +54,7 @@
54
54
  <tr><td>长文本</td><td>多行文本,支持自动换行</td></tr>
55
55
  <tr><td>数据表格</td><td>动态行列,支持分页、表头重复、序号/小计/汇总</td></tr>
56
56
  <tr><td>条形码</td><td>支持 code128 等多种码制</td></tr>
57
- <tr><td>二维码</td><td>支持 L/M/Q/H 纠错级别</td></tr>
57
+ <tr><td>二维码</td><td>支持 L/M/Q/H 纠错级别;「静区 (模块)」控制四周白边(0~8,默认 0=码面等比铺满元素框),需 ISO 推荐静区时填 4</td></tr>
58
58
  <tr><td>图片</td><td>静态或动态图片</td></tr>
59
59
  <tr><td>线条</td><td>水平线或垂直线</td></tr>
60
60
  <tr><td>形状</td><td>矩形、椭圆,支持边框和背景色</td></tr>
@@ -214,7 +214,7 @@
214
214
  <li>支持调节水印密度(密/中/疏/自定义瓦片尺寸),以及设置水印颜色</li>
215
215
  <li>水印在画布、浏览器预览、服务端 PDF、静默打印四端渲染一致</li>
216
216
  </ul>
217
- `},Su={id:"shortcuts",title:"快捷键",content:`
217
+ `},wm={id:"shortcuts",title:"快捷键",content:`
218
218
  <h2>常用操作</h2>
219
219
  <table>
220
220
  <thead>
@@ -284,7 +284,7 @@
284
284
  <blockquote>
285
285
  <p><strong>注意</strong>:当焦点在输入框、文本框、下拉框内时,快捷键不生效。</p>
286
286
  </blockquote>
287
- `},xu={id:"faq",title:"常见问题",content:`
287
+ `},Cm={id:"faq",title:"常见问题",content:`
288
288
  <h2>如何调整纸张大小?</h2>
289
289
  <ol>
290
290
  <li>在右侧面板选择"页面设置"</li>
@@ -410,7 +410,54 @@
410
410
  <blockquote>
411
411
  <p><strong>提示</strong>:水印配置保存在模板 JSON 的 <code>watermark</code> 字段中,仅对当前模板生效。</p>
412
412
  </blockquote>
413
- `},$u={id:"changelog",title:"更新记录",content:`
413
+ `},Sm={id:"changelog",title:"更新记录",content:`
414
+ <h2>V1.3.8<small>(2026-10-22)</small></h2>
415
+
416
+ <h3>新增</h3>
417
+ <ul>
418
+ <li><strong>图片裁剪取位可视化</strong>:属性台改为「位置档 + 数字框 + 原图示意」,红框就是最终打印出来的画面,换档或改数字时同步移动;有图时只显示真正能挪的方向,两个方向都能挪才给九宫格。缩放模式里的「覆盖」统一改叫「剪裁(等比铺满后裁边)」。</li>
419
+ <li><strong>裁剪放大比例</strong>:图与框比例相同时,铺满后其实没有可裁的边;填 100~400 的放大比例把画面再推大,才能裁出顶部 / 底部或左右。不填即保持原样。</li>
420
+ </ul>
421
+
422
+ <h3>变更</h3>
423
+ <ul>
424
+ <li><strong>锚点只在「剪裁」档出现</strong>:包含、拉伸填满、原始尺寸、缩小四档不再显示锚点与放大比例。</li>
425
+ <li><strong>表格图片单元格剪裁后行高会变</strong>:选「剪裁」时图片不再把行撑高,按声明行高出纸;取顶 / 取底会真的裁到画面。既有模板若用了这一档,升级后请复核行高。</li>
426
+ </ul>
427
+
428
+ <h3>修复</h3>
429
+ <ul>
430
+ <li><strong>大写金额的万 / 亿不再丢失</strong>:超过一万的金额会正确写出「万 / 亿」;角位为 0 而分位非 0 时补「零」,不足一元保留「元」位。</li>
431
+ <li><strong>字体下拉不再撑乱页面</strong>:展开候选时改为浮层,顶栏、属性台不再被撑高或错位,空间不足时向上翻。</li>
432
+ <li><strong>表格与横竖线不再被误拆页</strong>:单页模板不会因为竖线占用高度被拆成两页,元素回到设计位置;表格跟随区的数据驱动位移仍在处理中。</li>
433
+ <li><strong>裁剪示意更可信</strong>:图片未设置或表达式还没求值时显示示例图并说明;换图、加载失败不再沿用上一张图的可挪量,示意框也不再被拉成横条。</li>
434
+ </ul>
435
+
436
+ <h2>V1.3.7<small>(2026-10-19)</small></h2>
437
+
438
+ <h3>新增</h3>
439
+ <ul>
440
+ <li><strong>两端对齐</strong>:文本元素和表格单元格都能选「两端」,一行字会均匀铺开、左右两头都贴齐边界(含最后一行)。想撑满列宽的表头、签字栏不必再手动加空格。</li>
441
+ <li><strong>长文本首行缩进</strong>:按「字符」填写,2 就是常规的「缩进两个字符」,字号变小时缩进也跟着变窄。</li>
442
+ <li><strong>图片缩放模式与裁剪锚点</strong>:可拉伸铺满或等比裁切,并指定保住哪一侧(证件照保住头顶);表格里的图片单元格同样能设锚点。</li>
443
+ <li><strong>二维码静区(模块)</strong>:可填 0~8 控制码面四周留白,0 即码面等比铺满元素框;需要扫码合规白边时填 4。</li>
444
+ <li><strong>工具栏自适应收纳</strong>:窗口变窄放不下时按钮组自动收进「更多」下拉,分组标题与图标形态都保留,不再出现按钮文字竖排压住画布。</li>
445
+ </ul>
446
+
447
+ <h3>修复</h3>
448
+ <ul>
449
+ <li><strong>二维码不再小一圈</strong>:此前二维码按固定尺寸出图,元素框一旦偏大就明显填不满,缩放框体也没用(24mm 框看不出来,60mm 框只画约三分之二)。现在等比铺满元素框与单元格,反复改框大小也不会重画发虚。</li>
450
+ <li><strong>图片缩放模式出纸时生效</strong>:以前只有画布按所选模式显示,预览、导出 PDF 与桌面客户端出纸都被固定成「完整显示」,现在四条链路一致。</li>
451
+ <li><strong>桌面客户端出纸更准</strong>:改走与浏览器打印同一条通路,纸张按设计器算出的实际毫米下发(60×40 / 80×60 / 100×80 mm 实测落盘尺寸精确一致、内容正立),Windows 不再需要额外安装外部打印工具。</li>
452
+ <li><strong>属性台控件跟随主题</strong>:输入框、下拉、弹层、右键菜单与滚动条统一接入主题变量,浅色外观逐像素不变,换深色不再出现白色死角;说明气泡在部分宿主下被拉成超宽长条,已修正。</li>
453
+ </ul>
454
+
455
+ <h3>注意</h3>
456
+ <ul>
457
+ <li><strong>二维码留白变少</strong>:静区缺省由固定 4 模块改为 0,既有模板的码面占框比例会变大(铺满元素框)。要保留原来的白边,请把「静区 (模块)」填成 4。</li>
458
+ <li><strong>桌面客户端设置项调整</strong>:「出纸方式」配置项已取消,出纸固定走新通路;Windows / Linux 不再显示顶部应用菜单(文本框里的复制粘贴快捷键不受影响)。</li>
459
+ </ul>
460
+
414
461
  <h2>V1.3.6<small>(2026-10-16)</small></h2>
415
462
 
416
463
  <h3>修复</h3>
@@ -632,4 +679,4 @@
632
679
  <blockquote>
633
680
  <p>完整更新记录请查阅仓库 <code>docs/中文/CHANGELOG.md</code> 与 <code>docs/en/CHANGELOG.en.md</code>。</p>
634
681
  </blockquote>
635
- `},Bu=[wu,Cu,Su,xu,$u],Du={class:"help-modal"},Tu={class:"help-modal-header"},Mu={class:"help-modal-body"},zu={class:"help-modal-sidebar"},Au=["onClick"],Pu={class:"help-modal-content"},Ru=["innerHTML"],ut="worm-print-help-tab",Lu=e.defineComponent({__name:"HelpModal",props:{visible:{type:Boolean},initialTab:{default:"getting-started"}},emits:["close","update:tab"],setup(o,{emit:r}){const t=o,s=r,n=Bu,l=e.ref(t.initialTab);e.onMounted(()=>{const m=localStorage.getItem(ut);m&&n.some(c=>c.id===m)&&(l.value=m)}),e.watch(()=>t.visible,m=>{if(m){const c=localStorage.getItem(ut);c&&n.some(f=>f.id===c)&&(l.value=c)}});function a(m){l.value=m,localStorage.setItem(ut,m),s("update:tab",m)}const i=e.computed(()=>n.find(c=>c.id===l.value)?.content||"");function d(m){m.key==="Escape"&&t.visible&&s("close")}return e.onMounted(()=>{document.addEventListener("keydown",d)}),e.onUnmounted(()=>{document.removeEventListener("keydown",d)}),(m,c)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.Transition,{name:"help-modal"},{default:e.withCtx(()=>[o.visible?(e.openBlock(),e.createElementBlock("div",{key:0,class:"help-modal-overlay",onClick:c[1]||(c[1]=e.withModifiers(f=>m.$emit("close"),["self"]))},[e.createElementVNode("div",Du,[e.createElementVNode("div",Tu,[c[2]||(c[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:c[0]||(c[0]=f=>m.$emit("close"))}," × ")]),e.createElementVNode("div",Mu,[e.createElementVNode("div",zu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n),f=>(e.openBlock(),e.createElementBlock("button",{key:f.id,class:e.normalizeClass(["help-tab",{active:l.value===f.id}]),onClick:g=>a(f.id)},e.toDisplayString(f.title),11,Au))),128))]),e.createElementVNode("div",Pu,[e.createElementVNode("div",{class:"help-content",innerHTML:i.value},null,8,Ru)])])])])):e.createCommentVNode("",!0)]),_:1})]))}}),Uu=ce(Lu,[["__scopeId","data-v-31115934"]]),Iu={class:"page-tabs-list"},Fu=["onBlur","onKeydown"],Hu=["data-tip","onClick","onDblclick"],Ou={class:"page-tabs-actions"},Wu=["data-tip","disabled"],Gu=["data-tip","disabled"],Ku=["data-tip","disabled"],qu=["data-tip","disabled"],Yu=["data-tip","disabled"],ju=e.defineComponent({__name:"PageTabs",props:{pages:{},activeIndex:{},multi:{type:Boolean},tilingEnabled:{type:Boolean}},emits:["select","add","duplicate","delete","rename","move"],setup(o,{emit:r}){const t=o,s=r,n=e.ref(-1),l=e.ref(""),a=e.computed(()=>t.pages[t.activeIndex]?.name||`页面 ${t.activeIndex+1}`),i=e.computed(()=>t.tilingEnabled?mt:"新增页面(在当前页后追加空白页)"),d=e.computed(()=>t.tilingEnabled?mt:`复制当前页「${a.value}」`);function m(B){n.value=B,l.value=t.pages[B]?.name??""}function c(B){if(n.value!==B)return;const _=l.value.trim();_&&s("rename",B,_),n.value=-1}function f(){n.value=-1}const g=e.ref(null);let h=null;function R(B){const _=B.dataset.tip;if(!_)return;const ne=B.getBoundingClientRect(),G=Math.min(Math.max(ne.left+ne.width/2,80),window.innerWidth-80);g.value={text:_,x:G,y:ne.bottom+6}}function C(B){const _=B.target.closest?.("[data-tip]");_&&(h&&clearTimeout(h),h=setTimeout(()=>R(_),300))}function v(B){const _=B.target.closest?.("[data-tip]");_&&B.relatedTarget?.closest?.("[data-tip]")===_||p()}function p(){h&&(clearTimeout(h),h=null),g.value=null}return e.onUnmounted(p),(B,_)=>(e.openBlock(),e.createElementBlock("div",{class:"page-tabs",onMouseover:C,onMouseout:v,onMouseleave:p},[e.createElementVNode("div",Iu,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.pages,(ne,G)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:G},[n.value===G?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":_[0]||(_[0]=J=>l.value=J),class:"page-tab-rename","data-test":"page-rename-input",onBlur:J=>c(G),onKeydown:[e.withKeys(J=>c(G),["enter"]),e.withKeys(f,["esc"])]},null,40,Fu)),[[e.vModelText,l.value]]):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["page-tab",{active:G===o.activeIndex}]),"data-tip":ne.name?`${ne.name}(双击重命名)`:"双击重命名",onClick:J=>B.$emit("select",G),onDblclick:J=>m(G)},e.toDisplayString(ne.name||`页面 ${G+1}`),43,Hu))],64))),128))]),e.createElementVNode("div",Ou,[e.createElementVNode("button",{"data-test":"add-page","data-tip":i.value,disabled:o.tilingEnabled,onClick:_[1]||(_[1]=ne=>B.$emit("add"))},"+",8,Wu),e.createElementVNode("button",{"data-test":"duplicate-page","data-tip":d.value,disabled:o.tilingEnabled,onClick:_[2]||(_[2]=ne=>B.$emit("duplicate"))},"⧉",8,Gu),e.createElementVNode("button",{"data-test":"delete-page","data-tip":o.multi?`删除当前页「${a.value}」`:"仅多页面模板可删除页面",disabled:!o.multi,onClick:_[3]||(_[3]=ne=>B.$emit("delete",o.activeIndex))},"✕",8,Ku),e.createElementVNode("button",{"data-test":"move-left","data-tip":`前移「${a.value}」`,disabled:o.activeIndex<=0,onClick:_[4]||(_[4]=ne=>B.$emit("move",o.activeIndex,o.activeIndex-1))},"←",8,qu),e.createElementVNode("button",{"data-test":"move-right","data-tip":`后移「${a.value}」`,disabled:o.activeIndex>=o.pages.length-1,onClick:_[5]||(_[5]=ne=>B.$emit("move",o.activeIndex,o.activeIndex+1))},"→",8,Yu)]),g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"page-tabs-tip",style:e.normalizeStyle({left:`${g.value.x}px`,top:`${g.value.y}px`})},e.toDisplayString(g.value.text),5)):e.createCommentVNode("",!0)],32))}}),Xu=ce(ju,[["__scopeId","data-v-f1c7a18e"]]),Dt="print-studio:left",Tt="print-studio:right";function Mt(o,r){try{const t=localStorage.getItem(o);return t===null?r:t==="1"}catch{return r}}function Zu(){const o=e.ref(Mt(Dt,!1)),r=e.ref(Mt(Tt,!1)),t=e.ref(!1);e.watch(o,a=>{try{localStorage.setItem(Dt,a?"1":"0")}catch{}},{flush:"sync"}),e.watch(r,a=>{try{localStorage.setItem(Tt,a?"1":"0")}catch{}},{flush:"sync"});function s(){o.value=!o.value}function n(){r.value=!r.value}function l(){t.value=!1}return{leftCollapsed:o,rightCollapsed:r,toggleLeft:s,toggleRight:n,dirty:t,markSaved:l}}const Ju={class:"designer-body"},Qu=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(o,{expose:r,emit:t}){const s=o,n=t,l=e.ref(!1);e.watch(()=>s.showHelp,X=>{X===!1&&(l.value=!1)});const{leftCollapsed:a,rightCollapsed:i,toggleLeft:d,toggleRight:m,dirty:c,markSaved:f}=Zu(),{scale:g,showRuler:h,showGrid:R,snapToGrid:C,showTableGhostBorder:v,templateData:p,elements:B,fields:_,tilingEnabled:ne,selectedIds:G,selectedElement:J,selectedElements:b,select:W,selectElement:j,clearSelection:U,selectAll:y,previewIds:M,setPreview:N,commitPreview:O,hasClipboard:A,copy:k,paste:z,cutSelected:u,canUndo:x,canRedo:Y,undo:be,redo:ge,alignSelected:fe,groupSelected:se,ungroupSelected:q,deleteSelected:S,dragStart:D,dragStop:K,addElement:Z,addFieldElement:te,moveLayer:pe,updateTemplateData:T,getTemplateJson:$,loadTemplate:I,pages:ee,activePageIndex:oe,switchPage:ue,addPage:L,duplicatePage:F,deletePage:V,renamePage:w,movePage:P,tableSelection:ae,setTableSelection:me,recordHistory:ye}=Yt({initialTemplate:s.initialTemplate,initialElements:s.initialElements,initialFields:s.fields}),we=jt({elements:B,selectedIds:G,tableSelection:ae,recordHistory:ye}),xe=Zt({elements:B,selectedIds:G,recordHistory:ye}),Re=e.computed(()=>xe.active.value);e.watch([B,p],()=>{c.value=!0},{deep:!0});const _e=e.computed(()=>b.value.some(X=>!!X.options.groupId)),{guides:Oe,addGuide:et,moveGuide:tt,removeGuide:ot}=Qt(p,ye),nt=e.computed(()=>{const X=p.value,{width:Q}=E.getPaperDimensions(X);return Q-X.margins.left-X.margins.right});e.provide(He,{tableSelection:ae,setTableSelection:me,recordHistory:ye,maxTableWidth:nt}),e.provide(Je,G),e.provide(Pt,M),e.provide(vt,e.computed(()=>s.uploadImage)),e.provide(ft,e.computed(()=>s.uploadDesignBackground));const{catalog:lt}=eo(e.computed(()=>s.fonts));e.provide(gt,lt),ao(e.computed(()=>he.buildFontFaceCss(s.fonts)));function We(){const X=$();return s.fonts?.length?Array.isArray(X.pages)?{...X,pages:X.pages.map(Q=>({...Q,fonts:[...s.fonts]}))}:{...X,fonts:[...s.fonts]}:X}e.watch(J,X=>{(!X||X.printElementType.type!=="table")&&me(null)});const Me=e.ref(null),Ge=e.ref(null);function at(X){Ge.value=X}const it=e.computed(()=>{const X=p.value,Q=E.getPaperDimensions(X),ve=X.orientation==="landscape"?"横向":"纵向",De=`${E.PAPER_PRESETS[X.paperSize]?.label??X.paperSize} ${ve} ${Math.round(Q.width)}×${Math.round(Q.height)}mm`,Te=X.outputRotation;return Te?`${De}(旋转${Te}°)`:De});function Ke(){const X=Me.value?.$el;if(X){const Q=getComputedStyle(X),ve=parseFloat(Q.paddingLeft)+parseFloat(Q.paddingRight),Ve=parseFloat(Q.paddingTop)+parseFloat(Q.paddingBottom),De=E.getPaperDimensions(p.value),Te=96/25.4,Ue=E.computeFitScale(X.clientWidth-ve,X.clientHeight-Ve,De.width*Te,De.height*Te);Me.value?.fitToWindow(Ue)}}function rt(X){g.value=Math.max(E.FIT_SCALE_MIN_PERCENT,g.value+X)}function st(X){Me.value?.zoomByStep(X>0?1:-1)}function H(X){const Q=X.target.tagName;Q==="INPUT"||Q==="TEXTAREA"||Q==="SELECT"||(X.ctrlKey||X.metaKey)&&X.key==="0"&&(X.preventDefault(),Ke())}e.onMounted(()=>document.addEventListener("keydown",H)),e.onUnmounted(()=>document.removeEventListener("keydown",H));function le(X){const Q=p.value.header.height,ve=p.value.footer.height;T(X),X.header.height<Q&&Se("header"),X.footer.height<ve&&Se("footer")}function de(X,Q){p.value={...p.value,[X]:{...p.value[X],height:Q}}}function ke(X){T({...p.value}),Se(X)}function Se(X){const Q=E.getZoneRects(p.value)[X];B.value.some(Ve=>Ve.zone===X&&(Ve.options.top+Ve.options.height>Q.height||Ve.options.left+Ve.options.width>Q.width))&&alert(`${X==="header"?"页眉":"页脚"}高度已小于区域内元素,请手动调整元素位置`)}const Ee=j;function Be(X){const Q=B.value.find(ve=>ve.id===X);Q&&(Q.options.visible=Q.options.visible===!1)}function ze(X){const Q=B.value.find(ve=>ve.id===X);Q&&(Q.options.locked=!Q.options.locked)}const Ae=e.ref("page");e.watch(J,X=>{Ae.value=X?"element":"page"});const Rt={text:"formatter",longText:"formatter",barcode:"formatter",qrcode:"formatter",image:"src"},Le=e.ref(!1),qe=e.ref(null),dt=e.ref("");function Lt(X){const Q=B.value.find(Ve=>Ve.id===X);if(!Q||(W(X,!1),Ae.value="element",Q.options.locked))return;const ve=Rt[Q.printElementType.type];ve&&(qe.value={kind:"element",element:Q,field:ve},dt.value=Q.options[ve]||"",Le.value=!0)}function Ut(X,Q,ve){const Ve=B.value.find(Ot=>Ot.id===X);if(!Ve||(W(X,!1),Ae.value="element",Ve.options.locked))return;const De=Ve.options.tableRows??[],Te=E.findMainCell(De,Q,ve),Ue=De[Te.r]?.cells[Te.c];Ue&&(qe.value={kind:"cell",cell:Ue},dt.value=Ue.formatter||"",Le.value=!0)}function It(X){const Q=qe.value;Q?.kind==="element"?Q.element.options[Q.field]=X||void 0:Q?.kind==="cell"&&(Q.cell.formatter=X||void 0),ye(),Le.value=!1,qe.value=null}function Ft(X,Q){B.value.push(X),W(X.id,!1),ye()}e.watch(()=>s.initialTemplate,X=>{X&&I(X,s.initialElements)}),e.watch(()=>s.initialElements,X=>{X&&!s.initialTemplate&&(p.value={...p.value,elements:X.map(Q=>({...Q,options:{...Q.options},printElementType:{...Q.printElementType}}))})}),e.watch(()=>s.fields,X=>{_.value=X||[]});const Et=e.computed(()=>{const X=p.value;return X?.tiling?.enabled!==!0?[]:he.validateTiling(X)});r({getTemplateJson:We,validateTemplate:()=>Et.value});function Ht(){const X=Et.value;if(X.length){alert(X[0].message),Ae.value="page";return}const Q=We();if(Array.isArray(Q.pages))try{he.normalizeTemplate(Q)}catch(ve){alert(ve instanceof Error?ve.message:String(ve));return}n("save",JSON.stringify(Q)),f()}return(X,Q)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["designer-container",{"format-painting":Re.value}])},[e.createVNode(Yo,{"is-edit":o.isEdit,"can-undo":e.unref(x),"can-redo":e.unref(Y),"has-multi-selection":e.unref(G).size>=2,"has-selection":e.unref(G).size>=1,"show-ruler":e.unref(h),"show-grid":e.unref(R),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(v),"selected-element-has-group":_e.value,"show-help":o.showHelp!==!1,"clipboard-disabled":e.unref(we).context.value!=="elements","has-clipboard":e.unref(A),scale:e.unref(g),"onUpdate:scale":Q[0]||(Q[0]=ve=>e.isRef(g)?g.value=ve:null),onPreview:Q[1]||(Q[1]=ve=>X.$emit("preview")),onSave:Ht,onUndo:e.unref(be),onRedo:e.unref(ge),onAlign:Q[2]||(Q[2]=ve=>e.unref(fe)(ve)),onMoveLayer:e.unref(pe),onToggleRuler:Q[3]||(Q[3]=ve=>h.value=!e.unref(h)),onToggleGrid:Q[4]||(Q[4]=ve=>R.value=!e.unref(R)),onToggleSnap:Q[5]||(Q[5]=ve=>C.value=!e.unref(C)),onToggleTableGhostBorder:Q[6]||(Q[6]=ve=>v.value=!e.unref(v)),onGroup:e.unref(se),onUngroup:e.unref(q),onFitWindow:Ke,onZoom:st,onHelp:Q[7]||(Q[7]=ve=>l.value=!0),onCopy:e.unref(k),onPaste:e.unref(z),onDelete:e.unref(S)},{default:e.withCtx(()=>[e.createVNode(Un,{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(Xu,{pages:e.unref(ee),"active-index":e.unref(oe),multi:e.unref(ee).length>1,"tiling-enabled":e.unref(ne),onSelect:e.unref(ue),onAdd:e.unref(L),onDuplicate:e.unref(F),onDelete:e.unref(V),onRename:e.unref(w),onMove:e.unref(P)},null,8,["pages","active-index","multi","tiling-enabled","onSelect","onAdd","onDuplicate","onDelete","onRename","onMove"]),e.createElementVNode("div",Ju,[e.createVNode(bl,{fields:e.unref(_),elements:e.unref(B),"selected-ids":e.unref(G),collapsed:e.unref(a),onSelect:e.unref(Ee),onMoveLayer:e.unref(pe),onGroup:e.unref(se),onUngroup:e.unref(q),onToggleVisible:Be,onToggleLocked:ze,onToggleCollapse:e.unref(d)},null,8,["fields","elements","selected-ids","collapsed","onSelect","onMoveLayer","onGroup","onUngroup","onToggleCollapse"]),e.createVNode(Ra,{ref_key:"canvasAreaRef",ref:Me,"template-data":e.unref(p),elements:e.unref(B),scale:e.unref(g)/100,"show-ruler":e.unref(h),"show-grid":e.unref(R),"snap-to-grid":e.unref(C),"show-table-ghost-border":e.unref(v),"has-clipboard":e.unref(A),guides:e.unref(Oe),onSelect:e.unref(Ee),onDropElement:e.unref(Z),onDropField:e.unref(te),onDragStart:e.unref(D),onDragStop:e.unref(K),onDblclickElement:Lt,onDblclickCell:Ut,onZoneHeightChange:de,onZoneHeightCommit:ke,onSelectAll:e.unref(y),onClearSelection:e.unref(U),onPreview:e.unref(N),onCommitPreview:e.unref(O),onPaste:e.unref(z),onCopy:e.unref(k),onCut:e.unref(u),onDelete:e.unref(S),onMoveLayer:e.unref(pe),onCoordinate:at,onAddGuide:e.unref(et),onGuideMove:e.unref(tt),onGuideRemove:e.unref(ot),onZoom:rt,onCloneElement:Ft},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(gu,{element:e.unref(J),"template-data":e.unref(p),fields:e.unref(_),"table-selection":e.unref(ae),"record-history":e.unref(ye),collapsed:e.unref(i),"multi-page":e.unref(ee).length>1,"active-tab":Ae.value,"onUpdate:activeTab":Q[8]||(Q[8]=ve=>Ae.value=ve),onDeleteElement:e.unref(S),"onUpdate:templateData":le,onToggleCollapse:e.unref(m)},null,8,["element","template-data","fields","table-selection","record-history","collapsed","multi-page","active-tab","onDeleteElement","onToggleCollapse"])]),e.createVNode(Nu,{coordinate:Ge.value,scale:e.unref(g),"element-count":e.unref(B).length,"selected-count":e.unref(G).size,paper:it.value,dirty:e.unref(c)},null,8,["coordinate","scale","element-count","selected-count","paper","dirty"]),e.createVNode(Qe,{modelValue:Le.value,"onUpdate:modelValue":Q[9]||(Q[9]=ve=>Le.value=ve),fields:e.unref(_),expression:dt.value,"onUpdate:expression":It},null,8,["modelValue","fields","expression"]),e.createVNode(Uu,{visible:l.value,onClose:Q[10]||(Q[10]=ve=>l.value=!1)},null,8,["visible"])],2))}}),_u=ce(Qu,[["__scopeId","data-v-4f08a049"]]),em={class:"print-html-preview"},tm={key:0,class:"print-html-preview-error"},om={key:1,class:"print-html-preview-loading"},nm=e.defineComponent({__name:"PrintHtmlPreview",props:{templateJson:{},printData:{},baseUrl:{},fontBaseUrl:{}},emits:["rendered","error"],setup(o,{expose:r,emit:t}){const s=o,n=t,l=e.ref(),a=e.ref(!1),i=e.ref("");let d=0;async function m(){if(!s.templateJson){i.value="",a.value=!1;return}const f=++d;a.value=!0,i.value="";try{const{html:g,pageCount:h,copies:R}=await Ie.renderHtmlPages(s.templateJson,s.printData,s.baseUrl,Ie.browserCodeRenderer,{fontBaseUrl:s.fontBaseUrl});if(f!==d)return;const C=l.value?.contentWindow?.document;C&&(C.open(),C.write(g),C.close()),n("rendered",h,R)}catch(g){if(f!==d)return;i.value=g instanceof Error?g.message:"未知错误",n("error",i.value)}finally{f===d&&(a.value=!1)}}function c(){const f=l.value?.contentWindow;f&&(f.focus(),f.print())}return e.watch(()=>[s.templateJson,s.printData,s.baseUrl,s.fontBaseUrl],()=>{m()},{immediate:!0,deep:!0}),e.onBeforeUnmount(()=>{d++}),r({print:c,rerender:m}),(f,g)=>(e.openBlock(),e.createElementBlock("div",em,[i.value?(e.openBlock(),e.createElementBlock("div",tm,[e.createElementVNode("span",null,"预览渲染失败:"+e.toDisplayString(i.value),1)])):a.value?(e.openBlock(),e.createElementBlock("div",om,"预览渲染中…")):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("iframe",{ref_key:"iframeRef",ref:l,class:"print-html-preview-iframe",title:"打印预览"},null,512),[[e.vShow,!a.value&&!i.value]])]))}}),lm=ce(nm,[["__scopeId","data-v-ff7de2b5"]]);Object.defineProperty(exports,"DEFAULT_DEMO_DATA",{enumerable:!0,get:()=>E.DEFAULT_DEMO_DATA});Object.defineProperty(exports,"getDemoData",{enumerable:!0,get:()=>E.getDemoData});Object.defineProperty(exports,"browserCodeRenderer",{enumerable:!0,get:()=>Ie.browserCodeRenderer});Object.defineProperty(exports,"renderHtmlPages",{enumerable:!0,get:()=>Ie.renderHtmlPages});exports.FONT_CATALOG_KEY=gt;exports.PrintDesigner=_u;exports.PrintHtmlPreview=lm;exports.UPLOAD_DESIGN_BACKGROUND_KEY=ft;exports.UPLOAD_IMAGE_KEY=vt;exports.createDefaultTemplate=Pe;exports.toRuntimePool=Xe;
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;