@guodun/antdv 1.7.8 → 1.7.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/es/components/contract-signing-location/src/ContractSigningLocation.vue.mjs +295 -296
  2. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateChoiceOptionsEditor.mjs +5 -0
  3. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateChoiceOptionsEditor.vue.mjs +132 -0
  4. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +267 -277
  5. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.mjs +1 -1
  6. package/dist/es/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.mjs +258 -252
  7. package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +1020 -1011
  8. package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +193 -163
  9. package/dist/es/components/pro-contract-template-designer/src/extensions/template-variable.mjs +70 -68
  10. package/dist/es/components/pro-contract-template-designer/src/utils/advanced-controls.mjs +63 -25
  11. package/dist/es/components/pro-contract-template-designer/src/utils/contract-print-document.mjs +7 -1
  12. package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +158 -93
  13. package/dist/es/components/pro-contract-template-designer/src/utils/template-variable-render.mjs +45 -18
  14. package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
  15. package/dist/es/index.mjs +22 -22
  16. package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
  17. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateChoiceOptionsEditor.cjs +1 -0
  18. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateChoiceOptionsEditor.vue.cjs +1 -0
  19. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.cjs +1 -2
  20. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.cjs +1 -1
  21. package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateSingleRenderer.vue.cjs +1 -1
  22. package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
  23. package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
  24. package/dist/lib/components/pro-contract-template-designer/src/extensions/template-variable.cjs +1 -1
  25. package/dist/lib/components/pro-contract-template-designer/src/utils/advanced-controls.cjs +1 -1
  26. package/dist/lib/components/pro-contract-template-designer/src/utils/contract-print-document.cjs +7 -1
  27. package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +5 -3
  28. package/dist/lib/components/pro-contract-template-designer/src/utils/template-variable-render.cjs +1 -1
  29. package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
  30. package/dist/lib/index.cjs +1 -1
  31. package/dist/theme/icon.css +1 -1
  32. package/dist/theme/index.css +1 -1
  33. package/dist/types/components/pro-contract-template-designer/src/ContractTemplateChoiceOptionsEditor.vue.d.ts +12 -0
  34. package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +2 -0
  35. package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +5 -1
  36. package/dist/types/components/pro-contract-template-designer/src/types.d.ts +18 -2
  37. package/dist/types/components/pro-contract-template-designer/src/utils/advanced-controls.d.ts +10 -0
  38. package/dist/types/components/pro-contract-template-designer/src/utils/contract-print-document.d.ts +1 -1
  39. package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +2 -0
  40. package/dist/types/components/pro-contract-template-designer/src/utils/template-variable-render.d.ts +15 -2
  41. package/package.json +3 -3
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/image-url.cjs`),a=require(`./utils/template-renderer.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),ee=require(`./utils/signing-layout-presets.cjs`),te=require(`./utils/context-variable.cjs`),ne=require(`./utils/caret-viewport.cjs`),re=require(`./DesignerPage.cjs`),ie=require(`./TableContextMenu.cjs`),ae=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),oe=require(`./utils/template-tool-icons.cjs`),se=require(`./ContractTemplateDesignerToolbar.cjs`),ce=require(`./ContractTemplateAuthoringBar.cjs`),le=require(`./composables/use-template-authoring.cjs`),ue=require(`./ContractTemplateTextContextMenu.cjs`),de=require(`./ContractTemplateTextBubbleMenu.cjs`),fe=require(`./ContractTemplateImageContextMenu.cjs`),pe=require(`./ContractTemplatePreviewModal.cjs`),me=require(`./ContractTemplateSubmitDataModal.cjs`),he=require(`./ContractTemplateVariableDataModal.cjs`),ge=require(`./SigningLayoutCustomModal.cjs`),_e=require(`./composables/use-template-draft-cache.cjs`),ve=require(`./composables/use-auto-pagination.cjs`),ye=require(`./composables/use-designer-files.cjs`),c=require(`./composables/use-template-files.cjs`),be=require(`./composables/use-draft-cache-session.cjs`),xe=require(`./ContractTemplateFileBar.cjs`),Se=require(`./ContractTemplateDesignerSidebar.cjs`),Ce=require(`./ContractTemplateDesignerInspector.cjs`),we=require(`./ContractTemplatePageDecorationsStudio.cjs`),l=require(`./utils/serialize-fingerprint.cjs`),Te=require(`./utils/editor-state.cjs`),u=require(`./utils/context-menu-viewport.cjs`);let d=require(`vue`),Ee=require(`ant-design-vue`),De=require(`@vueuse/core`),Oe=require(`@ant-design/icons-vue`);var ke={key:2,class:`gd-contract-template-designer__validation`},Ae={key:0,class:`gd-contract-template-designer__validation-list`},je=[`onClick`],Me={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},Ne=.5,Pe=1.5,Fe=.1,Ie=300,Le=500,Re=128,ze=108,Be=48,Ve=24,He=10,Ue=48,We=8,f=(0,d.defineComponent)({name:`ProContractTemplateDesigner`,__name:`ProContractTemplateDesigner`,props:{modelValue:{default:void 0},files:{},activeFileId:{},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},height:{default:760},pageSize:{default:()=>r.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>r.DEFAULT_FIELD_TYPES},signingLayoutPresets:{},showAdvancedChoiceControls:{type:Boolean,default:!1},showBuiltinSelectorControls:{type:Boolean,default:!1},showCustomControls:{type:Boolean,default:!1},defaultVariableStyle:{default:()=>r.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},contractFontBaseUrl:{default:void 0},showSubmitDataViewer:{type:Boolean,default:!0},showVariableDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:_e.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:_e.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:_e.DEFAULT_DRAFT_CACHE_MAX_BYTES},showDraftCacheStatus:{type:Boolean,default:!0}},emits:[`update:modelValue`,`change`,`update:files`,`update:activeFileId`,`files-change`,`file-add`,`file-change`,`file-remove`,`file-move`,`variable-add`,`validate`,`draft-cache-change`,`page-limit`,`image-error`],setup(f,{expose:Ge,emit:Ke}){let p=f,m=Ke,qe=(0,d.computed)(()=>({height:typeof p.height==`number`?`${p.height}px`:p.height})),Je=(0,d.ref)(),Ye=(0,d.ref)();function Xe(){return Ye.value}function Ze(){let e=dt,t=Ye.value;return ne.captureCaretViewport(t,()=>e===dt&&!ln&&!B.value&&t?.isConnected!==!1)}function Qe(){dt+=1}let $e=(0,d.ref)(),et=(0,d.ref)(),tt=(0,d.ref)(),nt=`gd-contract-template-page-decorations-studio-${(0,d.useId)()}`,rt=`gd-contract-template-workspace-chrome-${(0,d.useId)()}`,it=(0,d.ref)(),at=(0,d.ref)(),ot=(0,d.ref)(),st=``,ct=``,lt,ut,dt=0,ft=r.createTemplateBodySync(),pt=new Map,mt=(0,d.ref)(!1),h=(0,d.computed)(()=>mt.value||Array.isArray(p.files)),ht=c.normalizeContractTemplateFiles(p.files,p.modelValue,p.pageSize),gt=c.constrainContractTemplateFiles(ht,p.pageSizeOptions),_t=h.value?gt.files:ht,vt=c.resolveContractTemplateActiveFileId(_t,p.activeFileId),g=(0,d.ref)(_t),_=(0,d.ref)(vt),yt=_t.find(e=>e.id===vt)??_t[0],bt=r.normalizeTemplateValue(yt?.template??p.modelValue,p.pageSize),v=(0,d.ref)(r.constrainTemplatePageSizes(bt,p.pageSizeOptions));h.value?(g.value=c.replaceContractTemplateFile(g.value,_.value,v.value),l.serializeFingerprint(g.value)!==l.serializeFingerprint(ht)&&J(g.value)):p.modelValue&&l.serializeFingerprint(v.value)!==l.serializeFingerprint(bt)&&Ir(v.value);let y=(0,d.ref)(``),b=(0,d.ref)(v.value.pages[0]?.id??``),x=(0,d.ref)(!1),S=(0,d.ref)([]),C=new Map,xt=(0,d.ref)(!1),St=(0,d.ref)(``),w=(0,d.ref)(!1),T=(0,d.ref)(),Ct=(0,d.ref)(),wt=(0,d.ref)(``),Tt=(0,d.ref)(!1),Et=(0,d.ref)(``),Dt=(0,d.ref)(!1),Ot=(0,d.ref)({values:{},variables:[]}),E=(0,d.ref)(1),D=(0,d.ref)(!1),kt=(0,d.ref)(!1),At=(0,d.ref)(!1),O=(0,d.ref)(!1),k=(0,d.ref)(!1),jt=(0,d.ref)(),A=(0,d.ref)(!1),Mt=(0,d.ref)(`header`),Nt=(0,d.ref)(!1),Pt=(0,d.ref)({}),j=(0,d.ref)(``),M=(0,d.ref)(!1),N=(0,d.ref)(!1),Ft=(0,d.ref)(!1),It=(0,d.ref)(!1),Lt=(0,d.ref)(!1),Rt=(0,d.ref)(!1),zt=(0,d.ref)(!1),Bt=(0,d.ref)(``),Vt=(0,d.ref)(),Ht=(0,d.ref)(),Ut=(0,d.ref)(``),Wt=(0,d.ref)(!1),P=(0,d.ref)(),Gt=(0,d.ref)(),F=(0,d.ref)(),Kt=(0,d.ref)(),qt=(0,d.ref)(!1),Jt,Yt=(0,d.ref)(!1),Xt,Zt=(0,d.ref)(!1),Qt=(0,d.ref)(``),I=(0,d.ref)(),$t=(0,d.ref)(),L=(0,d.ref)(),en=(0,d.ref)(),tn=(0,d.ref)(),nn=(0,d.ref)(),R=(0,d.ref)(``),z=(0,d.ref)(_e.createDraftCacheStatus(`idle`,`暂无本地草稿`)),rn=(0,d.ref)({rows:3,cols:3,withHeaderRow:!0}),an=new WeakSet,on=[`.gd-contract-template-designer__page-decorations-select-popup`,`.gd-contract-template-designer__page-decorations-dropdown-popup`].join(`,`),sn,cn,ln=!1,un=!1,dn,fn,B=(0,d.computed)(()=>p.readonly||p.disabled),{panel:pn,query:mn,replacement:hn,matchCase:gn,matches:_n,currentIndex:vn,currentMatch:yn,feedback:bn,highlightQuery:xn,open:Sn,close:Cn,navigate:wn,replaceCurrent:Tn,replaceAll:En,handleKeydown:Dn}=le.useTemplateAuthoring({pages:()=>v.value.pages,fileId:()=>_.value,readonly:()=>B.value,root:()=>Je.value,pageRefs:C,activatePage:ya,beforeOpen:()=>{$(),so(),O.value=!1},focusPanel:()=>ot.value?.focusPanel(),focusTrigger:e=>ot.value?.focusTrigger(e)}),On=(0,d.computed)(()=>!!(P.value||pn.value||I.value||L.value||M.value||N.value||Nt.value||Ft.value||It.value||Lt.value||Rt.value||zt.value)),kn=(0,d.computed)(()=>!!p.enableDraftCache&&!B.value),An=(0,d.computed)(()=>g.value.find(e=>e.id===_.value)??g.value[0]),jn=(0,d.computed)(()=>T.value?r.buildTemplatePreviewPages(T.value):[]),Mn=(0,d.computed)(()=>(Ct.value??[]).map(e=>({file:e,pages:r.buildTemplatePreviewPages(e.template)}))),Nn=(0,d.computed)(()=>Mn.value.find(e=>e.file.id===wt.value)??Mn.value[0]),V=(0,d.computed)(()=>v.value.pages.find(e=>e.id===b.value)??v.value.pages[0]),Pn=(0,d.computed)(()=>r.resolvePageSize(V.value?.pageSize,v.value.pageSize)),Fn=(0,d.computed)(()=>x.value&&S.value.length===0),In=(0,d.computed)(()=>x.value?Fn.value?`校验通过,正文变量与变量配置一致`:`发现 ${S.value.length} 个校验问题`:``),Ln=(0,d.computed)(()=>{let e=V.value?.title||`合同正文`;return`${h.value&&An.value?`${An.value.name} · `:``}${e} · ${Pn.value.label} · 共 ${v.value.pages.length} 页`}),Rn=(0,d.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(v.value.pageDecorations)]),zn=(0,d.computed)(()=>{let e=t.normalizePageDecorations(v.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),Bn=(0,d.computed)(()=>Object.values(zn.value).filter(Boolean).length),Vn=(0,d.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${_e.formatDraftCacheSavedAt(z.value.savedAt)}`;case`restored`:return`已恢复本地草稿`;case`too-large`:return`草稿过大,未缓存`;case`unavailable`:case`read-failed`:case`write-failed`:return`草稿缓存失败`;case`cleared`:return`草稿缓存已清理`;default:return``}}),Hn=(0,d.computed)(()=>({"is-success":z.value.type===`saved`||z.value.type===`restored`,"is-warning":z.value.type===`too-large`,"is-error":z.value.type===`unavailable`||z.value.type===`read-failed`||z.value.type===`write-failed`})),Un=(0,d.computed)(()=>`${Math.round(E.value*100)}%`),Wn=(0,d.computed)(()=>e.resolveFontFamilyOptions(p.fontFamilies,p.fontFamilyMode)),Gn=(0,d.computed)(()=>Wn.value.map(e=>({label:e.label,value:e.value}))),Kn=e.DEFAULT_TEXT_ALIGN_OPTIONS,qn=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Jn=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Yn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],Xn=(0,d.computed)(()=>r.normalizePageSizeOptions(p.pageSizeOptions)),Zn=(0,d.computed)(()=>Xn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:r.getPageSizeKey(e)}))),Qn=(0,d.computed)(()=>r.getPageSizeKey(Pn.value)),$n=(0,d.computed)(()=>p.draftCacheKey),H=(0,d.computed)(()=>v.value.variables.find(e=>e.key===y.value)),U=(0,d.computed)(()=>{let e=[...p.variableTypes,...p.showAdvancedChoiceControls?r.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES:[],...p.showBuiltinSelectorControls?r.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES:[],...p.showCustomControls?r.DEFAULT_CUSTOM_FIELD_TYPES:[]].filter(e=>n.isContractTemplateFieldType(e?.type));return Array.from(new Map(e.map(e=>[e.type,e])).values())}),er=(0,d.computed)(()=>{let e=[...ee.SIGNING_LAYOUT_PRESET_KEYS.map(e=>ee.SIGNING_LAYOUT_PRESETS[e]),...(p.signingLayoutPresets??[]).filter(e=>!!e?.key)];return Array.from(new Map(e.map(e=>[e.key,e])).values())}),tr=(0,d.computed)(()=>U.value.map(e=>({...e,icon:oe.resolveFieldTypeIcon(e.type),group:e.type===`select`||e.type===`radio`?`advanced-choice`:e.type.endsWith(`-selector`)?`builtin-selector`:e.type===`custom`?`custom`:`basic`}))),W=(0,d.computed)(()=>r.normalizeContractTemplateMaxPages(p.maxPages)),nr=(0,d.computed)(()=>v.value.pages.length>=W.value),rr=(0,d.computed)(()=>{let e=ft.collectKeys(v.value);return Array.from(t.collectPageDecorationVariableKeys(v.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:ir,scheduleFullPagination:G,resetPagination:ar,disposePagination:or}=ve.useAutoPagination({templateValue:v,readonlyState:B,isAutoPaginating:xt,pendingPaginationPageId:St,activePageId:b,normalizedMaxPages:W,pageRefs:C,applyPagesChange:e=>{v.value={...v.value,pages:e},x.value=!1,S.value=[],Nr()},getPageSize:Jr,notifyPageLimit:Xr,captureViewport:Ze}),{saveDraftCache:sr,loadDraftCache:cr,clearDraftCache:lr,restoreDraftCacheIfNeeded:ur,stopDraftCacheTimer:dr,restartDraftCacheTimer:fr,resetDraftFingerprint:pr}=be.useDraftCacheSession({draftCacheWritable:kn,multipleFilesMode:h,filesValue:g,activeFileIdValue:_,templateValue:v,draftCacheKey:$n,draftCacheInterval:()=>p.draftCacheInterval,draftCacheMaxBytes:()=>p.draftCacheMaxBytes,pageSize:()=>p.pageSize,pageSizeOptions:()=>p.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:()=>(Mr(),kr()),setActiveFileId:Y,emitFilesChange:J,commit:X,updateDraftCacheStatus:Lr,scheduleFullPagination:G,activePageId:b,selectedVariableKey:y}),mr=(0,d.computed)(()=>{let e=Qt.value.trim().toLowerCase(),t=v.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),hr=(0,d.computed)(()=>Math.max(Be,Pn.value.width-Re)),gr=(0,d.computed)(()=>Math.max(Ve,Pn.value.height-ze)),K=(0,d.computed)(()=>Pt.value[b.value]??wr()),_r=(0,d.computed)(()=>K.value.hasMixedBlockFormats?void 0:K.value.currentHeadingLevel??`paragraph`),vr=(0,d.computed)(()=>K.value.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),yr=(0,d.computed)(()=>K.value.fontSize??r.DEFAULT_FIELD_STYLE.fontSize??14),br=(0,d.computed)(()=>K.value.textColor||r.DEFAULT_FIELD_STYLE.color||`#1f2937`),xr=(0,d.computed)(()=>H.value?.style?.fontFamily||r.DEFAULT_FIELD_STYLE.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),Sr=(0,d.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=Or(yr.value),r=Or(j.value),i=new Map;return r&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(r)&&i.set(r,{label:`使用 ${r}px`,value:r}),n&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(n)&&i.set(n,{label:r===n?`使用 ${n}px`:`${n}px`,value:n}),[...Array.from(i.values()),...t]});(0,d.watch)(()=>p.modelValue,(e,t)=>{if(!e||h.value)return;if(e!==t&&ut&&(0,d.toRaw)(e)===(0,d.toRaw)(ut)){ct=``;return}if(l.serializeFingerprint(e)===ct){ct=``;return}let n=r.normalizeTemplateValue(e,p.pageSize),i=r.constrainTemplatePageSizes(n,p.pageSizeOptions),a=l.serializeFingerprint(i)!==l.serializeFingerprint(v.value),o=l.serializeFingerprint(i)===ct;o&&(ct=``),(a||!o)&&(ct=``,Qe(),ar(),ft.clear(),jr(),v.value=i,g.value=c.replaceContractTemplateFile(g.value,_.value,i),b.value=i.pages[0]?.id??``,y.value=``,G()),l.serializeFingerprint(i)!==l.serializeFingerprint(n)&&Ir(i)},{deep:!0}),(0,d.watch)(()=>p.files,(e,t)=>{if(!Array.isArray(e))return;if(e!==t&&lt&&(0,d.toRaw)(e)===(0,d.toRaw)(lt)){st=``;return}if(l.serializeFingerprint(e)===st){st=``;return}let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions).files,i=l.serializeFingerprint(r),a=l.serializeFingerprint(g.value);i===st&&(st=``);let o=c.resolveContractTemplateActiveFileId(r,p.activeFileId||_.value);i===a?o!==_.value&&Y(o,{syncCurrent:!1,shouldEmit:!1}):(st=``,g.value=r,Y(o,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0})),i!==l.serializeFingerprint(n)&&J(r)},{deep:!0}),(0,d.watch)(()=>p.activeFileId,e=>{!h.value||!e||e===_.value||Y(e,{syncCurrent:!0,shouldEmit:!1})});function Cr(e,t){let n=l.serializeFingerprint(g.value);q(!1);let i=c.normalizeContractTemplateFiles(g.value,void 0,e),{files:a}=c.constrainContractTemplateFiles(i,t),o=l.serializeFingerprint(a)!==n,s=a.find(e=>e.id===_.value);return s&&l.serializeFingerprint(s.template)!==l.serializeFingerprint(v.value)&&(v.value=r.cloneTemplateValue(s.template)),o&&(x.value=!1,S.value=[],J(a,``)),o}(0,d.watch)([()=>p.pageSize,()=>p.pageSizeOptions],([e,t])=>{if(h.value){Cr(e,t),G();return}let n=r.normalizeTemplateValue(v.value,e),i=r.constrainTemplatePageSizes(n,t);l.serializeFingerprint(i)!==l.serializeFingerprint(v.value)&&X(i),G()},{deep:!0}),(0,d.watch)(W,()=>{G()}),(0,d.watch)(B,e=>{e?($(),M.value=!1,N.value=!1):G()}),(0,d.watch)(b,()=>{F.value=void 0}),(0,d.watch)([On,A,w],()=>{uo()}),(0,d.watch)(()=>[p.enableDraftCache,$n.value,p.draftCacheInterval,B.value],()=>{pr(),fr()}),(0,d.watch)(D,e=>{if(!(typeof document>`u`)){if(e){sn=document.body.style.overflow,document.body.style.overflow=`hidden`;return}document.body.style.overflow=sn??``,sn=void 0}}),(0,d.onMounted)(()=>{ur(),fr(),G(),document.fonts?.ready.then(G),document.fonts?.addEventListener(`loadingdone`,G),window.addEventListener(`pointerdown`,yo,!0),window.addEventListener(`pointerup`,go),window.addEventListener(`keydown`,So,!0),window.addEventListener(`keydown`,Co),window.addEventListener(`resize`,_o),window.addEventListener(`scroll`,bo,!0)}),(0,d.onBeforeUnmount)(()=>{Qe(),or(),Mr(),ln=!0,D.value&&typeof document<`u`&&(document.body.style.overflow=sn??``),document.fonts?.removeEventListener(`loadingdone`,G),window.removeEventListener(`pointerdown`,yo,!0),window.removeEventListener(`pointerup`,go),window.removeEventListener(`keydown`,So,!0),window.removeEventListener(`keydown`,Co),window.removeEventListener(`resize`,_o),window.removeEventListener(`scroll`,bo,!0),Xt!==void 0&&cancelAnimationFrame(Xt),dr()});function wr(){return{isFocused:!1,canUndo:!1,canRedo:!1,isBold:!1,isItalic:!1,isUnderline:!1,isBulletList:!1,isOrderedList:!1,isTableActive:!1,textAlign:`left`,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:r.DEFAULT_FIELD_STYLE.fontSize??14,textColor:r.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function Tr(e){return e===`left`||e===`center`||e===`right`}function Er(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function Dr(e,t=yr.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ue,Math.max(He,Math.round(n))):t}function Or(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ue,Math.max(He,Math.round(n)))}function kr(e=v.value){let t=!1,n=e.pages.map(e=>{let n=C.get(e.id)?.getContentSnapshot(e),r=n?.contentHtml??e.contentHtml,i=n?.contentJson??e.contentJson;return r===e.contentHtml&&(0,d.toRaw)(i)===(0,d.toRaw)(e.contentJson)?e:(t=!0,{...e,contentHtml:r,contentJson:i})});return t?{...e,pages:n}:e}function Ar(){dn!==void 0&&(clearTimeout(dn),dn=void 0),fn!==void 0&&typeof cancelIdleCallback==`function`&&cancelIdleCallback(fn),fn=void 0}function jr(){un=!1,Ar()}function Mr(){let e=un;jr(),e&&Fr()}function Nr(){un=!0,Ar(),dn=setTimeout(()=>{dn=void 0;let e=()=>{if(fn=void 0,!(!un||ln)){if(xt.value)return Nr();un=!1,Fr()}};typeof requestIdleCallback==`function`?fn=requestIdleCallback(e,{timeout:Le}):e()},Ie)}function Pr(e){let t=v.value.pages,n=t.findIndex(t=>t.id===e.id);if(n<0)return;let r=t[n];if(r.contentHtml===e.contentHtml&&r.contentJson===e.contentJson&&r.title===e.title&&r.pageSize===e.pageSize)return;let i=t.slice();i[n]=e,v.value={...v.value,pages:i}}function Fr(){let e=kr(),t=ft.sync(e);y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),X(t,{normalizedBody:!0})}function q(e=!1){Mr();let t=r.cloneTemplateValue(kr());if(!h.value)return t;let n=g.value.find(e=>e.id===_.value)?.template,i=l.serializeFingerprint(n)!==l.serializeFingerprint(t),a=c.replaceContractTemplateFile(g.value,_.value,t);return g.value=a,i&&e&&J(a),t}function Ir(e){let t=r.cloneTemplateValue(e);ut=t,ct=l.serializeFingerprint(e),m(`update:modelValue`,t),m(`change`,r.cloneTemplateValue(e))}function J(e,t=_.value){if(!h.value)return;let n=c.cloneContractTemplateFiles(e),r=c.cloneContractTemplateFiles(n);g.value=n,lt=r,st=l.serializeFingerprint(r),m(`update:files`,r),m(`files-change`,c.cloneContractTemplateFiles(r));let i=r.find(e=>e.id===t);i&&m(`file-change`,c.cloneContractTemplateFiles([i])[0])}function Y(e,t={}){let{syncCurrent:n,shouldEmit:i,forceRefresh:a}=ye.resolveSetActiveFileIdOptions(t),o=c.resolveContractTemplateActiveFileId(g.value,e),s=o!==_.value;if((s||a)&&g.value.some(e=>e.id===o)&&(Qe(),ar()),n?q(!0):jr(),!s&&!a)return;let ee=g.value.find(e=>e.id===o);ee&&(_.value=o,v.value=r.cloneTemplateValue(ee.template),y.value=``,b.value=v.value.pages[0]?.id??``,Pt.value={},C.clear(),ft.clear(),pt.clear(),x.value=!1,S.value=[],w.value=!1,T.value=void 0,Ct.value=void 0,pr(),i&&s&&m(`update:activeFileId`,o),n&&s&&kn.value&&sr(),(0,d.nextTick)(()=>{G()}))}function X(e,t={}){jr();let n=t.normalizedBody?e:r.constrainTemplatePageSizes(r.normalizeTemplateValue(e,p.pageSize),p.pageSizeOptions);return t.normalizedBody||(ft.clear(),pt.clear()),v.value=n,x.value=!1,S.value=[],h.value?J(c.replaceContractTemplateFile(g.value,_.value,n)):(g.value=c.replaceContractTemplateFile(g.value,_.value,n),Ir(n)),n}function Lr(e,t=e.type!==`unchanged`){z.value=e,t&&m(`draft-cache-change`,{...e})}function Rr(){return{...z.value}}function zr(e,t){t?C.set(e,t):C.delete(e)}function Br(e){$(),Lt.value=!1,Z({type:`insert-signing-layout`,preset:ee.isSigningLayoutPresetKey(e.key)?e.key:void 0,options:e.options})}function Vr(e){$(),Z({type:`insert-signing-layout`,options:e})}function Hr(){Lt.value=!1,zt.value=!0}function Ur(e){$(),Rt.value=!1,Z({type:`insert-signing-mark`,mark:{markType:e}})}function Z(e,t=V.value?.id??b.value){B.value||C.get(t)?.runCommand(e)}function Wr(e){Z(e),$()}function Gr(e){let t=P.value?.pageId;t&&(C.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function Kr(e){let t=X(r.syncTemplateVariablesWithPages(e));return y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),t}function qr(e){Pr(e),Nr(),ir(e.id)}function Jr(e){let t=r.resolvePageSize(e?.pageSize,v.value.pageSize),n=`${r.getPageSizeKey(t)}:${t.label??``}`;return pt.get(n)||(pt.set(n,t),t)}function Yr(e){if(B.value||!V.value)return;let t=Xn.value.find(t=>r.getPageSizeKey(t)===e);if(!t)return;let n=V.value.id,i=r.resolvePageSize(t,v.value.pageSize);X({...v.value,pages:v.value.pages.map(e=>e.id===n?{...e,pageSize:i}:e)}),ir(n)}function Xr(e){let t=W.value;R.value=`合同最多支持 ${t} 页`,m(`page-limit`,t,e)}function Zr(){if(B.value)return;if(nr.value){Xr(`add`);return}let e=r.createDefaultPage(v.value.pages.length+1,Pn.value);X({...v.value,pages:[...v.value.pages,e]}),b.value=e.id,G()}function Qr(e){if(B.value)return;if(nr.value){Xr(`duplicate`);return}let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=r.cloneTemplateValue({pages:[e],variables:[],pageSize:v.value.pageSize}).pages[0],i=r.createBlankPage(t+2,Jr(e),n.contentHtml,n.contentJson);i.title=`${e.title||`第 ${t+1} 页`}副本`;let a=[...v.value.pages];a.splice(t+1,0,i),X({...v.value,pages:a}),b.value=i.id,G()}function $r(e){if(B.value||v.value.pages.length<=1)return;let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=v.value.pages.filter(t=>t.id!==e.id),r=Kr({...v.value,pages:n});b.value=r.pages[Math.min(t,r.pages.length-1)]?.id??``,G()}function ei(e){B.value||v.value.pages.length<=1||Ee.Modal.confirm({title:`删除合同页面`,content:`删除页面会同时移除页面正文,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{$r(e)}})}function ti(e){let t=new Set(v.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function ni(e){let t=e.type??`text`;return r.createTemplateVariable({...e,type:t,key:e.key||ti(t),label:e.label||r.getFieldOption(t,U.value).label},U.value,p.defaultVariableStyle)}function ri(e,t=V.value?.id??v.value.pages[0].id,n){if(B.value)return e;let r=C.get(t)?.insertVariable(e,n),i=!v.value.variables.some(t=>t.key===e.key);return X({...v.value,pages:r?v.value.pages.map(e=>e.id===r.id?r:e):v.value.pages,variables:i?[...v.value.variables,e]:v.value.variables}),y.value=e.key,b.value=t,i&&m(`variable-add`,e),ir(t),e}function ii(e){let{width:t,height:n,...r}=e,i=s.normalizeContractImageDimension(t),a=s.normalizeContractImageDimension(n);return{...r,...i===void 0?{}:{width:i},...a===void 0?{}:{height:a}}}function ai(e={}){let t=s.normalizeContractImageDimension(Vt.value),n=s.normalizeContractImageDimension(Ht.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function oi(){Bt.value=``,Vt.value=void 0,Ht.value=void 0,Ut.value=``}function si(e,t=V.value?.id??v.value.pages[0]?.id,n){let r=ii({...e,src:e.src.trim()});if(!(B.value||!t||!i.isSafeContractImageUrl(r.src)||!r.src||!C.get(t)?.insertContentImage(r,n)))return b.value=t,y.value=``,r.src}function ci(e){return e instanceof Error?e:Error(`图片处理失败`)}async function li(e,t){t===`toolbar`&&(Wt.value=!0,Ut.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:p.imageCompression,upload:p.imageUpload});return ln?void 0:n.src}catch(e){let n=ci(e);t===`toolbar`&&(Ut.value=n.message),R.value=n.message,m(`image-error`,n,t);return}finally{t===`toolbar`&&(Wt.value=!1)}}let ui=0;function di(e){let t=e.replacedFontFamilies.filter(Boolean);if(!t.length)return;let n=Date.now();n-ui<800||(ui=n,Ee.message.info(`已将 ${t.length} 种外部字体(${t.join(`、`)})统一为合同标准字体,以保证 Mac 与 Windows 排版一致`))}async function fi(e){return await li(e,`paste`)??null}async function pi(e,t={}){if(B.value)return;let n=V.value?.id??v.value.pages[0]?.id,r=n?C.get(n)?.getSelectionRange():void 0,a=typeof e==`string`?e.trim():await li(e,`toolbar`);if(ln)return;if(!a||!i.isSafeContractImageUrl(a)){typeof e==`string`&&(Ut.value=`请输入安全的图片 URL`);return}if(n&&!C.has(n))return;let o=si({...t,src:a},n,r);return o&&(It.value=!1,oi(),R.value=`已插入图片`),o}function mi(){B.value||Wt.value||($(),Ut.value=``,at.value&&(at.value.value=``),at.value?.click())}async function hi(e){let t=e.target.files?.[0];t&&await pi(t,ai({alt:t.name}))}async function gi(){let e=Bt.value;await pi(e,ai())}function _i(e){Ii(e),Ft.value=!1}function vi(){$(),Zr()}function yi(e,t,n,r){$(),ri(ni({type:t}),e,{left:n,top:r})}function bi(e){$(),y.value=e}function xi(e){let n=v.value.variables.find(t=>t.id===e.id);if(!n)return;let i=e.key.trim();if(i!==n.key){let t=r.validateContractTemplateVariableKey(i,v.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:i};let a=[...v.value.pages],o=n.key;C.forEach((t,n)=>{let r=t.updateVariable(e,o);if(r){let e=a.findIndex(e=>e.id===n);e>=0&&(a[e]=r)}}),X({...v.value,pages:a,variables:v.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,o,e.key)}:{}}),y.value=e.key,G()}function Q(e){H.value&&xi({...H.value,...e,style:{...H.value.style,...e.style}})}function Si(e){B.value||!H.value||Q({key:e})}function Ci(e){B.value||(X({...v.value,pageDecorations:t.normalizePageDecorations(e)}),G())}function wi(e){(e===`left`||e===`center`||e===`right`)&&Q({style:{textAlign:e}})}function Ti(e){(e===`solid`||e===`dashed`)&&Q({style:{borderStyle:e}})}function Ei(e){(e===`contain`||e===`cover`||e===`fill`)&&Q({style:{objectFit:e}})}function Di(e){Q({style:e})}function Oi(t){Di({fontFamily:String(t||``).trim()||e.DEFAULT_CONTRACT_FONT_FAMILY})}function ki(e){Di({fontSize:Dr(e,H.value?.style?.fontSize??14)})}function Ai(e){H.value&&Q({multiline:e,rows:H.value.rows||3,lineHeight:H.value.lineHeight||28,style:e?{underline:!0}:void 0})}function ji(e){H.value&&Q({rows:Number(e||3),lineHeight:H.value.lineHeight||28})}function Mi(e){if(B.value)return;let n=[...v.value.pages];C.forEach((t,r)=>{let i=t.removeVariable(e.key);if(i){let e=n.findIndex(e=>e.id===r);e>=0&&(n[e]=i)}}),X({...v.value,pages:n,variables:v.value.variables.filter(t=>t.id!==e.id),...v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,e.key)}:{}}),y.value=``}function Ni(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(v.value.variables.map(e=>e.key));if(!n.has(t))return t;let r=2;for(;n.has(`${t}_${r}`);)r+=1;return`${t}_${r}`}function Pi(e){B.value||ri(r.createTemplateVariable({...e,id:void 0,key:Ni(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},U.value,p.defaultVariableStyle))}function Fi(e){return B.value?void 0:ri(v.value.variables.find(t=>t.key===e.key)??r.createTemplateVariable(e,U.value,p.defaultVariableStyle))}function Ii(e){if(!B.value)return ri(ni({type:e}))}function Li(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=U.value.find(t=>t.type===e);if(!t||!r)return;let i=te.inferContextVariableLabel(t.leadingText)||r.label,a=te.resolveContextVariableWidth(t.selectionWidth,Be,hr.value),o=Ri();ri(ni({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function Ri(){let e=K.value,t={};return e.isUnderline&&(t.underline=!0),typeof e.fontSize==`number`&&Number.isFinite(e.fontSize)&&(t.fontSize=e.fontSize),e.fontFamily&&(t.fontFamily=e.fontFamily),e.textColor&&(t.color=e.textColor),Object.keys(t).length?t:void 0}function zi(e){if(B.value)return;let t=P.value;t&&(ri(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function Bi(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return r.getFieldOption(t,U.value).label}function Vi(){v.value.variables.length&&(Zt.value=!0,(0,d.nextTick)(()=>{eo(),Gt.value?.focusBindSearch()}))}function Hi(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function Ui(e){return E.value=Math.round(Math.min(Pe,Math.max(Ne,Number.isFinite(e)?e:1))*100)/100,E.value}let{width:Wi}=(0,De.useElementSize)(Ye),Gi=(0,d.computed)(()=>Math.max(...v.value.pages.map(e=>Jr(e).width),r.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:Ki,applyAutoFit:qi,markUserAdjusted:Ji,userAdjusted:Yi}=o.useFitWidthZoom({viewportWidth:Wi,widestPageWidth:Gi,padding:48,minZoom:Ne,maxZoom:Pe,getZoom:()=>E.value,applyZoom:Ui});function Xi(e){return Ji(),Ui(e)}function Zi(){return qi()}function Qi(){return E.value}function $i(){Xi(E.value+Fe)}function ea(){Xi(E.value-Fe)}function ta(){$(),so(),D.value=!D.value}(0,d.watch)(Wi,e=>{k.value&&!Yi.value&&e>0&&Ki()});function na(e){O.value?it.value?.focus():e()}function ra(){$(),so(),A.value=!1,cn={fullscreen:D.value,sidebar:kt.value,inspector:At.value,chrome:O.value,zoom:E.value,userAdjusted:Yi.value},D.value=!0,kt.value=!0,At.value=!0,O.value=!0,k.value=!0,(0,d.nextTick)(()=>{B.value?jt.value?.focus():C.get(b.value)?.focus()})}function ia(){let e=cn;k.value=!1,cn=void 0,e&&(D.value=e.fullscreen,kt.value=e.sidebar,At.value=e.inspector,O.value=e.chrome,e.userAdjusted?Xi(e.zoom):qi(),(0,d.nextTick)(()=>na(()=>et.value?.focusImmersive())))}function aa(){k.value?ia():ra()}function oa(){$(),F.value=void 0;let e=q(!1);h.value?(Ct.value=c.cloneContractTemplateFiles(g.value),T.value=void 0,wt.value=_.value||g.value[0]?.id||``):(T.value=r.cloneTemplateValue(e),Ct.value=void 0,wt.value=``),w.value=!0}function sa(){w.value=!1,T.value=void 0,Ct.value=void 0,wt.value=``}function ca(){return La()}function la(){$();let e=ca();return Et.value=JSON.stringify(e,null,2),Tt.value=!0,e}function ua(){Tt.value=!1}function da(){return a.buildTemplateVariableData(q(!1))}function fa(){$();let e=da();return Ot.value=e,Dt.value=!0,e}function pa(){Dt.value=!1}function ma(){$(),F.value=void 0,M.value=!1,N.value=!1,y.value=``,b.value=``,w.value=!1,T.value=void 0,Ct.value=void 0,Tt.value=!1,Et.value=``,Dt.value=!1,Ot.value={values:{},variables:[]},Pt.value={},Qe(),ar();let e=X(r.createBlankTemplate(r.DEFAULT_PAGE_SIZE));return b.value=e.pages[0]?.id??``,r.cloneTemplateValue(e)}function ha(){B.value||($(),Ee.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面和模板变量,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{ma()}}))}function ga(e){let t=kr().pages,n=t.find(e=>e.id===b.value);return(n?[n,...t.filter(e=>e.id!==n.id)]:t).find(t=>t.contentHtml.includes(`data-key="${e.key}"`)||t.contentHtml.includes(`data-key='${e.key}'`))}function _a(e){$(),y.value=e.key;let t=ga(e);t&&(b.value=t.id,(0,d.nextTick)(()=>{C.get(t.id)?.scrollIntoVariable(e.key)}))}function va(e){let t=v.value.variables.find(t=>t.key===e||t.id===e);t&&_a(t)}function ya(e,t=!0){$(),b.value=e,t&&(0,d.nextTick)(()=>{C.get(e)?.scrollIntoPage()})}function ba(e){ya(e.pageId,!1),C.get(e.pageId)?.focusHeading(e.headingIndex)}function xa(e){v.value.pages.some(t=>t.id===e)&&ya(e)}function Sa(){if(A.value){Ca();return}A.value=!0}function Ca(){A.value=!1,(0,d.nextTick)(()=>na(()=>et.value?.focusPageDecorations()))}function wa(){return Mr(),r.cloneTemplateValue(kr())}function Ta(e){Qe(),ar(),X(e),G()}function Ea(){let e=q(!1);return h.value?c.cloneContractTemplateFiles(g.value):c.cloneContractTemplateFiles(c.replaceContractTemplateFile(g.value,_.value,e))}function Da(e,t){let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions),i=g.value;mt.value=!0,q(!1),g.value=r.files,Y(c.resolveContractTemplateActiveFileId(g.value,t??_.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.serializeFingerprint(i)!==l.serializeFingerprint(g.value)&&J(g.value,``)}function Oa(e){if(B.value)return;mt.value=!0,q(!0);let t=c.createContractTemplateFile(e||`合同文件 ${g.value.length+1}`,p.pageSize);return g.value=[...g.value,t],J(g.value,``),m(`file-add`,c.cloneContractTemplateFiles([t])[0]),Y(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function ka(e){!h.value&&!g.value.some(t=>t.id===e)||(mt.value=!0,Y(e))}function Aa(e,t){if(B.value)return;mt.value=!0,q(!1);let n=c.renameContractTemplateFile(g.value,e,t),r=n.find(t=>t.id===e);if(r)return g.value=n,J(n,e),c.cloneContractTemplateFiles([r])[0]}function ja(e){if(B.value||g.value.length<=1)return;mt.value=!0,q(!1);let t=g.value.find(t=>t.id===e);if(!t)return;let n=c.removeContractTemplateFile(g.value,e);if(n.length!==g.value.length)return g.value=n,J(n,``),m(`file-remove`,c.cloneContractTemplateFiles([t])[0]),_.value===e&&Y(c.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function Ma(e){if(B.value||g.value.length<=1)return;let t=g.value.find(t=>t.id===e);t&&Ee.Modal.confirm({title:`删除合同文件`,content:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{ja(e)}})}function Na(e,t){if(B.value)return;mt.value=!0,q(!1);let n=g.value.findIndex(t=>t.id===e),r=c.moveContractTemplateFile(g.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return g.value=r,J(r,``),m(`file-move`,c.cloneContractTemplateFiles([a])[0],n,i),c.cloneContractTemplateFiles([a])[0]}function Pa(){q(!1);let e=za(h.value?g.value.flatMap(e=>r.validateTemplateValue(e.template,{maxPages:W.value}).map(t=>({...t,fileId:e.id}))):r.validateTemplateValue(kr(),{maxPages:W.value}));return S.value=e,x.value=!0,m(`validate`,e),e}function Fa(e){if(e.fileId&&e.fileId!==_.value){ka(e.fileId),(0,d.nextTick)(()=>Fa({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,d.nextTick)(()=>tt.value?.focusField(n));return}if(e.variableKey){va(e.variableKey);return}if(e.pageId){xa(e.pageId);return}let r=v.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){_a(r);return}v.value.pages.some(t=>t.id===e.id)&&ya(e.id)}function Ia(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`variable`?`变量`:`字段`}function La(){return Mr(),r.exportTemplateValue(kr())}function Ra(){let e=q(!1),t=h.value?g.value:c.replaceContractTemplateFile(g.value,_.value,e);return c.exportContractTemplateFiles(t)}function za(e){let t=new Set;return e.filter(e=>{let n=`${e.fileId??``}|${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return t.has(n)?!1:(t.add(n),!0)})}function Ba(e){S.value=[...e],x.value=!0}function Va(){S.value=[],x.value=!1}function Ha(){C.get(V.value?.id??b.value)?.focus()}function Ua(e){Tr(e)&&Z({type:`set-text-align`,value:e})}function Wa(e){(e===`paragraph`||Er(e))&&Z({type:`apply-block-style`,format:e})}function Ga(e){let t=Or(e);t&&(Z({type:`set-font-size`,value:t}),j.value=``)}function Ka(e){let t=String(e||``).trim();if(!t){Z({type:`unset-font-family`});return}Z({type:`set-font-family`,value:t})}function qa(e){Ja(e.target?.value??``)}function Ja(e){let t=e.trim();t&&Z({type:`set-color`,value:t})}function Ya(e){j.value=e}function Xa(){j.value.trim()&&Ga(j.value)}function Za(e){e.key===`Enter`&&(e.preventDefault(),Xa())}function Qa(e){e||(Xa(),j.value=``)}function $a(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Zt.value=!1,Qt.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,304,300);P.value={pageId:e.pageId,x:t.x,y:t.y,hasSelection:e.hasSelection,selectionWidth:e.selectionWidth,leadingText:e.leadingText},(0,d.nextTick)(()=>{eo(),Gt.value?.focusFirstButton()})}function eo(){let e=Gt.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function to(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=u.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,d.nextTick)(()=>{let e=$t.value?.getMenuElement(),t=I.value;if(e&&t){let n=u.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}$t.value?.focusFirstItem()})}function no(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,I.value=void 0,tn.value=e.image.width,nn.value=e.image.height,y.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,d.nextTick)(()=>{ro(),en.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function ro(){let e=en.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function io(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(tn.value),height:s.normalizeContractImageDimension(nn.value)})&&(R.value=`已更新图片尺寸`),$())}function ao(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function oo(e){e.type===`table`?to(e):e.type===`image`?no(e):$a(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Zt.value=!1,Qt.value=``}function so(){Cn(!1),M.value=!1,N.value=!1,Nt.value=!1,Ft.value=!1,It.value=!1,Lt.value=!1,Rt.value=!1}function co(){so(),O.value=!O.value,(0,d.nextTick)(()=>na(()=>et.value?.focusChromeToggle()))}let lo=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function uo(){let e=B.value||Yt.value||qt.value||On.value||A.value||w.value,t=b.value,n=e?void 0:C.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-We,i=r>=12?r:n.bottom+We,a=(n.left+n.right)/2-380/2,o=u.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,d.nextTick)(()=>fo(n))}function fo(e){let t=Kt.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-We,a=i>=12?i:e.bottom+We,o=(e.left+e.right)/2-r.width/2,s=u.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function po(){let e=F.value?.pageId??b.value,t=C.get(e)?.getSelectionRange();Jt=t?{pageId:e,...t}:void 0,qt.value=!0,F.value=void 0}function mo(e){if(!qt.value)return;let t=Jt,n=C.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(qt.value=!1,Jt=void 0)}function ho(){!F.value||Xt!==void 0||(Xt=requestAnimationFrame(()=>{Xt=void 0,uo()}))}function go(){Yt.value&&(Yt.value=!1,uo())}function _o(){$(),ho()}function vo(e,t){C.get(F.value?.pageId??b.value)?.requestTextContextMenu(e,t)}function yo(e){let t=e.target instanceof Element?e.target:null;t?.closest(`.ProseMirror`)&&(Yt.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(lo)||($(),F.value&&po()))}function bo(e){(e.target instanceof Element?e.target:null)?.closest(lo)||($(),ho())}function xo(e){let t=Je.value;if(!t||typeof document>`u`)return!1;let n=e.target instanceof Node?e.target:void 0,r=document.activeElement;return!!(n&&t.contains(n)||r&&t.contains(r)||n instanceof Element&&n.closest(`.gd-contract-template-designer__context-menu`))}function So(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Je.value?.querySelector(`.gd-contract-template-designer__page-decorations-studio`);if(!t)return;let n=e.target instanceof Element?e.target:null,r=document.activeElement instanceof Element?document.activeElement:null,i=!!(n?.closest(on)||r?.closest(on)),a=!!(n&&t.contains(n)||r&&t.contains(r)),o=!!t.querySelector(`.ant-select-open, .ant-dropdown-open`);if(i||a&&o){an.add(e);return}!On.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),Ca())}function Co(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!kn.value||!xo(e))return;e.preventDefault(),sr();return}if(e.key===`Escape`){if(an.has(e)){an.delete(e);return}let t=On.value,n=t||A.value;if(!t&&A.value&&Ca(),$(),so(),n&&e.stopPropagation(),!n){if(F.value){po(),e.stopPropagation();return}k.value?ia():D.value=!1}}}function wo(e,t){e===b.value&&t.selectedContentImage&&(y.value=``),e===b.value&&(mo(e),uo());let n=Pt.value[e];n&&Te.isSameEditorState(n,t)||(Pt.value={...Pt.value,[e]:t})}function To(e=rn.value.rows,t=rn.value.cols){Z({type:`insert-table`,options:{rows:Math.min(10,Math.max(1,Math.round(Number(e)||3))),cols:Math.min(10,Math.max(1,Math.round(Number(t)||3))),withHeaderRow:!!rn.value.withHeaderRow}}),M.value=!1,$()}let Eo={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function Do(e){let t=I.value;if(!t)return;let n=()=>{Z(e,t.pageId),$()},r=Eo[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),Ee.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>C.get(t.pageId)?.focus()})}function Oo(e){let t=$t.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),C.get(t??``)?.focus();return}let n=Array.from(t.querySelectorAll(`button:not(:disabled)`));if(!n.length)return;if(e.key===`Home`||e.key===`End`){e.preventDefault(),n[e.key===`Home`?0:n.length-1]?.focus();return}if(![`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`].includes(e.key))return;let r=(Math.max(0,n.indexOf(document.activeElement))+(e.key===`ArrowUp`||e.key===`ArrowLeft`?-1:1)+n.length)%n.length;e.preventDefault(),n[r]?.focus()}function ko(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),C.get(t??``)?.focus()}function Ao(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),C.get(t??``)?.focus()}function jo(e){Z({type:e}),N.value=!1,$()}return Ge({getValue:wa,setValue:Ta,getFiles:Ea,setFiles:Da,addFile:Oa,selectFile:ka,renameFile:Aa,removeFile:ja,moveFile:Na,validate:Pa,exportTemplate:La,exportFiles:Ra,getSubmitData:ca,clearTemplate:ma,saveDraftCache:sr,loadDraftCache:cr,clearDraftCache:lr,getDraftCacheStatus:Rr,insertVariable:Fi,insertImage:pi,focus:Ha,openPreview:oa,closePreview:sa,openSubmitDataViewer:la,closeSubmitDataViewer:ua,getVariableData:da,openVariableDataViewer:fa,closeVariableDataViewer:pa,setServerValidationErrors:Ba,clearValidationErrors:Va,scrollToVariable:va,scrollToPage:xa,setZoom:Xi,resetZoom:Zi,getZoom:Qi,fitWidth:Ki}),(e,t)=>((0,d.openBlock)(),(0,d.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Je,class:(0,d.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":f.disabled,"is-readonly":B.value,"is-fullscreen":D.value,"is-immersive":k.value}]),style:(0,d.normalizeStyle)(qe.value),onKeydownCapture:t[31]||=(...e)=>(0,d.unref)(Dn)&&(0,d.unref)(Dn)(...e)},[h.value?((0,d.openBlock)(),(0,d.createBlock)(xe.default,{key:0,files:g.value,"active-file-id":_.value,readonly:B.value,onSelect:ka,onAdd:t[0]||=e=>Oa(),onRename:Aa,onRemove:Ma,onMove:Na},null,8,[`files`,`active-file-id`,`readonly`])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{class:(0,d.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":kt.value,"is-inspector-collapsed":At.value}])},[(0,d.createVNode)(Se.default,{collapsed:kt.value,"file-id":_.value,pages:v.value.pages,variables:v.value.variables,"decoration-variable-keys":rr.value,"active-page-id":b.value,"selected-variable-key":y.value,"normalized-max-pages":W.value,"page-limit-reached":nr.value,"selected-page":V.value,"selected-page-size":Pn.value,"normalized-page-size-options":Xn.value,"page-size-options":Zn.value,"selected-page-size-option-value":Qn.value,readonly:B.value,"get-page-size":Jr,onToggle:t[1]||=e=>kt.value=!kt.value,onAddPage:Zr,onActivatePage:ya,onNavigateOutline:ba,onDuplicatePage:Qr,onRemovePage:ei,onPatchPageFormat:Yr,onScrollToVariable:_a},null,8,[`collapsed`,`file-id`,`pages`,`variables`,`decoration-variable-keys`,`active-page-id`,`selected-variable-key`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`readonly`]),(0,d.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:$e,class:`gd-contract-template-designer__workspace`},[(0,d.withDirectives)((0,d.createElementVNode)(`div`,{id:rt,class:`gd-contract-template-designer__workspace-chrome`},[(0,d.createVNode)(ae.default,{ref_key:`workspaceHeaderElement`,ref:et,summary:Ln.value,"draft-cache-status-text":Vn.value,"draft-cache-status-class":Hn.value,"show-draft-cache-status":f.showDraftCacheStatus,"show-clear-button":f.showClearButton,"show-submit-data-viewer":f.showSubmitDataViewer,"show-variable-data-viewer":f.showVariableDataViewer,readonly:B.value,"zoom-percent":Un.value,"zoom-out-disabled":E.value<=Ne,"zoom-in-disabled":E.value>=Pe,"is-fullscreen":D.value,immersive:k.value,"page-decorations-open":A.value,"page-decorations-studio-id":nt,"page-decorations-preset-label":Rn.value,"page-decorations-enabled-count":Bn.value,"page-decorations-enabled-states":zn.value,"chrome-controls-id":rt,onZoomOut:ea,onZoomIn:$i,onFitWidth:(0,d.unref)(Ki),onResetZoom:Zi,onToggleFullscreen:ta,onToggleImmersive:aa,onClear:ha,onValidate:Pa,onPreview:oa,onSubmitData:la,onVariableData:fa,onTogglePageDecorations:Sa,onToggleChrome:co},{authoring:(0,d.withCtx)(()=>[(0,d.createVNode)(ce.default,{ref_key:`authoringBarElement`,ref:ot,compact:``,query:(0,d.unref)(mn),"onUpdate:query":t[2]||=e=>(0,d.isRef)(mn)?mn.value=e:null,replacement:(0,d.unref)(hn),"onUpdate:replacement":t[3]||=e=>(0,d.isRef)(hn)?hn.value=e:null,"match-case":(0,d.unref)(gn),"onUpdate:matchCase":t[4]||=e=>(0,d.isRef)(gn)?gn.value=e:null,panel:(0,d.unref)(pn),readonly:B.value,total:(0,d.unref)(_n).length,"current-index":(0,d.unref)(vn),"current-page":(0,d.unref)(yn)?(0,d.unref)(yn).pageIndex+1:void 0,feedback:(0,d.unref)(bn),onOpen:(0,d.unref)(Sn),onClose:t[5]||=e=>(0,d.unref)(Cn)(),onNavigate:(0,d.unref)(wn),onReplaceCurrent:(0,d.unref)(Tn),onReplaceAll:(0,d.unref)(En)},null,8,[`query`,`replacement`,`match-case`,`panel`,`readonly`,`total`,`current-index`,`current-page`,`feedback`,`onOpen`,`onNavigate`,`onReplaceCurrent`,`onReplaceAll`])]),_:1},8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-data-viewer`,`show-variable-data-viewer`,`readonly`,`zoom-percent`,`zoom-out-disabled`,`zoom-in-disabled`,`is-fullscreen`,`immersive`,`page-decorations-open`,`page-decorations-preset-label`,`page-decorations-enabled-count`,`page-decorations-enabled-states`,`onFitWidth`]),(0,d.createVNode)(se.default,{"variable-insert-popover-open":Ft.value,"onUpdate:variableInsertPopoverOpen":t[6]||=e=>Ft.value=e,"signing-layout-popover-open":Lt.value,"onUpdate:signingLayoutPopoverOpen":t[7]||=e=>Lt.value=e,"signing-mark-popover-open":Rt.value,"onUpdate:signingMarkPopoverOpen":t[8]||=e=>Rt.value=e,"image-insert-popover-open":It.value,"onUpdate:imageInsertPopoverOpen":t[9]||=e=>It.value=e,"image-insert-url":Bt.value,"onUpdate:imageInsertUrl":t[10]||=e=>Bt.value=e,"image-insert-width":Vt.value,"onUpdate:imageInsertWidth":t[11]||=e=>Vt.value=e,"image-insert-height":Ht.value,"onUpdate:imageInsertHeight":t[12]||=e=>Ht.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":t[13]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":t[14]||=e=>N.value=e,"table-insert-draft":rn.value,"onUpdate:tableInsertDraft":t[15]||=e=>rn.value=e,"toolbar-more-open":Nt.value,"onUpdate:toolbarMoreOpen":t[16]||=e=>Nt.value=e,readonly:B.value,"editor-state":K.value,"current-block-format":_r.value,"block-format-options":qn,"font-family-select-options":Gn.value,"current-editor-font-family":vr.value,"font-size-preset-options":Sr.value,"current-editor-font-size":yr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":br.value,"body-control-tool-items":tr.value,"signing-layout-presets":er.value,"page-limit-reached":nr.value,"normalized-max-pages":W.value,"image-processing":Wt.value,"image-insert-error":Ut.value,onCommand:t[17]||=e=>Z(e),onPatchBlockFormat:Wa,onPatchFontFamily:Ka,onPatchFontSize:Ga,onPatchColor:qa,onPatchTextAlign:Ua,onInsertVariable:_i,onInsertSigningLayout:Br,onInsertSigningMark:Ur,onOpenSigningLayoutCustom:Hr,onOpenImageFile:mi,onInsertImageUrl:gi,onAddPage:Zr,onInsertTable:To,onTableAction:jo,onFontSizeSearch:Ya,onFontSizeCommit:Xa,onFontSizeDropdownChange:Qa,onFontSizeKeydown:Za},null,8,`variable-insert-popover-open.signing-layout-popover-open.signing-mark-popover-open.image-insert-popover-open.image-insert-url.image-insert-width.image-insert-height.table-insert-popover-open.table-actions-popover-open.table-insert-draft.toolbar-more-open.readonly.editor-state.current-block-format.font-family-select-options.current-editor-font-family.font-size-preset-options.current-editor-font-size.editor-font-size-search-value.current-editor-text-color.body-control-tool-items.signing-layout-presets.page-limit-reached.normalized-max-pages.image-processing.image-insert-error`.split(`.`))],512),[[d.vShow,!O.value]]),O.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(Ee.Tooltip),{key:0,title:`展开工具区`},{default:(0,d.withCtx)(()=>[(0,d.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:it,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":rt,onClick:co},[(0,d.createVNode)((0,d.unref)(Oe.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,d.createCommentVNode)(``,!0),k.value&&!A.value?((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:jt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:ia},[(0,d.createVNode)((0,d.unref)(Oe.CompressOutlined),{"aria-hidden":`true`}),t[32]||=(0,d.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[33]||=(0,d.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,d.createCommentVNode)(``,!0),x.value?((0,d.openBlock)(),(0,d.createElementBlock)(`section`,ke,[(0,d.createVNode)((0,d.unref)(Ee.Alert),{type:Fn.value?`success`:`error`,message:In.value,"show-icon":``},null,8,[`type`,`message`]),S.value.length?((0,d.openBlock)(),(0,d.createElementBlock)(`div`,Ae,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(S.value,e=>((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>Fa(e)},[(0,d.createElementVNode)(`span`,null,(0,d.toDisplayString)(e.message),1),(0,d.createElementVNode)(`small`,null,(0,d.toDisplayString)(Ia(e)),1)],8,je))),128))])):(0,d.createCommentVNode)(``,!0)])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:Ye,class:`gd-contract-template-designer__canvas`},[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(v.value.pages,(e,n)=>((0,d.openBlock)(),(0,d.createBlock)(re.default,{key:`${_.value}:${e.id}`,ref_for:!0,ref:t=>zr(e.id,t),page:e,"page-index":n,"page-size":Jr(e),"page-decorations":v.value.pageDecorations,"total-pages":v.value.pages.length,variables:v.value.variables,"selected-variable-key":y.value,active:b.value===e.id,readonly:f.readonly,disabled:f.disabled,zoom:E.value,"process-image-file":fi,"search-query":(0,d.unref)(xn),"search-match-case":(0,d.unref)(gn),"active-search-match":(0,d.unref)(yn)?.pageId===e.id?(0,d.unref)(yn):void 0,"get-scroll-container":Xe,onPageUpdate:qr,onVariableDrop:yi,onVariableSelect:bi,onEditorFocus:t[18]||=e=>ya(e,!1),onEditorReady:(0,d.unref)(ir),onCompositionEnd:(0,d.unref)(ir),onPageLayoutChange:(0,d.unref)(ir),onEditorStateChange:wo,onEditorContextMenu:oo,onWordPaste:di,onVariableMoveBlocked:t[19]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`active`,`readonly`,`disabled`,`zoom`,`search-query`,`search-match-case`,`active-search-match`,`onEditorReady`,`onCompositionEnd`,`onPageLayoutChange`]))),128))],512)],512),(0,d.createVNode)(Ce.default,{collapsed:At.value,readonly:f.readonly,disabled:f.disabled,"body-control-tool-items":tr.value,"selected-variable":H.value,variables:v.value.variables,"current-variable-font-family":xr.value,"font-family-select-options":Gn.value,"text-align-options":(0,d.unref)(Kn),"border-style-options":Jn,"object-fit-options":Yn,"selected-variable-width-max":hr.value,"selected-variable-height-max":gr.value,"min-font-size":He,"max-font-size":Ue,"default-multiline-rows":(0,d.unref)(3),onToggle:t[20]||=e=>At.value=!At.value,onVariableDragStart:Hi,onInsertVariable:Ii,onDuplicateVariable:Pi,onRemoveVariable:Mi,onPatchVariable:Q,onRenameVariable:Si,onPatchStyle:Di,onPatchMultiline:Ai,onPatchRows:ji,onPatchFontFamily:Oi,onPatchFontSize:ki,onPatchTextAlign:wi,onPatchBorderStyle:Ti,onPatchObjectFit:Ei},null,8,[`collapsed`,`readonly`,`disabled`,`body-control-tool-items`,`selected-variable`,`variables`,`current-variable-font-family`,`font-family-select-options`,`text-align-options`,`selected-variable-width-max`,`selected-variable-height-max`,`default-multiline-rows`])],2),(0,d.withDirectives)((0,d.createVNode)(we.default,{ref_key:`pageDecorationsStudioElement`,ref:tt,id:nt,open:A.value,decorations:v.value.pageDecorations,variables:v.value.variables,"font-family-options":Gn.value,readonly:f.readonly,disabled:f.disabled,"active-tab":Mt.value,"onUpdate:activeTab":t[21]||=e=>Mt.value=e,onChange:Ci,onClose:Ca},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[d.vShow,A.value]]),((0,d.openBlock)(),(0,d.createBlock)(d.Teleport,{to:`body`},[I.value?((0,d.openBlock)(),(0,d.createBlock)(ie.default,{key:0,ref_key:`tableContextMenuElement`,ref:$t,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,d.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:Do,onKeydown:Oo},null,8,[`capabilities`,`active-alignment`,`style`])):(0,d.createCommentVNode)(``,!0),L.value?((0,d.openBlock)(),(0,d.createBlock)(fe.default,{key:1,ref_key:`imageContextMenuElement`,ref:en,width:tn.value,"onUpdate:width":t[22]||=e=>tn.value=e,height:nn.value,"onUpdate:height":t[23]||=e=>nn.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:ao,onApply:io,onKeydown:Ao},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,d.createCommentVNode)(``,!0),P.value?((0,d.openBlock)(),(0,d.createBlock)(ue.default,{key:2,ref_key:`textContextMenuElement`,ref:Gt,"bind-open":Zt.value,"onUpdate:bindOpen":t[24]||=e=>Zt.value=e,"bind-keyword":Qt.value,"onUpdate:bindKeyword":t[25]||=e=>Qt.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":K.value,"current-editor-text-color":br.value,"body-control-tool-items":tr.value,"text-menu-bindable-variables":mr.value,"variables-count":v.value.variables.length,"resolve-bind-variable-type-label":Bi,onCommand:Wr,onClipboard:Gr,onAddPage:vi,onInsertVariable:Li,onBindVariable:zi,onOpenBindPanel:Vi,onKeydown:ko,onPatchColor:Ja},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`variables-count`])):(0,d.createCommentVNode)(``,!0),F.value?((0,d.openBlock)(),(0,d.createBlock)(de.default,{key:3,ref_key:`textBubbleElement`,ref:Kt,x:F.value.x,y:F.value.y,"editor-state":K.value,"font-size-preset-options":Sr.value,"current-editor-font-size":yr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":br.value,"text-align-options":(0,d.unref)(Kn),onCommand:Z,onPatchFontSize:Ga,onPatchTextAlign:Ua,onPatchColor:Ja,onFontSizeSearch:Ya,onFontSizeCommit:Xa,onFontSizeDropdownChange:Qa,onFontSizeKeydown:Za,onMore:vo},null,8,[`x`,`y`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`current-editor-text-color`,`text-align-options`])):(0,d.createCommentVNode)(``,!0)])),(0,d.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:at,class:`gd-contract-template-designer__hidden-file-input`,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif,image/bmp`,tabindex:`-1`,"aria-hidden":`true`,onChange:hi},null,544),(0,d.createElementVNode)(`span`,Me,(0,d.toDisplayString)(R.value),1),(0,d.createVNode)(pe.default,{open:w.value,"onUpdate:open":t[26]||=e=>w.value=e,"preview-pages":jn.value,"preview-file-groups":Mn.value,"preview-active-group":Nn.value,"preview-snapshot":T.value,"font-base-url":f.contractFontBaseUrl,onCancel:sa,onSelectFile:t[27]||=e=>wt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`,`font-base-url`]),(0,d.createVNode)(me.default,{open:Tt.value,"onUpdate:open":t[28]||=e=>Tt.value=e,json:Et.value,onCancel:ua},null,8,[`open`,`json`]),(0,d.createVNode)(he.default,{open:Dt.value,"onUpdate:open":t[29]||=e=>Dt.value=e,data:Ot.value,"file-name":An.value?.name,onCancel:pa},null,8,[`open`,`data`,`file-name`]),(0,d.createVNode)(ge.default,{open:zt.value,"onUpdate:open":t[30]||=e=>zt.value=e,disabled:B.value,onInsert:Vr},null,8,[`open`,`disabled`])],38))}});exports.default=f;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/image-url.cjs`),a=require(`./utils/template-renderer.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),ee=require(`./utils/signing-layout-presets.cjs`),te=require(`./utils/context-variable.cjs`),ne=require(`./utils/caret-viewport.cjs`),re=require(`./DesignerPage.cjs`),ie=require(`./TableContextMenu.cjs`),ae=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),oe=require(`./utils/template-tool-icons.cjs`),se=require(`./ContractTemplateDesignerToolbar.cjs`),ce=require(`./ContractTemplateAuthoringBar.cjs`),le=require(`./composables/use-template-authoring.cjs`),ue=require(`./ContractTemplateTextContextMenu.cjs`),de=require(`./ContractTemplateTextBubbleMenu.cjs`),fe=require(`./ContractTemplateImageContextMenu.cjs`),pe=require(`./ContractTemplatePreviewModal.cjs`),me=require(`./ContractTemplateSubmitDataModal.cjs`),he=require(`./ContractTemplateVariableDataModal.cjs`),ge=require(`./SigningLayoutCustomModal.cjs`),_e=require(`./composables/use-template-draft-cache.cjs`),ve=require(`./composables/use-auto-pagination.cjs`),ye=require(`./composables/use-designer-files.cjs`),c=require(`./composables/use-template-files.cjs`),be=require(`./composables/use-draft-cache-session.cjs`),xe=require(`./ContractTemplateFileBar.cjs`),Se=require(`./ContractTemplateDesignerSidebar.cjs`),Ce=require(`./ContractTemplateDesignerInspector.cjs`),we=require(`./ContractTemplatePageDecorationsStudio.cjs`),l=require(`./utils/serialize-fingerprint.cjs`),Te=require(`./utils/editor-state.cjs`),u=require(`./utils/context-menu-viewport.cjs`);let d=require(`vue`),Ee=require(`ant-design-vue`),De=require(`@vueuse/core`),Oe=require(`@ant-design/icons-vue`);var ke={key:2,class:`gd-contract-template-designer__validation`},Ae={key:0,class:`gd-contract-template-designer__validation-list`},je=[`onClick`],Me={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},Ne=.5,Pe=1.5,Fe=.1,Ie=300,Le=500,Re=128,ze=108,Be=48,Ve=24,He=10,Ue=48,We=8,f=(0,d.defineComponent)({name:`ProContractTemplateDesigner`,__name:`ProContractTemplateDesigner`,props:{modelValue:{default:void 0},files:{},activeFileId:{},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},height:{default:760},pageSize:{default:()=>r.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>r.DEFAULT_FIELD_TYPES},signingLayoutPresets:{},showImageControl:{type:Boolean,default:!1},showCheckboxControl:{type:Boolean,default:!1},showAdvancedChoiceControls:{type:Boolean,default:!1},showBuiltinSelectorControls:{type:Boolean,default:!1},showCustomControls:{type:Boolean,default:!1},defaultVariableStyle:{default:()=>r.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},contractFontBaseUrl:{default:void 0},showSubmitDataViewer:{type:Boolean,default:!0},showVariableDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:_e.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:_e.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:_e.DEFAULT_DRAFT_CACHE_MAX_BYTES},showDraftCacheStatus:{type:Boolean,default:!0}},emits:[`update:modelValue`,`change`,`update:files`,`update:activeFileId`,`files-change`,`file-add`,`file-change`,`file-remove`,`file-move`,`variable-add`,`validate`,`draft-cache-change`,`page-limit`,`image-error`],setup(f,{expose:Ge,emit:Ke}){let p=f,m=Ke,qe=(0,d.computed)(()=>({height:typeof p.height==`number`?`${p.height}px`:p.height})),Je=(0,d.ref)(),Ye=(0,d.ref)();function Xe(){return Ye.value}function Ze(){let e=dt,t=Ye.value;return ne.captureCaretViewport(t,()=>e===dt&&!ln&&!B.value&&t?.isConnected!==!1)}function Qe(){dt+=1}let $e=(0,d.ref)(),et=(0,d.ref)(),tt=(0,d.ref)(),nt=`gd-contract-template-page-decorations-studio-${(0,d.useId)()}`,rt=`gd-contract-template-workspace-chrome-${(0,d.useId)()}`,it=(0,d.ref)(),at=(0,d.ref)(),ot=(0,d.ref)(),st=``,ct=``,lt,ut,dt=0,ft=r.createTemplateBodySync(),pt=new Map,mt=(0,d.ref)(!1),h=(0,d.computed)(()=>mt.value||Array.isArray(p.files)),ht=c.normalizeContractTemplateFiles(p.files,p.modelValue,p.pageSize),gt=c.constrainContractTemplateFiles(ht,p.pageSizeOptions),_t=h.value?gt.files:ht,vt=c.resolveContractTemplateActiveFileId(_t,p.activeFileId),g=(0,d.ref)(_t),_=(0,d.ref)(vt),yt=_t.find(e=>e.id===vt)??_t[0],bt=r.normalizeTemplateValue(yt?.template??p.modelValue,p.pageSize),v=(0,d.ref)(r.constrainTemplatePageSizes(bt,p.pageSizeOptions));h.value?(g.value=c.replaceContractTemplateFile(g.value,_.value,v.value),l.serializeFingerprint(g.value)!==l.serializeFingerprint(ht)&&J(g.value)):p.modelValue&&l.serializeFingerprint(v.value)!==l.serializeFingerprint(bt)&&Ir(v.value);let y=(0,d.ref)(``),b=(0,d.ref)(v.value.pages[0]?.id??``),x=(0,d.ref)(!1),S=(0,d.ref)([]),C=new Map,xt=(0,d.ref)(!1),St=(0,d.ref)(``),w=(0,d.ref)(!1),T=(0,d.ref)(),Ct=(0,d.ref)(),wt=(0,d.ref)(``),Tt=(0,d.ref)(!1),Et=(0,d.ref)(``),Dt=(0,d.ref)(!1),Ot=(0,d.ref)({values:{},variables:[]}),E=(0,d.ref)(1),D=(0,d.ref)(!1),kt=(0,d.ref)(!1),At=(0,d.ref)(!1),O=(0,d.ref)(!1),k=(0,d.ref)(!1),jt=(0,d.ref)(),A=(0,d.ref)(!1),Mt=(0,d.ref)(`header`),Nt=(0,d.ref)(!1),Pt=(0,d.ref)({}),j=(0,d.ref)(``),M=(0,d.ref)(!1),N=(0,d.ref)(!1),Ft=(0,d.ref)(!1),It=(0,d.ref)(!1),Lt=(0,d.ref)(!1),Rt=(0,d.ref)(!1),zt=(0,d.ref)(!1),Bt=(0,d.ref)(``),Vt=(0,d.ref)(),Ht=(0,d.ref)(),Ut=(0,d.ref)(``),Wt=(0,d.ref)(!1),P=(0,d.ref)(),Gt=(0,d.ref)(),F=(0,d.ref)(),Kt=(0,d.ref)(),qt=(0,d.ref)(!1),Jt,Yt=(0,d.ref)(!1),Xt,Zt=(0,d.ref)(!1),Qt=(0,d.ref)(``),I=(0,d.ref)(),$t=(0,d.ref)(),L=(0,d.ref)(),en=(0,d.ref)(),tn=(0,d.ref)(),nn=(0,d.ref)(),R=(0,d.ref)(``),z=(0,d.ref)(_e.createDraftCacheStatus(`idle`,`暂无本地草稿`)),rn=(0,d.ref)({rows:3,cols:3,withHeaderRow:!0}),an=new WeakSet,on=[`.gd-contract-template-designer__page-decorations-select-popup`,`.gd-contract-template-designer__page-decorations-dropdown-popup`].join(`,`),sn,cn,ln=!1,un=!1,dn,fn,B=(0,d.computed)(()=>p.readonly||p.disabled),{panel:pn,query:mn,replacement:hn,matchCase:gn,matches:_n,currentIndex:vn,currentMatch:yn,feedback:bn,highlightQuery:xn,open:Sn,close:Cn,navigate:wn,replaceCurrent:Tn,replaceAll:En,handleKeydown:Dn}=le.useTemplateAuthoring({pages:()=>v.value.pages,fileId:()=>_.value,readonly:()=>B.value,root:()=>Je.value,pageRefs:C,activatePage:ya,beforeOpen:()=>{$(),so(),O.value=!1},focusPanel:()=>ot.value?.focusPanel(),focusTrigger:e=>ot.value?.focusTrigger(e)}),On=(0,d.computed)(()=>!!(P.value||pn.value||I.value||L.value||M.value||N.value||Nt.value||Ft.value||It.value||Lt.value||Rt.value||zt.value)),kn=(0,d.computed)(()=>!!p.enableDraftCache&&!B.value),An=(0,d.computed)(()=>g.value.find(e=>e.id===_.value)??g.value[0]),jn=(0,d.computed)(()=>T.value?r.buildTemplatePreviewPages(T.value):[]),Mn=(0,d.computed)(()=>(Ct.value??[]).map(e=>({file:e,pages:r.buildTemplatePreviewPages(e.template)}))),Nn=(0,d.computed)(()=>Mn.value.find(e=>e.file.id===wt.value)??Mn.value[0]),V=(0,d.computed)(()=>v.value.pages.find(e=>e.id===b.value)??v.value.pages[0]),Pn=(0,d.computed)(()=>r.resolvePageSize(V.value?.pageSize,v.value.pageSize)),Fn=(0,d.computed)(()=>x.value&&S.value.length===0),In=(0,d.computed)(()=>x.value?Fn.value?`校验通过,正文变量与变量配置一致`:`发现 ${S.value.length} 个校验问题`:``),Ln=(0,d.computed)(()=>{let e=V.value?.title||`合同正文`;return`${h.value&&An.value?`${An.value.name} · `:``}${e} · ${Pn.value.label} · 共 ${v.value.pages.length} 页`}),Rn=(0,d.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(v.value.pageDecorations)]),zn=(0,d.computed)(()=>{let e=t.normalizePageDecorations(v.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),Bn=(0,d.computed)(()=>Object.values(zn.value).filter(Boolean).length),Vn=(0,d.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${_e.formatDraftCacheSavedAt(z.value.savedAt)}`;case`restored`:return`已恢复本地草稿`;case`too-large`:return`草稿过大,未缓存`;case`unavailable`:case`read-failed`:case`write-failed`:return`草稿缓存失败`;case`cleared`:return`草稿缓存已清理`;default:return``}}),Hn=(0,d.computed)(()=>({"is-success":z.value.type===`saved`||z.value.type===`restored`,"is-warning":z.value.type===`too-large`,"is-error":z.value.type===`unavailable`||z.value.type===`read-failed`||z.value.type===`write-failed`})),Un=(0,d.computed)(()=>`${Math.round(E.value*100)}%`),Wn=(0,d.computed)(()=>e.resolveFontFamilyOptions(p.fontFamilies,p.fontFamilyMode)),Gn=(0,d.computed)(()=>Wn.value.map(e=>({label:e.label,value:e.value}))),Kn=e.DEFAULT_TEXT_ALIGN_OPTIONS,qn=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Jn=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Yn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],Xn=(0,d.computed)(()=>r.normalizePageSizeOptions(p.pageSizeOptions)),Zn=(0,d.computed)(()=>Xn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:r.getPageSizeKey(e)}))),Qn=(0,d.computed)(()=>r.getPageSizeKey(Pn.value)),$n=(0,d.computed)(()=>p.draftCacheKey),H=(0,d.computed)(()=>v.value.variables.find(e=>e.key===y.value)),U=(0,d.computed)(()=>{let e=[...p.variableTypes,...p.showImageControl?[r.DEFAULT_IMAGE_FIELD_TYPE]:[],...p.showCheckboxControl?[r.DEFAULT_CHECKBOX_FIELD_TYPE]:[],...p.showAdvancedChoiceControls?r.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES:[],...p.showBuiltinSelectorControls?r.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES:[],...p.showCustomControls?r.DEFAULT_CUSTOM_FIELD_TYPES:[]].filter(e=>n.isContractTemplateFieldType(e?.type));return Array.from(new Map(e.map(e=>[e.type,e])).values())}),er=(0,d.computed)(()=>{let e=[...ee.SIGNING_LAYOUT_PRESET_KEYS.map(e=>ee.SIGNING_LAYOUT_PRESETS[e]),...(p.signingLayoutPresets??[]).filter(e=>!!e?.key)];return Array.from(new Map(e.map(e=>[e.key,e])).values())}),tr=(0,d.computed)(()=>U.value.map(e=>({...e,icon:oe.resolveFieldTypeIcon(e.type),group:e.type===`select`||e.type===`radio`?`basic`:e.type.endsWith(`-selector`)?`builtin-selector`:e.type===`custom`?`custom`:`basic`}))),W=(0,d.computed)(()=>r.normalizeContractTemplateMaxPages(p.maxPages)),nr=(0,d.computed)(()=>v.value.pages.length>=W.value),rr=(0,d.computed)(()=>{let e=ft.collectKeys(v.value);return Array.from(t.collectPageDecorationVariableKeys(v.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:ir,scheduleFullPagination:G,resetPagination:ar,disposePagination:or}=ve.useAutoPagination({templateValue:v,readonlyState:B,isAutoPaginating:xt,pendingPaginationPageId:St,activePageId:b,normalizedMaxPages:W,pageRefs:C,applyPagesChange:e=>{v.value={...v.value,pages:e},x.value=!1,S.value=[],Nr()},getPageSize:Jr,notifyPageLimit:Xr,captureViewport:Ze}),{saveDraftCache:sr,loadDraftCache:cr,clearDraftCache:lr,restoreDraftCacheIfNeeded:ur,stopDraftCacheTimer:dr,restartDraftCacheTimer:fr,resetDraftFingerprint:pr}=be.useDraftCacheSession({draftCacheWritable:kn,multipleFilesMode:h,filesValue:g,activeFileIdValue:_,templateValue:v,draftCacheKey:$n,draftCacheInterval:()=>p.draftCacheInterval,draftCacheMaxBytes:()=>p.draftCacheMaxBytes,pageSize:()=>p.pageSize,pageSizeOptions:()=>p.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:()=>(Mr(),kr()),setActiveFileId:Y,emitFilesChange:J,commit:X,updateDraftCacheStatus:Lr,scheduleFullPagination:G,activePageId:b,selectedVariableKey:y}),mr=(0,d.computed)(()=>{let e=Qt.value.trim().toLowerCase(),t=v.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),hr=(0,d.computed)(()=>Math.max(Be,Pn.value.width-Re)),gr=(0,d.computed)(()=>Math.max(Ve,Pn.value.height-ze)),K=(0,d.computed)(()=>Pt.value[b.value]??wr()),_r=(0,d.computed)(()=>K.value.hasMixedBlockFormats?void 0:K.value.currentHeadingLevel??`paragraph`),vr=(0,d.computed)(()=>K.value.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),yr=(0,d.computed)(()=>K.value.fontSize??r.DEFAULT_FIELD_STYLE.fontSize??14),br=(0,d.computed)(()=>K.value.textColor||r.DEFAULT_FIELD_STYLE.color||`#1f2937`),xr=(0,d.computed)(()=>H.value?.style?.fontFamily||r.DEFAULT_FIELD_STYLE.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY),Sr=(0,d.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=Or(yr.value),r=Or(j.value),i=new Map;return r&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(r)&&i.set(r,{label:`使用 ${r}px`,value:r}),n&&!e.DEFAULT_FONT_SIZE_PRESETS.includes(n)&&i.set(n,{label:r===n?`使用 ${n}px`:`${n}px`,value:n}),[...Array.from(i.values()),...t]});(0,d.watch)(()=>p.modelValue,(e,t)=>{if(!e||h.value)return;if(e!==t&&ut&&(0,d.toRaw)(e)===(0,d.toRaw)(ut)){ct=``;return}if(l.serializeFingerprint(e)===ct){ct=``;return}let n=r.normalizeTemplateValue(e,p.pageSize),i=r.constrainTemplatePageSizes(n,p.pageSizeOptions),a=l.serializeFingerprint(i)!==l.serializeFingerprint(v.value),o=l.serializeFingerprint(i)===ct;o&&(ct=``),(a||!o)&&(ct=``,Qe(),ar(),ft.clear(),jr(),v.value=i,g.value=c.replaceContractTemplateFile(g.value,_.value,i),b.value=i.pages[0]?.id??``,y.value=``,G()),l.serializeFingerprint(i)!==l.serializeFingerprint(n)&&Ir(i)},{deep:!0}),(0,d.watch)(()=>p.files,(e,t)=>{if(!Array.isArray(e))return;if(e!==t&&lt&&(0,d.toRaw)(e)===(0,d.toRaw)(lt)){st=``;return}if(l.serializeFingerprint(e)===st){st=``;return}let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions).files,i=l.serializeFingerprint(r),a=l.serializeFingerprint(g.value);i===st&&(st=``);let o=c.resolveContractTemplateActiveFileId(r,p.activeFileId||_.value);i===a?o!==_.value&&Y(o,{syncCurrent:!1,shouldEmit:!1}):(st=``,g.value=r,Y(o,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0})),i!==l.serializeFingerprint(n)&&J(r)},{deep:!0}),(0,d.watch)(()=>p.activeFileId,e=>{!h.value||!e||e===_.value||Y(e,{syncCurrent:!0,shouldEmit:!1})});function Cr(e,t){let n=l.serializeFingerprint(g.value);q(!1);let i=c.normalizeContractTemplateFiles(g.value,void 0,e),{files:a}=c.constrainContractTemplateFiles(i,t),o=l.serializeFingerprint(a)!==n,s=a.find(e=>e.id===_.value);return s&&l.serializeFingerprint(s.template)!==l.serializeFingerprint(v.value)&&(v.value=r.cloneTemplateValue(s.template)),o&&(x.value=!1,S.value=[],J(a,``)),o}(0,d.watch)([()=>p.pageSize,()=>p.pageSizeOptions],([e,t])=>{if(h.value){Cr(e,t),G();return}let n=r.normalizeTemplateValue(v.value,e),i=r.constrainTemplatePageSizes(n,t);l.serializeFingerprint(i)!==l.serializeFingerprint(v.value)&&X(i),G()},{deep:!0}),(0,d.watch)(W,()=>{G()}),(0,d.watch)(B,e=>{e?($(),M.value=!1,N.value=!1):G()}),(0,d.watch)(b,()=>{F.value=void 0}),(0,d.watch)([On,A,w],()=>{uo()}),(0,d.watch)(()=>[p.enableDraftCache,$n.value,p.draftCacheInterval,B.value],()=>{pr(),fr()}),(0,d.watch)(D,e=>{if(!(typeof document>`u`)){if(e){sn=document.body.style.overflow,document.body.style.overflow=`hidden`;return}document.body.style.overflow=sn??``,sn=void 0}}),(0,d.onMounted)(()=>{ur(),fr(),G(),document.fonts?.ready.then(G),document.fonts?.addEventListener(`loadingdone`,G),window.addEventListener(`pointerdown`,yo,!0),window.addEventListener(`pointerup`,go),window.addEventListener(`keydown`,So,!0),window.addEventListener(`keydown`,Co),window.addEventListener(`resize`,_o),window.addEventListener(`scroll`,bo,!0)}),(0,d.onBeforeUnmount)(()=>{Qe(),or(),Mr(),ln=!0,D.value&&typeof document<`u`&&(document.body.style.overflow=sn??``),document.fonts?.removeEventListener(`loadingdone`,G),window.removeEventListener(`pointerdown`,yo,!0),window.removeEventListener(`pointerup`,go),window.removeEventListener(`keydown`,So,!0),window.removeEventListener(`keydown`,Co),window.removeEventListener(`resize`,_o),window.removeEventListener(`scroll`,bo,!0),Xt!==void 0&&cancelAnimationFrame(Xt),dr()});function wr(){return{isFocused:!1,canUndo:!1,canRedo:!1,isBold:!1,isItalic:!1,isUnderline:!1,isBulletList:!1,isOrderedList:!1,isTableActive:!1,textAlign:`left`,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:r.DEFAULT_FIELD_STYLE.fontSize??14,textColor:r.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function Tr(e){return e===`left`||e===`center`||e===`right`}function Er(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function Dr(e,t=yr.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ue,Math.max(He,Math.round(n))):t}function Or(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ue,Math.max(He,Math.round(n)))}function kr(e=v.value){let t=!1,n=e.pages.map(e=>{let n=C.get(e.id)?.getContentSnapshot(e),r=n?.contentHtml??e.contentHtml,i=n?.contentJson??e.contentJson;return r===e.contentHtml&&(0,d.toRaw)(i)===(0,d.toRaw)(e.contentJson)?e:(t=!0,{...e,contentHtml:r,contentJson:i})});return t?{...e,pages:n}:e}function Ar(){dn!==void 0&&(clearTimeout(dn),dn=void 0),fn!==void 0&&typeof cancelIdleCallback==`function`&&cancelIdleCallback(fn),fn=void 0}function jr(){un=!1,Ar()}function Mr(){let e=un;jr(),e&&Fr()}function Nr(){un=!0,Ar(),dn=setTimeout(()=>{dn=void 0;let e=()=>{if(fn=void 0,!(!un||ln)){if(xt.value)return Nr();un=!1,Fr()}};typeof requestIdleCallback==`function`?fn=requestIdleCallback(e,{timeout:Le}):e()},Ie)}function Pr(e){let t=v.value.pages,n=t.findIndex(t=>t.id===e.id);if(n<0)return;let r=t[n];if(r.contentHtml===e.contentHtml&&r.contentJson===e.contentJson&&r.title===e.title&&r.pageSize===e.pageSize)return;let i=t.slice();i[n]=e,v.value={...v.value,pages:i}}function Fr(){let e=kr(),t=ft.sync(e);y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),X(t,{normalizedBody:!0})}function q(e=!1){Mr();let t=r.cloneTemplateValue(kr());if(!h.value)return t;let n=g.value.find(e=>e.id===_.value)?.template,i=l.serializeFingerprint(n)!==l.serializeFingerprint(t),a=c.replaceContractTemplateFile(g.value,_.value,t);return g.value=a,i&&e&&J(a),t}function Ir(e){let t=r.cloneTemplateValue(e);ut=t,ct=l.serializeFingerprint(e),m(`update:modelValue`,t),m(`change`,r.cloneTemplateValue(e))}function J(e,t=_.value){if(!h.value)return;let n=c.cloneContractTemplateFiles(e),r=c.cloneContractTemplateFiles(n);g.value=n,lt=r,st=l.serializeFingerprint(r),m(`update:files`,r),m(`files-change`,c.cloneContractTemplateFiles(r));let i=r.find(e=>e.id===t);i&&m(`file-change`,c.cloneContractTemplateFiles([i])[0])}function Y(e,t={}){let{syncCurrent:n,shouldEmit:i,forceRefresh:a}=ye.resolveSetActiveFileIdOptions(t),o=c.resolveContractTemplateActiveFileId(g.value,e),s=o!==_.value;if((s||a)&&g.value.some(e=>e.id===o)&&(Qe(),ar()),n?q(!0):jr(),!s&&!a)return;let ee=g.value.find(e=>e.id===o);ee&&(_.value=o,v.value=r.cloneTemplateValue(ee.template),y.value=``,b.value=v.value.pages[0]?.id??``,Pt.value={},C.clear(),ft.clear(),pt.clear(),x.value=!1,S.value=[],w.value=!1,T.value=void 0,Ct.value=void 0,pr(),i&&s&&m(`update:activeFileId`,o),n&&s&&kn.value&&sr(),(0,d.nextTick)(()=>{G()}))}function X(e,t={}){jr();let n=t.normalizedBody?e:r.constrainTemplatePageSizes(r.normalizeTemplateValue(e,p.pageSize),p.pageSizeOptions);return t.normalizedBody||(ft.clear(),pt.clear()),v.value=n,x.value=!1,S.value=[],h.value?J(c.replaceContractTemplateFile(g.value,_.value,n)):(g.value=c.replaceContractTemplateFile(g.value,_.value,n),Ir(n)),n}function Lr(e,t=e.type!==`unchanged`){z.value=e,t&&m(`draft-cache-change`,{...e})}function Rr(){return{...z.value}}function zr(e,t){t?C.set(e,t):C.delete(e)}function Br(e){$(),Lt.value=!1,Z({type:`insert-signing-layout`,preset:ee.isSigningLayoutPresetKey(e.key)?e.key:void 0,options:e.options})}function Vr(e){$(),Z({type:`insert-signing-layout`,options:e})}function Hr(){Lt.value=!1,zt.value=!0}function Ur(e){$(),Rt.value=!1,Z({type:`insert-signing-mark`,mark:{markType:e}})}function Z(e,t=V.value?.id??b.value){B.value||C.get(t)?.runCommand(e)}function Wr(e){Z(e),$()}function Gr(e){let t=P.value?.pageId;t&&(C.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function Kr(e){let t=X(r.syncTemplateVariablesWithPages(e));return y.value&&!t.variables.some(e=>e.key===y.value)&&(y.value=``),t}function qr(e){Pr(e),Nr(),ir(e.id)}function Jr(e){let t=r.resolvePageSize(e?.pageSize,v.value.pageSize),n=`${r.getPageSizeKey(t)}:${t.label??``}`;return pt.get(n)||(pt.set(n,t),t)}function Yr(e){if(B.value||!V.value)return;let t=Xn.value.find(t=>r.getPageSizeKey(t)===e);if(!t)return;let n=V.value.id,i=r.resolvePageSize(t,v.value.pageSize);X({...v.value,pages:v.value.pages.map(e=>e.id===n?{...e,pageSize:i}:e)}),ir(n)}function Xr(e){let t=W.value;R.value=`合同最多支持 ${t} 页`,m(`page-limit`,t,e)}function Zr(){if(B.value)return;if(nr.value){Xr(`add`);return}let e=r.createDefaultPage(v.value.pages.length+1,Pn.value);X({...v.value,pages:[...v.value.pages,e]}),b.value=e.id,G()}function Qr(e){if(B.value)return;if(nr.value){Xr(`duplicate`);return}let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=r.cloneTemplateValue({pages:[e],variables:[],pageSize:v.value.pageSize}).pages[0],i=r.createBlankPage(t+2,Jr(e),n.contentHtml,n.contentJson);i.title=`${e.title||`第 ${t+1} 页`}副本`;let a=[...v.value.pages];a.splice(t+1,0,i),X({...v.value,pages:a}),b.value=i.id,G()}function $r(e){if(B.value||v.value.pages.length<=1)return;let t=v.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=v.value.pages.filter(t=>t.id!==e.id),r=Kr({...v.value,pages:n});b.value=r.pages[Math.min(t,r.pages.length-1)]?.id??``,G()}function ei(e){B.value||v.value.pages.length<=1||Ee.Modal.confirm({title:`删除合同页面`,content:`删除页面会同时移除页面正文,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{$r(e)}})}function ti(e){let t=new Set(v.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function ni(e){let t=e.type??`text`;return r.createTemplateVariable({...e,type:t,key:e.key||ti(t),label:e.label||r.getFieldOption(t,U.value).label},U.value,p.defaultVariableStyle)}function ri(e,t=V.value?.id??v.value.pages[0].id,n){if(B.value)return e;let r=C.get(t)?.insertVariable(e,n),i=!v.value.variables.some(t=>t.key===e.key);return X({...v.value,pages:r?v.value.pages.map(e=>e.id===r.id?r:e):v.value.pages,variables:i?[...v.value.variables,e]:v.value.variables}),y.value=e.key,b.value=t,i&&m(`variable-add`,e),ir(t),e}function ii(e){let{width:t,height:n,...r}=e,i=s.normalizeContractImageDimension(t),a=s.normalizeContractImageDimension(n);return{...r,...i===void 0?{}:{width:i},...a===void 0?{}:{height:a}}}function ai(e={}){let t=s.normalizeContractImageDimension(Vt.value),n=s.normalizeContractImageDimension(Ht.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function oi(){Bt.value=``,Vt.value=void 0,Ht.value=void 0,Ut.value=``}function si(e,t=V.value?.id??v.value.pages[0]?.id,n){let r=ii({...e,src:e.src.trim()});if(!(B.value||!t||!i.isSafeContractImageUrl(r.src)||!r.src||!C.get(t)?.insertContentImage(r,n)))return b.value=t,y.value=``,r.src}function ci(e){return e instanceof Error?e:Error(`图片处理失败`)}async function li(e,t){t===`toolbar`&&(Wt.value=!0,Ut.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:p.imageCompression,upload:p.imageUpload});return ln?void 0:n.src}catch(e){let n=ci(e);t===`toolbar`&&(Ut.value=n.message),R.value=n.message,m(`image-error`,n,t);return}finally{t===`toolbar`&&(Wt.value=!1)}}let ui=0;function di(e){let t=e.replacedFontFamilies.filter(Boolean);if(!t.length)return;let n=Date.now();n-ui<800||(ui=n,Ee.message.info(`已将 ${t.length} 种外部字体(${t.join(`、`)})统一为合同标准字体,以保证 Mac 与 Windows 排版一致`))}async function fi(e){return await li(e,`paste`)??null}async function pi(e,t={}){if(B.value)return;let n=V.value?.id??v.value.pages[0]?.id,r=n?C.get(n)?.getSelectionRange():void 0,a=typeof e==`string`?e.trim():await li(e,`toolbar`);if(ln)return;if(!a||!i.isSafeContractImageUrl(a)){typeof e==`string`&&(Ut.value=`请输入安全的图片 URL`);return}if(n&&!C.has(n))return;let o=si({...t,src:a},n,r);return o&&(It.value=!1,oi(),R.value=`已插入图片`),o}function mi(){B.value||Wt.value||($(),Ut.value=``,at.value&&(at.value.value=``),at.value?.click())}async function hi(e){let t=e.target.files?.[0];t&&await pi(t,ai({alt:t.name}))}async function gi(){let e=Bt.value;await pi(e,ai())}function _i(e){Ii(e),Ft.value=!1}function vi(){$(),Zr()}function yi(e,t,n,r){$(),ri(ni({type:t}),e,{left:n,top:r})}function bi(e){$(),y.value=e}function xi(e){let n=v.value.variables.find(t=>t.id===e.id);if(!n)return;let i=e.key.trim();if(i!==n.key){let t=r.validateContractTemplateVariableKey(i,v.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:i};let a=[...v.value.pages],o=n.key;C.forEach((t,n)=>{let r=t.updateVariable(e,o);if(r){let e=a.findIndex(e=>e.id===n);e>=0&&(a[e]=r)}}),X({...v.value,pages:a,variables:v.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,o,e.key)}:{}}),y.value=e.key,G()}function Q(e){H.value&&xi({...H.value,...e,style:{...H.value.style,...e.style}})}function Si(e){B.value||!H.value||Q({key:e})}function Ci(e){B.value||(X({...v.value,pageDecorations:t.normalizePageDecorations(e)}),G())}function wi(e){(e===`left`||e===`center`||e===`right`)&&Q({style:{textAlign:e}})}function Ti(e){(e===`solid`||e===`dashed`)&&Q({style:{borderStyle:e}})}function Ei(e){(e===`contain`||e===`cover`||e===`fill`)&&Q({style:{objectFit:e}})}function Di(e){Q({style:e})}function Oi(t){Di({fontFamily:String(t||``).trim()||e.DEFAULT_CONTRACT_FONT_FAMILY})}function ki(e){Di({fontSize:Dr(e,H.value?.style?.fontSize??14)})}function Ai(e){H.value&&Q({multiline:e,rows:H.value.rows||3,lineHeight:H.value.lineHeight||28})}function ji(e){H.value&&Q({rows:Number(e||3),lineHeight:H.value.lineHeight||28})}function Mi(e){if(B.value)return;let n=[...v.value.pages];C.forEach((t,r)=>{let i=t.removeVariable(e.key);if(i){let e=n.findIndex(e=>e.id===r);e>=0&&(n[e]=i)}}),X({...v.value,pages:n,variables:v.value.variables.filter(t=>t.id!==e.id),...v.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(v.value.pageDecorations,e.key)}:{}}),y.value=``}function Ni(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(v.value.variables.map(e=>e.key));if(!n.has(t))return t;let r=2;for(;n.has(`${t}_${r}`);)r+=1;return`${t}_${r}`}function Pi(e){B.value||ri(r.createTemplateVariable({...e,id:void 0,key:Ni(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},U.value,p.defaultVariableStyle))}function Fi(e){return B.value?void 0:ri(v.value.variables.find(t=>t.key===e.key)??r.createTemplateVariable(e,U.value,p.defaultVariableStyle))}function Ii(e){if(!B.value)return ri(ni({type:e}))}function Li(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=U.value.find(t=>t.type===e);if(!t||!r)return;let i=te.inferContextVariableLabel(t.leadingText)||r.label,a=te.resolveContextVariableWidth(t.selectionWidth,Be,hr.value),o=Ri();ri(ni({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function Ri(){let e=K.value,t={};return e.isUnderline&&(t.underline=!0),typeof e.fontSize==`number`&&Number.isFinite(e.fontSize)&&(t.fontSize=e.fontSize),e.fontFamily&&(t.fontFamily=e.fontFamily),e.textColor&&(t.color=e.textColor),Object.keys(t).length?t:void 0}function zi(e){if(B.value)return;let t=P.value;t&&(ri(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function Bi(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return r.getFieldOption(t,U.value).label}function Vi(){v.value.variables.length&&(Zt.value=!0,(0,d.nextTick)(()=>{eo(),Gt.value?.focusBindSearch()}))}function Hi(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function Ui(e){return E.value=Math.round(Math.min(Pe,Math.max(Ne,Number.isFinite(e)?e:1))*100)/100,E.value}let{width:Wi}=(0,De.useElementSize)(Ye),Gi=(0,d.computed)(()=>Math.max(...v.value.pages.map(e=>Jr(e).width),r.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:Ki,applyAutoFit:qi,markUserAdjusted:Ji,userAdjusted:Yi}=o.useFitWidthZoom({viewportWidth:Wi,widestPageWidth:Gi,padding:48,minZoom:Ne,maxZoom:Pe,getZoom:()=>E.value,applyZoom:Ui});function Xi(e){return Ji(),Ui(e)}function Zi(){return qi()}function Qi(){return E.value}function $i(){Xi(E.value+Fe)}function ea(){Xi(E.value-Fe)}function ta(){$(),so(),D.value=!D.value}(0,d.watch)(Wi,e=>{k.value&&!Yi.value&&e>0&&Ki()});function na(e){O.value?it.value?.focus():e()}function ra(){$(),so(),A.value=!1,cn={fullscreen:D.value,sidebar:kt.value,inspector:At.value,chrome:O.value,zoom:E.value,userAdjusted:Yi.value},D.value=!0,kt.value=!0,At.value=!0,O.value=!0,k.value=!0,(0,d.nextTick)(()=>{B.value?jt.value?.focus():C.get(b.value)?.focus()})}function ia(){let e=cn;k.value=!1,cn=void 0,e&&(D.value=e.fullscreen,kt.value=e.sidebar,At.value=e.inspector,O.value=e.chrome,e.userAdjusted?Xi(e.zoom):qi(),(0,d.nextTick)(()=>na(()=>et.value?.focusImmersive())))}function aa(){k.value?ia():ra()}function oa(){$(),F.value=void 0;let e=q(!1);h.value?(Ct.value=c.cloneContractTemplateFiles(g.value),T.value=void 0,wt.value=_.value||g.value[0]?.id||``):(T.value=r.cloneTemplateValue(e),Ct.value=void 0,wt.value=``),w.value=!0}function sa(){w.value=!1,T.value=void 0,Ct.value=void 0,wt.value=``}function ca(){return La()}function la(){$();let e=ca();return Et.value=JSON.stringify(e,null,2),Tt.value=!0,e}function ua(){Tt.value=!1}function da(){return a.buildTemplateVariableData(q(!1))}function fa(){$();let e=da();return Ot.value=e,Dt.value=!0,e}function pa(){Dt.value=!1}function ma(){$(),F.value=void 0,M.value=!1,N.value=!1,y.value=``,b.value=``,w.value=!1,T.value=void 0,Ct.value=void 0,Tt.value=!1,Et.value=``,Dt.value=!1,Ot.value={values:{},variables:[]},Pt.value={},Qe(),ar();let e=X(r.createBlankTemplate(r.DEFAULT_PAGE_SIZE));return b.value=e.pages[0]?.id??``,r.cloneTemplateValue(e)}function ha(){B.value||($(),Ee.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面和模板变量,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{ma()}}))}function ga(e){let t=kr().pages,n=t.find(e=>e.id===b.value);return(n?[n,...t.filter(e=>e.id!==n.id)]:t).find(t=>t.contentHtml.includes(`data-key="${e.key}"`)||t.contentHtml.includes(`data-key='${e.key}'`))}function _a(e){$(),y.value=e.key;let t=ga(e);t&&(b.value=t.id,(0,d.nextTick)(()=>{C.get(t.id)?.scrollIntoVariable(e.key)}))}function va(e){let t=v.value.variables.find(t=>t.key===e||t.id===e);t&&_a(t)}function ya(e,t=!0){$(),b.value=e,t&&(0,d.nextTick)(()=>{C.get(e)?.scrollIntoPage()})}function ba(e){ya(e.pageId,!1),C.get(e.pageId)?.focusHeading(e.headingIndex)}function xa(e){v.value.pages.some(t=>t.id===e)&&ya(e)}function Sa(){if(A.value){Ca();return}A.value=!0}function Ca(){A.value=!1,(0,d.nextTick)(()=>na(()=>et.value?.focusPageDecorations()))}function wa(){return Mr(),r.cloneTemplateValue(kr())}function Ta(e){Qe(),ar(),X(e),G()}function Ea(){let e=q(!1);return h.value?c.cloneContractTemplateFiles(g.value):c.cloneContractTemplateFiles(c.replaceContractTemplateFile(g.value,_.value,e))}function Da(e,t){let n=c.normalizeContractTemplateFiles(e,void 0,p.pageSize),r=c.constrainContractTemplateFiles(n,p.pageSizeOptions),i=g.value;mt.value=!0,q(!1),g.value=r.files,Y(c.resolveContractTemplateActiveFileId(g.value,t??_.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.serializeFingerprint(i)!==l.serializeFingerprint(g.value)&&J(g.value,``)}function Oa(e){if(B.value)return;mt.value=!0,q(!0);let t=c.createContractTemplateFile(e||`合同文件 ${g.value.length+1}`,p.pageSize);return g.value=[...g.value,t],J(g.value,``),m(`file-add`,c.cloneContractTemplateFiles([t])[0]),Y(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function ka(e){!h.value&&!g.value.some(t=>t.id===e)||(mt.value=!0,Y(e))}function Aa(e,t){if(B.value)return;mt.value=!0,q(!1);let n=c.renameContractTemplateFile(g.value,e,t),r=n.find(t=>t.id===e);if(r)return g.value=n,J(n,e),c.cloneContractTemplateFiles([r])[0]}function ja(e){if(B.value||g.value.length<=1)return;mt.value=!0,q(!1);let t=g.value.find(t=>t.id===e);if(!t)return;let n=c.removeContractTemplateFile(g.value,e);if(n.length!==g.value.length)return g.value=n,J(n,``),m(`file-remove`,c.cloneContractTemplateFiles([t])[0]),_.value===e&&Y(c.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),c.cloneContractTemplateFiles([t])[0]}function Ma(e){if(B.value||g.value.length<=1)return;let t=g.value.find(t=>t.id===e);t&&Ee.Modal.confirm({title:`删除合同文件`,content:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{ja(e)}})}function Na(e,t){if(B.value)return;mt.value=!0,q(!1);let n=g.value.findIndex(t=>t.id===e),r=c.moveContractTemplateFile(g.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return g.value=r,J(r,``),m(`file-move`,c.cloneContractTemplateFiles([a])[0],n,i),c.cloneContractTemplateFiles([a])[0]}function Pa(){q(!1);let e=za(h.value?g.value.flatMap(e=>r.validateTemplateValue(e.template,{maxPages:W.value}).map(t=>({...t,fileId:e.id}))):r.validateTemplateValue(kr(),{maxPages:W.value}));return S.value=e,x.value=!0,m(`validate`,e),e}function Fa(e){if(e.fileId&&e.fileId!==_.value){ka(e.fileId),(0,d.nextTick)(()=>Fa({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,d.nextTick)(()=>tt.value?.focusField(n));return}if(e.variableKey){va(e.variableKey);return}if(e.pageId){xa(e.pageId);return}let r=v.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){_a(r);return}v.value.pages.some(t=>t.id===e.id)&&ya(e.id)}function Ia(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`variable`?`变量`:`字段`}function La(){return Mr(),r.exportTemplateValue(kr())}function Ra(){let e=q(!1),t=h.value?g.value:c.replaceContractTemplateFile(g.value,_.value,e);return c.exportContractTemplateFiles(t)}function za(e){let t=new Set;return e.filter(e=>{let n=`${e.fileId??``}|${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return t.has(n)?!1:(t.add(n),!0)})}function Ba(e){S.value=[...e],x.value=!0}function Va(){S.value=[],x.value=!1}function Ha(){C.get(V.value?.id??b.value)?.focus()}function Ua(e){Tr(e)&&Z({type:`set-text-align`,value:e})}function Wa(e){(e===`paragraph`||Er(e))&&Z({type:`apply-block-style`,format:e})}function Ga(e){let t=Or(e);t&&(Z({type:`set-font-size`,value:t}),j.value=``)}function Ka(e){let t=String(e||``).trim();if(!t){Z({type:`unset-font-family`});return}Z({type:`set-font-family`,value:t})}function qa(e){Ja(e.target?.value??``)}function Ja(e){let t=e.trim();t&&Z({type:`set-color`,value:t})}function Ya(e){j.value=e}function Xa(){j.value.trim()&&Ga(j.value)}function Za(e){e.key===`Enter`&&(e.preventDefault(),Xa())}function Qa(e){e||(Xa(),j.value=``)}function $a(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Zt.value=!1,Qt.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,304,300);P.value={pageId:e.pageId,x:t.x,y:t.y,hasSelection:e.hasSelection,selectionWidth:e.selectionWidth,leadingText:e.leadingText},(0,d.nextTick)(()=>{eo(),Gt.value?.focusFirstButton()})}function eo(){let e=Gt.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function to(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=u.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,d.nextTick)(()=>{let e=$t.value?.getMenuElement(),t=I.value;if(e&&t){let n=u.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}$t.value?.focusFirstItem()})}function no(e){if(B.value)return;b.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,I.value=void 0,tn.value=e.image.width,nn.value=e.image.height,y.value=``;let t=u.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,d.nextTick)(()=>{ro(),en.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function ro(){let e=en.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=u.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function io(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(tn.value),height:s.normalizeContractImageDimension(nn.value)})&&(R.value=`已更新图片尺寸`),$())}function ao(){let e=L.value;!e||B.value||(C.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function oo(e){e.type===`table`?to(e):e.type===`image`?no(e):$a(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Zt.value=!1,Qt.value=``}function so(){Cn(!1),M.value=!1,N.value=!1,Nt.value=!1,Ft.value=!1,It.value=!1,Lt.value=!1,Rt.value=!1}function co(){so(),O.value=!O.value,(0,d.nextTick)(()=>na(()=>et.value?.focusChromeToggle()))}let lo=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function uo(){let e=B.value||Yt.value||qt.value||On.value||A.value||w.value,t=b.value,n=e?void 0:C.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-We,i=r>=12?r:n.bottom+We,a=(n.left+n.right)/2-380/2,o=u.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,d.nextTick)(()=>fo(n))}function fo(e){let t=Kt.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-We,a=i>=12?i:e.bottom+We,o=(e.left+e.right)/2-r.width/2,s=u.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function po(){let e=F.value?.pageId??b.value,t=C.get(e)?.getSelectionRange();Jt=t?{pageId:e,...t}:void 0,qt.value=!0,F.value=void 0}function mo(e){if(!qt.value)return;let t=Jt,n=C.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(qt.value=!1,Jt=void 0)}function ho(){!F.value||Xt!==void 0||(Xt=requestAnimationFrame(()=>{Xt=void 0,uo()}))}function go(){Yt.value&&(Yt.value=!1,uo())}function _o(){$(),ho()}function vo(e,t){C.get(F.value?.pageId??b.value)?.requestTextContextMenu(e,t)}function yo(e){let t=e.target instanceof Element?e.target:null;t?.closest(`.ProseMirror`)&&(Yt.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(lo)||($(),F.value&&po()))}function bo(e){(e.target instanceof Element?e.target:null)?.closest(lo)||($(),ho())}function xo(e){let t=Je.value;if(!t||typeof document>`u`)return!1;let n=e.target instanceof Node?e.target:void 0,r=document.activeElement;return!!(n&&t.contains(n)||r&&t.contains(r)||n instanceof Element&&n.closest(`.gd-contract-template-designer__context-menu`))}function So(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Je.value?.querySelector(`.gd-contract-template-designer__page-decorations-studio`);if(!t)return;let n=e.target instanceof Element?e.target:null,r=document.activeElement instanceof Element?document.activeElement:null,i=!!(n?.closest(on)||r?.closest(on)),a=!!(n&&t.contains(n)||r&&t.contains(r)),o=!!t.querySelector(`.ant-select-open, .ant-dropdown-open`);if(i||a&&o){an.add(e);return}!On.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),Ca())}function Co(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!kn.value||!xo(e))return;e.preventDefault(),sr();return}if(e.key===`Escape`){if(an.has(e)){an.delete(e);return}let t=On.value,n=t||A.value;if(!t&&A.value&&Ca(),$(),so(),n&&e.stopPropagation(),!n){if(F.value){po(),e.stopPropagation();return}k.value?ia():D.value=!1}}}function wo(e,t){e===b.value&&t.selectedContentImage&&(y.value=``),e===b.value&&(mo(e),uo());let n=Pt.value[e];n&&Te.isSameEditorState(n,t)||(Pt.value={...Pt.value,[e]:t})}function To(e=rn.value.rows,t=rn.value.cols){Z({type:`insert-table`,options:{rows:Math.min(10,Math.max(1,Math.round(Number(e)||3))),cols:Math.min(10,Math.max(1,Math.round(Number(t)||3))),withHeaderRow:!!rn.value.withHeaderRow}}),M.value=!1,$()}let Eo={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function Do(e){let t=I.value;if(!t)return;let n=()=>{Z(e,t.pageId),$()},r=Eo[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),Ee.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>C.get(t.pageId)?.focus()})}function Oo(e){let t=$t.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),C.get(t??``)?.focus();return}let n=Array.from(t.querySelectorAll(`button:not(:disabled)`));if(!n.length)return;if(e.key===`Home`||e.key===`End`){e.preventDefault(),n[e.key===`Home`?0:n.length-1]?.focus();return}if(![`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`].includes(e.key))return;let r=(Math.max(0,n.indexOf(document.activeElement))+(e.key===`ArrowUp`||e.key===`ArrowLeft`?-1:1)+n.length)%n.length;e.preventDefault(),n[r]?.focus()}function ko(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),C.get(t??``)?.focus()}function Ao(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),C.get(t??``)?.focus()}function jo(e){Z({type:e}),N.value=!1,$()}return Ge({getValue:wa,setValue:Ta,getFiles:Ea,setFiles:Da,addFile:Oa,selectFile:ka,renameFile:Aa,removeFile:ja,moveFile:Na,validate:Pa,exportTemplate:La,exportFiles:Ra,getSubmitData:ca,clearTemplate:ma,saveDraftCache:sr,loadDraftCache:cr,clearDraftCache:lr,getDraftCacheStatus:Rr,insertVariable:Fi,insertImage:pi,focus:Ha,openPreview:oa,closePreview:sa,openSubmitDataViewer:la,closeSubmitDataViewer:ua,getVariableData:da,openVariableDataViewer:fa,closeVariableDataViewer:pa,setServerValidationErrors:Ba,clearValidationErrors:Va,scrollToVariable:va,scrollToPage:xa,setZoom:Xi,resetZoom:Zi,getZoom:Qi,fitWidth:Ki}),(e,t)=>((0,d.openBlock)(),(0,d.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Je,class:(0,d.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":f.disabled,"is-readonly":B.value,"is-fullscreen":D.value,"is-immersive":k.value}]),style:(0,d.normalizeStyle)(qe.value),onKeydownCapture:t[31]||=(...e)=>(0,d.unref)(Dn)&&(0,d.unref)(Dn)(...e)},[h.value?((0,d.openBlock)(),(0,d.createBlock)(xe.default,{key:0,files:g.value,"active-file-id":_.value,readonly:B.value,onSelect:ka,onAdd:t[0]||=e=>Oa(),onRename:Aa,onRemove:Ma,onMove:Na},null,8,[`files`,`active-file-id`,`readonly`])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{class:(0,d.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":kt.value,"is-inspector-collapsed":At.value}])},[(0,d.createVNode)(Se.default,{collapsed:kt.value,"file-id":_.value,pages:v.value.pages,variables:v.value.variables,"decoration-variable-keys":rr.value,"active-page-id":b.value,"selected-variable-key":y.value,"normalized-max-pages":W.value,"page-limit-reached":nr.value,"selected-page":V.value,"selected-page-size":Pn.value,"normalized-page-size-options":Xn.value,"page-size-options":Zn.value,"selected-page-size-option-value":Qn.value,readonly:B.value,"get-page-size":Jr,onToggle:t[1]||=e=>kt.value=!kt.value,onAddPage:Zr,onActivatePage:ya,onNavigateOutline:ba,onDuplicatePage:Qr,onRemovePage:ei,onPatchPageFormat:Yr,onScrollToVariable:_a},null,8,[`collapsed`,`file-id`,`pages`,`variables`,`decoration-variable-keys`,`active-page-id`,`selected-variable-key`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`readonly`]),(0,d.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:$e,class:`gd-contract-template-designer__workspace`},[(0,d.withDirectives)((0,d.createElementVNode)(`div`,{id:rt,class:`gd-contract-template-designer__workspace-chrome`},[(0,d.createVNode)(ae.default,{ref_key:`workspaceHeaderElement`,ref:et,summary:Ln.value,"draft-cache-status-text":Vn.value,"draft-cache-status-class":Hn.value,"show-draft-cache-status":f.showDraftCacheStatus,"show-clear-button":f.showClearButton,"show-submit-data-viewer":f.showSubmitDataViewer,"show-variable-data-viewer":f.showVariableDataViewer,readonly:B.value,"zoom-percent":Un.value,"zoom-out-disabled":E.value<=Ne,"zoom-in-disabled":E.value>=Pe,"is-fullscreen":D.value,immersive:k.value,"page-decorations-open":A.value,"page-decorations-studio-id":nt,"page-decorations-preset-label":Rn.value,"page-decorations-enabled-count":Bn.value,"page-decorations-enabled-states":zn.value,"chrome-controls-id":rt,onZoomOut:ea,onZoomIn:$i,onFitWidth:(0,d.unref)(Ki),onResetZoom:Zi,onToggleFullscreen:ta,onToggleImmersive:aa,onClear:ha,onValidate:Pa,onPreview:oa,onSubmitData:la,onVariableData:fa,onTogglePageDecorations:Sa,onToggleChrome:co},{authoring:(0,d.withCtx)(()=>[(0,d.createVNode)(ce.default,{ref_key:`authoringBarElement`,ref:ot,compact:``,query:(0,d.unref)(mn),"onUpdate:query":t[2]||=e=>(0,d.isRef)(mn)?mn.value=e:null,replacement:(0,d.unref)(hn),"onUpdate:replacement":t[3]||=e=>(0,d.isRef)(hn)?hn.value=e:null,"match-case":(0,d.unref)(gn),"onUpdate:matchCase":t[4]||=e=>(0,d.isRef)(gn)?gn.value=e:null,panel:(0,d.unref)(pn),readonly:B.value,total:(0,d.unref)(_n).length,"current-index":(0,d.unref)(vn),"current-page":(0,d.unref)(yn)?(0,d.unref)(yn).pageIndex+1:void 0,feedback:(0,d.unref)(bn),onOpen:(0,d.unref)(Sn),onClose:t[5]||=e=>(0,d.unref)(Cn)(),onNavigate:(0,d.unref)(wn),onReplaceCurrent:(0,d.unref)(Tn),onReplaceAll:(0,d.unref)(En)},null,8,[`query`,`replacement`,`match-case`,`panel`,`readonly`,`total`,`current-index`,`current-page`,`feedback`,`onOpen`,`onNavigate`,`onReplaceCurrent`,`onReplaceAll`])]),_:1},8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-data-viewer`,`show-variable-data-viewer`,`readonly`,`zoom-percent`,`zoom-out-disabled`,`zoom-in-disabled`,`is-fullscreen`,`immersive`,`page-decorations-open`,`page-decorations-preset-label`,`page-decorations-enabled-count`,`page-decorations-enabled-states`,`onFitWidth`]),(0,d.createVNode)(se.default,{"variable-insert-popover-open":Ft.value,"onUpdate:variableInsertPopoverOpen":t[6]||=e=>Ft.value=e,"signing-layout-popover-open":Lt.value,"onUpdate:signingLayoutPopoverOpen":t[7]||=e=>Lt.value=e,"signing-mark-popover-open":Rt.value,"onUpdate:signingMarkPopoverOpen":t[8]||=e=>Rt.value=e,"image-insert-popover-open":It.value,"onUpdate:imageInsertPopoverOpen":t[9]||=e=>It.value=e,"image-insert-url":Bt.value,"onUpdate:imageInsertUrl":t[10]||=e=>Bt.value=e,"image-insert-width":Vt.value,"onUpdate:imageInsertWidth":t[11]||=e=>Vt.value=e,"image-insert-height":Ht.value,"onUpdate:imageInsertHeight":t[12]||=e=>Ht.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":t[13]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":t[14]||=e=>N.value=e,"table-insert-draft":rn.value,"onUpdate:tableInsertDraft":t[15]||=e=>rn.value=e,"toolbar-more-open":Nt.value,"onUpdate:toolbarMoreOpen":t[16]||=e=>Nt.value=e,readonly:B.value,"editor-state":K.value,"current-block-format":_r.value,"block-format-options":qn,"font-family-select-options":Gn.value,"current-editor-font-family":vr.value,"font-size-preset-options":Sr.value,"current-editor-font-size":yr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":br.value,"body-control-tool-items":tr.value,"signing-layout-presets":er.value,"page-limit-reached":nr.value,"normalized-max-pages":W.value,"image-processing":Wt.value,"image-insert-error":Ut.value,onCommand:t[17]||=e=>Z(e),onPatchBlockFormat:Wa,onPatchFontFamily:Ka,onPatchFontSize:Ga,onPatchColor:qa,onPatchTextAlign:Ua,onInsertVariable:_i,onInsertSigningLayout:Br,onInsertSigningMark:Ur,onOpenSigningLayoutCustom:Hr,onOpenImageFile:mi,onInsertImageUrl:gi,onAddPage:Zr,onInsertTable:To,onTableAction:jo,onFontSizeSearch:Ya,onFontSizeCommit:Xa,onFontSizeDropdownChange:Qa,onFontSizeKeydown:Za},null,8,`variable-insert-popover-open.signing-layout-popover-open.signing-mark-popover-open.image-insert-popover-open.image-insert-url.image-insert-width.image-insert-height.table-insert-popover-open.table-actions-popover-open.table-insert-draft.toolbar-more-open.readonly.editor-state.current-block-format.font-family-select-options.current-editor-font-family.font-size-preset-options.current-editor-font-size.editor-font-size-search-value.current-editor-text-color.body-control-tool-items.signing-layout-presets.page-limit-reached.normalized-max-pages.image-processing.image-insert-error`.split(`.`))],512),[[d.vShow,!O.value]]),O.value?((0,d.openBlock)(),(0,d.createBlock)((0,d.unref)(Ee.Tooltip),{key:0,title:`展开工具区`},{default:(0,d.withCtx)(()=>[(0,d.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:it,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":rt,onClick:co},[(0,d.createVNode)((0,d.unref)(Oe.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,d.createCommentVNode)(``,!0),k.value&&!A.value?((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:jt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:ia},[(0,d.createVNode)((0,d.unref)(Oe.CompressOutlined),{"aria-hidden":`true`}),t[32]||=(0,d.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[33]||=(0,d.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,d.createCommentVNode)(``,!0),x.value?((0,d.openBlock)(),(0,d.createElementBlock)(`section`,ke,[(0,d.createVNode)((0,d.unref)(Ee.Alert),{type:Fn.value?`success`:`error`,message:In.value,"show-icon":``},null,8,[`type`,`message`]),S.value.length?((0,d.openBlock)(),(0,d.createElementBlock)(`div`,Ae,[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(S.value,e=>((0,d.openBlock)(),(0,d.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>Fa(e)},[(0,d.createElementVNode)(`span`,null,(0,d.toDisplayString)(e.message),1),(0,d.createElementVNode)(`small`,null,(0,d.toDisplayString)(Ia(e)),1)],8,je))),128))])):(0,d.createCommentVNode)(``,!0)])):(0,d.createCommentVNode)(``,!0),(0,d.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:Ye,class:`gd-contract-template-designer__canvas`},[((0,d.openBlock)(!0),(0,d.createElementBlock)(d.Fragment,null,(0,d.renderList)(v.value.pages,(e,n)=>((0,d.openBlock)(),(0,d.createBlock)(re.default,{key:`${_.value}:${e.id}`,ref_for:!0,ref:t=>zr(e.id,t),page:e,"page-index":n,"page-size":Jr(e),"page-decorations":v.value.pageDecorations,"total-pages":v.value.pages.length,variables:v.value.variables,"selected-variable-key":y.value,active:b.value===e.id,readonly:f.readonly,disabled:f.disabled,zoom:E.value,"process-image-file":fi,"search-query":(0,d.unref)(xn),"search-match-case":(0,d.unref)(gn),"active-search-match":(0,d.unref)(yn)?.pageId===e.id?(0,d.unref)(yn):void 0,"get-scroll-container":Xe,onPageUpdate:qr,onVariableDrop:yi,onVariableSelect:bi,onEditorFocus:t[18]||=e=>ya(e,!1),onEditorReady:(0,d.unref)(ir),onCompositionEnd:(0,d.unref)(ir),onPageLayoutChange:(0,d.unref)(ir),onEditorStateChange:wo,onEditorContextMenu:oo,onWordPaste:di,onVariableMoveBlocked:t[19]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`active`,`readonly`,`disabled`,`zoom`,`search-query`,`search-match-case`,`active-search-match`,`onEditorReady`,`onCompositionEnd`,`onPageLayoutChange`]))),128))],512)],512),(0,d.createVNode)(Ce.default,{collapsed:At.value,readonly:f.readonly,disabled:f.disabled,"body-control-tool-items":tr.value,"selected-variable":H.value,variables:v.value.variables,"current-variable-font-family":xr.value,"font-family-select-options":Gn.value,"text-align-options":(0,d.unref)(Kn),"border-style-options":Jn,"object-fit-options":Yn,"selected-variable-width-max":hr.value,"selected-variable-height-max":gr.value,"min-font-size":He,"max-font-size":Ue,"default-multiline-rows":(0,d.unref)(3),onToggle:t[20]||=e=>At.value=!At.value,onVariableDragStart:Hi,onInsertVariable:Ii,onDuplicateVariable:Pi,onRemoveVariable:Mi,onPatchVariable:Q,onRenameVariable:Si,onPatchStyle:Di,onPatchMultiline:Ai,onPatchRows:ji,onPatchFontFamily:Oi,onPatchFontSize:ki,onPatchTextAlign:wi,onPatchBorderStyle:Ti,onPatchObjectFit:Ei},null,8,[`collapsed`,`readonly`,`disabled`,`body-control-tool-items`,`selected-variable`,`variables`,`current-variable-font-family`,`font-family-select-options`,`text-align-options`,`selected-variable-width-max`,`selected-variable-height-max`,`default-multiline-rows`])],2),(0,d.withDirectives)((0,d.createVNode)(we.default,{ref_key:`pageDecorationsStudioElement`,ref:tt,id:nt,open:A.value,decorations:v.value.pageDecorations,variables:v.value.variables,"font-family-options":Gn.value,readonly:f.readonly,disabled:f.disabled,"active-tab":Mt.value,"onUpdate:activeTab":t[21]||=e=>Mt.value=e,onChange:Ci,onClose:Ca},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[d.vShow,A.value]]),((0,d.openBlock)(),(0,d.createBlock)(d.Teleport,{to:`body`},[I.value?((0,d.openBlock)(),(0,d.createBlock)(ie.default,{key:0,ref_key:`tableContextMenuElement`,ref:$t,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,d.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:Do,onKeydown:Oo},null,8,[`capabilities`,`active-alignment`,`style`])):(0,d.createCommentVNode)(``,!0),L.value?((0,d.openBlock)(),(0,d.createBlock)(fe.default,{key:1,ref_key:`imageContextMenuElement`,ref:en,width:tn.value,"onUpdate:width":t[22]||=e=>tn.value=e,height:nn.value,"onUpdate:height":t[23]||=e=>nn.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:ao,onApply:io,onKeydown:Ao},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,d.createCommentVNode)(``,!0),P.value?((0,d.openBlock)(),(0,d.createBlock)(ue.default,{key:2,ref_key:`textContextMenuElement`,ref:Gt,"bind-open":Zt.value,"onUpdate:bindOpen":t[24]||=e=>Zt.value=e,"bind-keyword":Qt.value,"onUpdate:bindKeyword":t[25]||=e=>Qt.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":K.value,"current-editor-text-color":br.value,"body-control-tool-items":tr.value,"text-menu-bindable-variables":mr.value,"variables-count":v.value.variables.length,"resolve-bind-variable-type-label":Bi,onCommand:Wr,onClipboard:Gr,onAddPage:vi,onInsertVariable:Li,onBindVariable:zi,onOpenBindPanel:Vi,onKeydown:ko,onPatchColor:Ja},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`variables-count`])):(0,d.createCommentVNode)(``,!0),F.value?((0,d.openBlock)(),(0,d.createBlock)(de.default,{key:3,ref_key:`textBubbleElement`,ref:Kt,x:F.value.x,y:F.value.y,"editor-state":K.value,"font-size-preset-options":Sr.value,"current-editor-font-size":yr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":br.value,"text-align-options":(0,d.unref)(Kn),onCommand:Z,onPatchFontSize:Ga,onPatchTextAlign:Ua,onPatchColor:Ja,onFontSizeSearch:Ya,onFontSizeCommit:Xa,onFontSizeDropdownChange:Qa,onFontSizeKeydown:Za,onMore:vo},null,8,[`x`,`y`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`current-editor-text-color`,`text-align-options`])):(0,d.createCommentVNode)(``,!0)])),(0,d.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:at,class:`gd-contract-template-designer__hidden-file-input`,type:`file`,accept:`image/png,image/jpeg,image/webp,image/gif,image/bmp`,tabindex:`-1`,"aria-hidden":`true`,onChange:hi},null,544),(0,d.createElementVNode)(`span`,Me,(0,d.toDisplayString)(R.value),1),(0,d.createVNode)(pe.default,{open:w.value,"onUpdate:open":t[26]||=e=>w.value=e,"preview-pages":jn.value,"preview-file-groups":Mn.value,"preview-active-group":Nn.value,"preview-snapshot":T.value,"font-base-url":f.contractFontBaseUrl,onCancel:sa,onSelectFile:t[27]||=e=>wt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`,`font-base-url`]),(0,d.createVNode)(me.default,{open:Tt.value,"onUpdate:open":t[28]||=e=>Tt.value=e,json:Et.value,onCancel:ua},null,8,[`open`,`json`]),(0,d.createVNode)(he.default,{open:Dt.value,"onUpdate:open":t[29]||=e=>Dt.value=e,data:Ot.value,"file-name":An.value?.name,onCancel:pa},null,8,[`open`,`data`,`file-name`]),(0,d.createVNode)(ge.default,{open:zt.value,"onUpdate:open":t[30]||=e=>zt.value=e,disabled:B.value,onInsert:Vr},null,8,[`open`,`disabled`])],38))}});exports.default=f;
@@ -1,4 +1,4 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/template-variable-render.cjs`),r=require(`../utils/page-decorations.cjs`),i=require(`../types.cjs`),a=require(`../utils/advanced-controls.cjs`);let o=require(`vue`);var s=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],c={...s[4]},l={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},ee=3,te=28,u=`contract-template-renderer-1.0.0`,d=`contract-render-css-1.0.0`,f=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,p=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function m(e,t,n){let r=typeof e==`string`?e.trim():``;return r?f.test(r)?p.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function h(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var g=[{type:`text`,label:`输入框`,defaultWidth:160,defaultHeight:32},{type:`date`,label:`日期`,defaultWidth:140,defaultHeight:32},{type:`number`,label:`数字`,defaultWidth:120,defaultHeight:32},{type:`image`,label:`图片`,defaultWidth:160,defaultHeight:96},{type:`checkbox`,label:`复选框`,defaultWidth:96,defaultHeight:28}],_=[{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],v=[{type:`user-selector`,label:`用户选择器`,defaultWidth:240,defaultHeight:36},{type:`dept-selector`,label:`部门选择器`,defaultWidth:240,defaultHeight:36},{type:`role-selector`,label:`角色选择器`,defaultWidth:240,defaultHeight:36},{type:`org-selector`,label:`组织架构`,defaultWidth:240,defaultHeight:36}],y=[{type:`custom`,label:`自定义控件`,defaultWidth:200,defaultHeight:36}],b=[...g,..._,...v,...y],x=0;function S(e){return x+=1,`${e}-${Date.now().toString(36)}-${x.toString(36)}`}function C(e){return JSON.parse(JSON.stringify(e))}function w(e){return s.find(t=>t.format===e)}function T(e){if(e)return e.format&&e.format!==`Custom`?e.format:s.find(t=>t.width===e.width&&t.height===e.height)?.format}function E(e,t=c){let n=T(t)??t.format,r=e?.format??T(e)??n??`Custom`,i=r===`Custom`?void 0:w(r),a=A(i?.width??e?.width,t.width),o=A(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function D(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function O(e){let t=(Array.isArray(e)?e:s).map(e=>{let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return;let r=e?.format;if(r&&r!==`Custom`){let t=w(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:T(e),a=i?w(i):void 0;if(a)return{...a,label:e.label??a.label};if(r!==`Custom`)return;let o=Math.round(t),s=Math.round(n);if(!(o<=0||s<=0))return{format:`Custom`,width:o,height:s,label:e.label??`Custom`}}).filter(Boolean),n=new Set,r=t.filter(e=>{let t=D(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:s).map(e=>({...e}))}function k(e,t){let n=D(e);return t.find(e=>D(e)===n)}function ne(e,t){let n=O(t),r=n[0],i=E(e.pageSize,r),a=k(i,n)??r,o=new Map,s=e.pages.map(e=>{let t=E(e.pageSize,i),a=k(t,n)??r;return D(t)!==D(a)&&o.set(e.id,{source:t,target:a}),{...e,pageSize:{...a}}});return{...e,pageSize:{...a},pages:s}}function A(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function j(e=1,t){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function M(e=1,t,n=`<p></p>`,r){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:n,contentJson:r}}function N(e=c){let t=E(e);return{pages:[j(1,t)],variables:[],pageSize:t}}function re(e=c){let t=E(e);return{pages:[M(1,t,`<p></p>`)],variables:[],pageSize:t}}function P(e,t=g){return t.find(t=>t.type===e)??b.find(t=>t.type===e)??g[0]}function F(e,t=g,n={}){let r=e.type===void 0?`text`:e.type,i=P(r,t),a=ie(r);return{id:e.id??S(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,options:Array.isArray(e.options)?e.options.map(e=>({...e})):[],dataSource:e.dataSource?{...e.dataSource}:void 0,multiple:e.multiple??!1,componentKey:e.componentKey??``,componentConfig:e.componentConfig?{...e.componentConfig}:{},multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...l,...a.style,...n,...e.style}}}function ie(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!0,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:e===`select`||e===`radio`?{placeholder:e===`select`?`请选择`:`请选择一项`,multiple:!1,style:{border:!0,underline:!1}}:e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`||e===`custom`?{placeholder:`请选择`,multiple:!1,style:{border:!0,underline:!1}}:{style:{border:!1,underline:!0}}}function I(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function L(e,t=c){if(!e)return N(t);let n=E(e.pageSize,t),i=(e.pages?.length?e.pages:[j(1,n)]).map((e,t)=>({id:e.id||S(`page`),title:e.title||`第 ${t+1} 页`,pageSize:E(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),a=[],o=new Map;return Object.fromEntries(i.map(e=>[e.id,E(e.pageSize,n)])),(e.variables??[]).forEach(e=>{let t=F({...e,id:e.id||S(`variable`)});a.push(t),t.key&&o.set(t.key,t)}),i.forEach(e=>{K(e).forEach(e=>{if(!e.key)return;let t=o.get(e.key);if(!t){let t=F(e);a.push(t),o.set(e.key,t);return}if(I(e.type)){let n=F({...t,type:e.type});o.set(e.key,n);let r=a.findIndex(e=>e.id===t.id);r>=0&&(a[r]=n)}})}),{pages:i,variables:a,pageSize:n,...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{}}}function ae(e){return e.pages.map((t,n)=>W(e,t,n,t.contentHtml,{})).join(`
2
- `)}function R(e){return e.pages.map((t,n)=>W(e,t,n,Ce(t.contentHtml))).join(`
3
- `)}function oe(e){return z(e).map(({page:t,contentHtml:n},i)=>{let a=E(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${G(t,e.pageSize,e.pageDecorations,i+1)} style="width:${a.width}px;min-height:${a.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
4
- `)}function z(e){let t=new Map(e.variables.map(e=>[e.key,e]));return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:ge(e.contentHtml,t)}))}var B=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function se(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new B(t);let n=C(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:u,styleVersion:d,html:R(n)}}function ce(e,t={}){let n=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&n.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(t=>{let r=m(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());r&&(!a||t.key!==t.key.trim())&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?r:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),I(t.type)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let a=new Set(e.variables.map(e=>e.key).filter(Boolean)),o=new Set,s=r.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{V(e).forEach(t=>{o.add(t),a.has(t)||n.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!o.has(e.key)&&!s.has(e.key)&&n.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),n.push(...r.validatePageDecorations(e.pageDecorations,e.variables)),n}function V(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;le(r.type)&&r.attrs?.key&&t.add(r.attrs.key),r.content?.forEach(n)}n(e.contentJson);let r=e.contentHtml||``,i=/data-template-variable=["']true["'][^>]*data-key=["']([^"']+)["']|data-key=["']([^"']+)["'][^>]*data-template-variable=["']true["']/g,a=i.exec(r);for(;a;){let e=a[1]||a[2];e&&t.add(e),a=i.exec(r)}return t}function le(e){return e===`templateVariable`||e===`templateField`}function H(e){let t=new Set;return e.pages.forEach(e=>{V(e).forEach(e=>t.add(e))}),t}function U(e,t=H(e)){let n=r.collectPageDecorationVariableKeys(e.pageDecorations),i=new Map;for(let t of e.variables)i.set(t.key,(i.get(t.key)??0)+1);return{...e,variables:e.variables.filter(r=>(i.get(r.key)??0)>1||m(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function ue(){let e=new Map;function t(t){let n=t.contentJson&&(0,o.toRaw)(t.contentJson),r=e.get(t.id);return(!r||r.html!==t.contentHtml||r.json!==n)&&(r={html:t.contentHtml,json:n,keys:V(t)},e.set(t.id,r)),r}function n(n){let r=new Set(n.pages.map(e=>e.id));for(let t of Array.from(e.keys()))r.has(t)||e.delete(t);let i=new Set;for(let e of n.pages)t(e).keys.forEach(e=>i.add(e));return i}function r(e){let r=n(e),i=e.variables.slice(),a=new Map(i.filter(e=>e.key).map(e=>[e.key,e]));for(let n of e.pages){let e=t(n);e.variables??=K(n);for(let t of e.variables){let e=a.get(t.key);if(!e){let e=F(t);i.push(e),a.set(e.key,e)}else if(I(t.type)&&e.type!==t.type){let n=F({...e,type:t.type}),r=i.findIndex(t=>t.id===e.id);r>=0&&(i[r]=n),a.set(n.key,n)}}}let o=U({...e,variables:i},r);return o.variables.length===e.variables.length&&o.variables.every((t,n)=>t===e.variables[n])?e:o}return{sync:r,collectKeys:n,clear:()=>e.clear()}}function de(e,t){for(let n=0;n<t;n+=1){let r=e[n]?.content??[];for(let e of r){let r=Math.max(1,Number(e.attrs?.rowspan)||1);if(n+r>t)return!1}}return!0}function fe(e,t,n){let r=e.content??[],i=t.tableRows??[],a=Math.min(r.length,i.length),o=n-Math.max(0,t.trailingTextBlockHeight??0),s=0;for(let e=0;e<a;e+=1){let t=i[e];if(t.top+t.height>o+1)break;s=e+1}if(s<=0||s>=r.length)return;let c=s;for(;c>0&&!de(r,c);)--c;if(!(c<=0||c>=r.length))return{currentTable:{...e,content:r.slice(0,c)},overflowTable:{...e,content:r.slice(c)}}}function pe(e,t,n){let r=e??[];if(!r.length||n<=0)return;let i=Math.min(r.length,t.length),a=-1;for(let e=0;e<i;e+=1){let r=t[e];if(r.top+r.height>n+1){a=e;break}}if(a<0)return;let o=r[a],s=o?.type===`table`?fe(o,t[a],n):void 0;if(s)return{splitIndex:a,currentContent:[...r.slice(0,a),s.currentTable],overflowContent:[s.overflowTable,...r.slice(a+1)]};if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function W(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${G(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function G(e,n,i,a=1){let o=E(e.pageSize,n);return[`class="${r.buildPageDecorationClassNames(i,a)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var me=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function K(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||I(e.type)&&!I(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(he(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(q(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,me,e=>{r(q(t.createTagAttributeReader(e)))}),Array.from(n.values())}function q(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),o=e(`data-use-grouping`);return{key:n,label:e(`data-label`)??n,type:r??`text`,placeholder:e(`data-placeholder`)??``,width:t.readNumberAttribute(e(`data-width`),160),height:t.readNumberAttribute(e(`data-height`),32),required:e(`data-required`)===`true`,defaultValue:e(`data-default-value`)??``,format:e(`data-format`)??``,precision:i?Number(i):void 0,useGrouping:o?o===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,options:a.decodeContractTemplateJsonAttribute(e(`data-control-options`))??[],dataSource:a.decodeContractTemplateJsonAttribute(e(`data-control-source`)),multiple:e(`data-multiple`)===`true`,componentKey:e(`data-component-key`)??``,componentConfig:a.decodeContractTemplateJsonAttribute(e(`data-component-config`))??{},multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function he(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,options:Array.isArray(e.options)?e.options:[],dataSource:e.dataSource,multiple:e.multiple===!0,componentKey:r(`componentKey`)??``,componentConfig:e.componentConfig,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function ge(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return _e(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{ve(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(be(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?ye(i,n):e})}function _e(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&Y(r)){e.removeAttribute(t.name);return}n===`style`&&X(r)&&e.removeAttribute(t.name)})})}function J(e,r){let i=e(`data-key`)??``,a=r.get(i),o=a?.type??e(`data-variable-type`)??`text`,s=Se(o,a?.defaultValue??e(`data-default-value`)??``),c=n.resolveTemplateVariablePresentation({type:o,width:a?.width??e(`data-width`),height:a?.height??e(`data-height`),defaultValue:s,placeholder:a?.placeholder??e(`data-placeholder`)??``,format:a?.format??e(`data-format`)??``,precision:a?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:a?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:a?.checkedText??e(`data-checked-text`)??``,uncheckedText:a?.uncheckedText??e(`data-unchecked-text`)??``,multiline:a?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:a?.rows??e(`data-rows`),lineHeight:a?.lineHeight??e(`data-line-height`),style:xe(a,e)});return{key:i,label:a?.label??e(`data-label`)??i,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function ve(e,n){let{key:r,label:i,presentation:a,text:o}=J(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),e.textContent=o}function ye(e,n){let{key:r,label:i,presentation:a,text:o}=J(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${t.escapeHtmlText(o)}</span>`}function be(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>Y(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>X(n)?``:` style=${t}${n}${t}`)}function xe(e,n){return{border:e?.style?.border??t.readOptionalBoolean(n(`data-border`)),underline:e?.style?.underline??t.readOptionalBoolean(n(`data-underline`)),color:e?.style?.color??n(`data-color`),background:e?.style?.background??n(`data-background`),fontSize:e?.style?.fontSize??t.readOptionalNumber(n(`data-font-size`)),fontFamily:e?.style?.fontFamily??n(`data-font-family`),placeholderColor:e?.style?.placeholderColor??n(`data-placeholder-color`),lineColor:e?.style?.lineColor??n(`data-line-color`),textAlign:e?.style?.textAlign??Z(n(`data-text-align`)),borderStyle:e?.style?.borderStyle??Q(n(`data-border-style`)),objectFit:e?.style?.objectFit??$(n(`data-object-fit`))}}function Se(e,t){return e===`image`&&Y(t)?``:t}function Y(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function X(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function Ce(e){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`[data-template-variable]`).forEach(e=>{let t=e.dataset.key||``;t&&(e.textContent=`\${{${t}}}`)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(e,(e,n)=>{let r=t.createTagAttributeReader(n)(`data-key`);return r?`<span${n}>\${{${r}}}</span>`:e})}function we(e){return e===`left`||e===`center`||e===`right`}function Te(e){return e===`solid`||e===`dashed`}function Ee(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return we(e)?e:void 0}function Q(e){return Te(e)?e:void 0}function $(e){return Ee(e)?e:void 0}exports.ALL_DEFAULT_FIELD_TYPES=b,exports.CONTRACT_TEMPLATE_RENDERER_VERSION=u,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=p,exports.CONTRACT_TEMPLATE_STYLE_VERSION=d,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=f,exports.ContractTemplatePageDecorationValidationError=B,exports.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES=_,exports.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES=v,exports.DEFAULT_CUSTOM_FIELD_TYPES=y,exports.DEFAULT_FIELD_STYLE=l,exports.DEFAULT_FIELD_TYPES=g,exports.DEFAULT_MULTILINE_LINE_HEIGHT=te,exports.DEFAULT_MULTILINE_ROWS=ee,exports.DEFAULT_PAGE_SIZE=c,exports.PAGE_SIZE_OPTIONS=s,exports.buildTemplateExpressionHtml=R,exports.buildTemplateHtml=ae,exports.buildTemplatePreviewHtml=oe,exports.buildTemplatePreviewPages=z,exports.cloneTemplateValue=C,exports.collectTemplateValueVariableKeys=H,exports.collectTemplateVariableKeys=V,exports.constrainTemplatePageSizes=ne,exports.createBlankPage=M,exports.createBlankTemplate=re,exports.createDefaultPage=j,exports.createDefaultTemplate=N,exports.createDesignerId=S,exports.createTemplateBodySync=ue,exports.createTemplateVariable=F,exports.exportTemplateValue=se,exports.findPageSizeOption=k,exports.getFieldOption=P,exports.getPageSizeKey=D,exports.getPageSizeOption=w,exports.inferPageFormat=T,exports.normalizeContractTemplateMaxPages=h,exports.normalizePageSizeOptions=O,exports.normalizeTemplateValue=L,exports.resolvePageSize=E,exports.splitPageContentByMeasurements=pe,exports.syncTemplateVariablesWithPages=U,exports.validateContractTemplateVariableKey=m,exports.validateTemplateValue=ce;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../utils/html.cjs`),n=require(`../utils/template-variable-render.cjs`),r=require(`../utils/page-decorations.cjs`),i=require(`../types.cjs`),a=require(`../utils/advanced-controls.cjs`);let o=require(`vue`);var s=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],c={...s[4]},l={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},u=3,d=28,f=`contract-template-renderer-1.0.0`,p=`contract-render-css-1.0.0`,m=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,h=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function g(e,t,n){let r=typeof e==`string`?e.trim():``;return r?m.test(r)?h.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function ee(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var te={type:`image`,label:`图片`,defaultWidth:160,defaultHeight:96},ne={type:`checkbox`,label:`复选框`,defaultWidth:96,defaultHeight:28},_=[{type:`text`,label:`输入框`,defaultWidth:160,defaultHeight:32},{type:`date`,label:`日期`,defaultWidth:140,defaultHeight:32},{type:`number`,label:`数字`,defaultWidth:120,defaultHeight:32},{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],v=[{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],y=[{type:`user-selector`,label:`用户选择器`,defaultWidth:240,defaultHeight:36},{type:`dept-selector`,label:`部门选择器`,defaultWidth:240,defaultHeight:36},{type:`role-selector`,label:`角色选择器`,defaultWidth:240,defaultHeight:36},{type:`org-selector`,label:`组织架构`,defaultWidth:240,defaultHeight:36}],b=[{type:`custom`,label:`自定义控件`,defaultWidth:200,defaultHeight:36}],x=[..._,te,ne,...v,...y,...b],S=0;function C(e){return S+=1,`${e}-${Date.now().toString(36)}-${S.toString(36)}`}function w(e){return JSON.parse(JSON.stringify(e))}function T(e){return s.find(t=>t.format===e)}function E(e){if(e)return e.format&&e.format!==`Custom`?e.format:s.find(t=>t.width===e.width&&t.height===e.height)?.format}function D(e,t=c){let n=E(t)??t.format,r=e?.format??E(e)??n??`Custom`,i=r===`Custom`?void 0:T(r),a=j(i?.width??e?.width,t.width),o=j(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function O(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function k(e){let t=(Array.isArray(e)?e:s).map(e=>{let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return;let r=e?.format;if(r&&r!==`Custom`){let t=T(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:E(e),a=i?T(i):void 0;if(a)return{...a,label:e.label??a.label};if(r!==`Custom`)return;let o=Math.round(t),s=Math.round(n);if(!(o<=0||s<=0))return{format:`Custom`,width:o,height:s,label:e.label??`Custom`}}).filter(Boolean),n=new Set,r=t.filter(e=>{let t=O(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:s).map(e=>({...e}))}function A(e,t){let n=O(e);return t.find(e=>O(e)===n)}function re(e,t){let n=k(t),r=n[0],i=D(e.pageSize,r),a=A(i,n)??r,o=new Map,s=e.pages.map(e=>{let t=D(e.pageSize,i),a=A(t,n)??r;return O(t)!==O(a)&&o.set(e.id,{source:t,target:a}),{...e,pageSize:{...a}}});return{...e,pageSize:{...a},pages:s}}function j(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function M(e=1,t){return{id:C(`page`),title:`第 ${e} 页`,pageSize:t?D(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function N(e=1,t,n=`<p></p>`,r){return{id:C(`page`),title:`第 ${e} 页`,pageSize:t?D(t):void 0,contentHtml:n,contentJson:r}}function P(e=c){let t=D(e);return{pages:[M(1,t)],variables:[],pageSize:t}}function ie(e=c){let t=D(e);return{pages:[N(1,t,`<p></p>`)],variables:[],pageSize:t}}function F(e,t=_){return t.find(t=>t.type===e)??x.find(t=>t.type===e)??_[0]}function I(e,t=_,n={}){let r=e.type===void 0?`text`:e.type,i=F(r,t),a=ae(r);return{id:e.id??C(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,options:Array.isArray(e.options)?e.options.map(e=>({...e})):(a.options??[]).map(e=>({...e})),dataSource:e.dataSource?{...e.dataSource}:void 0,multiple:e.multiple??!1,componentKey:e.componentKey??``,componentConfig:e.componentConfig?{...e.componentConfig}:{},multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...l,...a.style,...n,...e.style}}}function ae(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!1,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:e===`select`||e===`radio`?{placeholder:e===`select`?`请选择`:`请选择一项`,multiple:!1,options:[{value:`option1`,label:`选项1`,type:e},{value:`option2`,label:`选项2`,type:e}],style:{border:!0,underline:!1}}:e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`||e===`custom`?{placeholder:`请选择`,multiple:!1,style:{border:!0,underline:!1}}:{style:{border:!1,underline:!0}}}function L(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function oe(e,t=c){if(!e)return P(t);let n=D(e.pageSize,t),i=(e.pages?.length?e.pages:[M(1,n)]).map((e,t)=>({id:e.id||C(`page`),title:e.title||`第 ${t+1} 页`,pageSize:D(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),a=[],o=new Map;return Object.fromEntries(i.map(e=>[e.id,D(e.pageSize,n)])),(e.variables??[]).forEach(e=>{let t=I({...e,id:e.id||C(`variable`),options:Array.isArray(e.options)?e.options:[]});a.push(t),t.key&&o.set(t.key,t)}),i.forEach(e=>{K(e).forEach(e=>{if(!e.key)return;let t=o.get(e.key);if(!t){let t=I(e);a.push(t),o.set(e.key,t);return}if(L(e.type)){let n=I({...t,type:e.type});o.set(e.key,n);let r=a.findIndex(e=>e.id===t.id);r>=0&&(a[r]=n)}})}),{pages:i,variables:a,pageSize:n,...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{}}}function se(e){return e.pages.map((t,n)=>W(e,t,n,t.contentHtml,{})).join(`
2
+ `)}function R(e){return e.pages.map((t,n)=>W(e,t,n,Ee(t.contentHtml))).join(`
3
+ `)}function ce(e){return z(e).map(({page:t,contentHtml:n},i)=>{let a=D(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${G(t,e.pageSize,e.pageDecorations,i+1)} style="width:${a.width}px;min-height:${a.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
4
+ `)}function z(e){let t=new Map(e.variables.map(e=>[e.key,e]));return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:ve(e.contentHtml,t)}))}var B=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function le(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new B(t);let n=w(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:f,styleVersion:p,html:R(n)}}function ue(e,t={}){let n=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&n.push({type:`page`,id:e.pages[t.maxPages]?.id??e.pages.at(-1)?.id??``,pageId:e.pages[t.maxPages]?.id,code:`PAGE_LIMIT_EXCEEDED`,message:`合同共 ${e.pages.length} 页,超过最多 ${t.maxPages} 页限制`}),e.variables.forEach(t=>{let r=g(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());r&&(!a||t.key!==t.key.trim())&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?r:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),L(t.type)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let a=new Set(e.variables.map(e=>e.key).filter(Boolean)),o=new Set,s=r.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{V(e).forEach(t=>{o.add(t),a.has(t)||n.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!o.has(e.key)&&!s.has(e.key)&&n.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),n.push(...r.validatePageDecorations(e.pageDecorations,e.variables)),n}function V(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;de(r.type)&&r.attrs?.key&&t.add(r.attrs.key),r.content?.forEach(n)}n(e.contentJson);let r=e.contentHtml||``,i=/data-template-variable=["']true["'][^>]*data-key=["']([^"']+)["']|data-key=["']([^"']+)["'][^>]*data-template-variable=["']true["']/g,a=i.exec(r);for(;a;){let e=a[1]||a[2];e&&t.add(e),a=i.exec(r)}return t}function de(e){return e===`templateVariable`||e===`templateField`}function H(e){let t=new Set;return e.pages.forEach(e=>{V(e).forEach(e=>t.add(e))}),t}function U(e,t=H(e)){let n=r.collectPageDecorationVariableKeys(e.pageDecorations),i=new Map;for(let t of e.variables)i.set(t.key,(i.get(t.key)??0)+1);return{...e,variables:e.variables.filter(r=>(i.get(r.key)??0)>1||g(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function fe(){let e=new Map;function t(t){let n=t.contentJson&&(0,o.toRaw)(t.contentJson),r=e.get(t.id);return(!r||r.html!==t.contentHtml||r.json!==n)&&(r={html:t.contentHtml,json:n,keys:V(t)},e.set(t.id,r)),r}function n(n){let r=new Set(n.pages.map(e=>e.id));for(let t of Array.from(e.keys()))r.has(t)||e.delete(t);let i=new Set;for(let e of n.pages)t(e).keys.forEach(e=>i.add(e));return i}function r(e){let r=n(e),i=e.variables.slice(),a=new Map(i.filter(e=>e.key).map(e=>[e.key,e]));for(let n of e.pages){let e=t(n);e.variables??=K(n);for(let t of e.variables){let e=a.get(t.key);if(!e){let e=I(t);i.push(e),a.set(e.key,e)}else if(L(t.type)&&e.type!==t.type){let n=I({...e,type:t.type}),r=i.findIndex(t=>t.id===e.id);r>=0&&(i[r]=n),a.set(n.key,n)}}}let o=U({...e,variables:i},r);return o.variables.length===e.variables.length&&o.variables.every((t,n)=>t===e.variables[n])?e:o}return{sync:r,collectKeys:n,clear:()=>e.clear()}}function pe(e,t){for(let n=0;n<t;n+=1){let r=e[n]?.content??[];for(let e of r){let r=Math.max(1,Number(e.attrs?.rowspan)||1);if(n+r>t)return!1}}return!0}function me(e,t,n){let r=e.content??[],i=t.tableRows??[],a=Math.min(r.length,i.length),o=n-Math.max(0,t.trailingTextBlockHeight??0),s=0;for(let e=0;e<a;e+=1){let t=i[e];if(t.top+t.height>o+1)break;s=e+1}if(s<=0||s>=r.length)return;let c=s;for(;c>0&&!pe(r,c);)--c;if(!(c<=0||c>=r.length))return{currentTable:{...e,content:r.slice(0,c)},overflowTable:{...e,content:r.slice(c)}}}function he(e,t,n){let r=e??[];if(!r.length||n<=0)return;let i=Math.min(r.length,t.length),a=-1;for(let e=0;e<i;e+=1){let r=t[e];if(r.top+r.height>n+1){a=e;break}}if(a<0)return;let o=r[a],s=o?.type===`table`?me(o,t[a],n):void 0;if(s)return{splitIndex:a,currentContent:[...r.slice(0,a),s.currentTable],overflowContent:[s.overflowTable,...r.slice(a+1)]};if(!(a<=0))return{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function W(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${G(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function G(e,n,i,a=1){let o=D(e.pageSize,n);return[`class="${r.buildPageDecorationClassNames(i,a)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var ge=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function K(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||L(e.type)&&!L(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(_e(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(q(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,ge,e=>{r(q(t.createTagAttributeReader(e)))}),Array.from(n.values())}function q(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),o=e(`data-use-grouping`);return{key:n,label:e(`data-label`)??n,type:r??`text`,placeholder:e(`data-placeholder`)??``,width:t.readNumberAttribute(e(`data-width`),160),height:t.readNumberAttribute(e(`data-height`),32),required:e(`data-required`)===`true`,defaultValue:e(`data-default-value`)??``,format:e(`data-format`)??``,precision:i?Number(i):void 0,useGrouping:o?o===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,options:a.decodeContractTemplateJsonAttribute(e(`data-control-options`))??[],dataSource:a.decodeContractTemplateJsonAttribute(e(`data-control-source`)),multiple:e(`data-multiple`)===`true`,componentKey:e(`data-component-key`)??``,componentConfig:a.decodeContractTemplateJsonAttribute(e(`data-component-config`))??{},multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function _e(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,options:Array.isArray(e.options)?e.options:[],dataSource:e.dataSource,multiple:e.multiple===!0,componentKey:r(`componentKey`)??``,componentConfig:e.componentConfig,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function ve(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return ye(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{xe(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(Ce(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?Se(i,n):e})}function ye(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&Y(r)){e.removeAttribute(t.name);return}n===`style`&&X(r)&&e.removeAttribute(t.name)})})}function J(e,r){let i=e(`data-key`)??``,o=r.get(i),s=o?.type??e(`data-variable-type`)??`text`,c=Te(s,o?.defaultValue??e(`data-default-value`)??``),l=be(o,e),u=o?!!o.multiple:e(`data-multiple`)===`true`,d=n.resolveTemplateVariablePresentation({type:s,width:o?.width??e(`data-width`),height:o?.height??e(`data-height`),defaultValue:c,placeholder:o?.placeholder??e(`data-placeholder`)??``,format:o?.format??e(`data-format`)??``,precision:o?.precision??t.readOptionalNumber(e(`data-precision`)),useGrouping:o?.useGrouping??t.readOptionalBoolean(e(`data-use-grouping`)),checkedText:o?.checkedText??e(`data-checked-text`)??``,uncheckedText:o?.uncheckedText??e(`data-unchecked-text`)??``,multiline:o?.multiline??t.readOptionalBoolean(e(`data-multiline`))??!1,rows:o?.rows??e(`data-rows`),lineHeight:o?.lineHeight??e(`data-line-height`),options:l,multiple:u,style:we(o,e)}),f=d.type===`radio`&&l.length?a.buildRadioOptionsHtml(l,c):``;return{key:i,label:o?.label??e(`data-label`)??i,presentation:d,radioHtml:f,text:d.type===`image`&&d.hasDefaultValue?` `:d.type===`radio`&&!f?o?.placeholder||e(`data-placeholder`)||` `:d.displayText||` `}}function be(e,t){if(e)return Array.isArray(e.options)?e.options:[];let n=a.decodeContractTemplateJsonAttribute(t(`data-control-options`));return Array.isArray(n)?n:[]}function xe(e,n){let{key:r,label:i,presentation:a,radioHtml:o,text:s}=J(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),o?e.innerHTML=o:e.textContent=s}function Se(e,n){let{key:r,label:i,presentation:a,radioHtml:o,text:s}=J(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${o||t.escapeHtmlText(s)}</span>`}function Ce(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>Y(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>X(n)?``:` style=${t}${n}${t}`)}function we(e,n){return{border:e?.style?.border??t.readOptionalBoolean(n(`data-border`)),underline:e?.style?.underline??t.readOptionalBoolean(n(`data-underline`)),color:e?.style?.color??n(`data-color`),background:e?.style?.background??n(`data-background`),fontSize:e?.style?.fontSize??t.readOptionalNumber(n(`data-font-size`)),fontFamily:e?.style?.fontFamily??n(`data-font-family`),placeholderColor:e?.style?.placeholderColor??n(`data-placeholder-color`),lineColor:e?.style?.lineColor??n(`data-line-color`),textAlign:e?.style?.textAlign??Z(n(`data-text-align`)),borderStyle:e?.style?.borderStyle??Q(n(`data-border-style`)),objectFit:e?.style?.objectFit??$(n(`data-object-fit`))}}function Te(e,t){return e===`image`&&Y(t)?``:t}function Y(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function X(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function Ee(e){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return t.querySelectorAll(`[data-template-variable]`).forEach(e=>{let t=e.dataset.key||``;t&&(e.textContent=`\${{${t}}}`)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(e,(e,n)=>{let r=t.createTagAttributeReader(n)(`data-key`);return r?`<span${n}>\${{${r}}}</span>`:e})}function De(e){return e===`left`||e===`center`||e===`right`}function Oe(e){return e===`solid`||e===`dashed`}function ke(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return De(e)?e:void 0}function Q(e){return Oe(e)?e:void 0}function $(e){return ke(e)?e:void 0}exports.ALL_DEFAULT_FIELD_TYPES=x,exports.CONTRACT_TEMPLATE_RENDERER_VERSION=f,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=h,exports.CONTRACT_TEMPLATE_STYLE_VERSION=p,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=m,exports.ContractTemplatePageDecorationValidationError=B,exports.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES=v,exports.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES=y,exports.DEFAULT_CHECKBOX_FIELD_TYPE=ne,exports.DEFAULT_CUSTOM_FIELD_TYPES=b,exports.DEFAULT_FIELD_STYLE=l,exports.DEFAULT_FIELD_TYPES=_,exports.DEFAULT_IMAGE_FIELD_TYPE=te,exports.DEFAULT_MULTILINE_LINE_HEIGHT=d,exports.DEFAULT_MULTILINE_ROWS=u,exports.DEFAULT_PAGE_SIZE=c,exports.PAGE_SIZE_OPTIONS=s,exports.buildTemplateExpressionHtml=R,exports.buildTemplateHtml=se,exports.buildTemplatePreviewHtml=ce,exports.buildTemplatePreviewPages=z,exports.cloneTemplateValue=w,exports.collectTemplateValueVariableKeys=H,exports.collectTemplateVariableKeys=V,exports.constrainTemplatePageSizes=re,exports.createBlankPage=N,exports.createBlankTemplate=ie,exports.createDefaultPage=M,exports.createDefaultTemplate=P,exports.createDesignerId=C,exports.createTemplateBodySync=fe,exports.createTemplateVariable=I,exports.exportTemplateValue=le,exports.findPageSizeOption=A,exports.getFieldOption=F,exports.getPageSizeKey=O,exports.getPageSizeOption=T,exports.inferPageFormat=E,exports.normalizeContractTemplateMaxPages=ee,exports.normalizePageSizeOptions=k,exports.normalizeTemplateValue=oe,exports.resolvePageSize=D,exports.splitPageContentByMeasurements=he,exports.syncTemplateVariablesWithPages=U,exports.validateContractTemplateVariableKey=g,exports.validateTemplateValue=ue;
@@ -1 +1 @@
1
- require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../utils/template-variable-render.cjs`),n=require(`../utils/advanced-controls.cjs`);let r=require(`@tiptap/core`);function i(e,t,n=``){return{default:n,parseHTML:e=>e.getAttribute(t)??n,renderHTML:n=>({[t]:n[e]})}}function a(e,t,n){return{default:n,parseHTML:e=>Number(e.getAttribute(t)||n),renderHTML:n=>({[t]:n[e]})}}function o(e,t){return{default:!1,parseHTML:e=>e.getAttribute(t)===`true`,renderHTML:n=>({[t]:String(!!n[e])})}}function s(e,t,r){return{default:r,parseHTML:e=>n.decodeContractTemplateJsonAttribute(e.getAttribute(t))??r,renderHTML:r=>r[e]===void 0||r[e]===null?{}:{[t]:n.encodeContractTemplateJsonAttribute(r[e])}}}var c=r.Node.create({name:`templateVariable`,group:`inline`,inline:!0,atom:!0,selectable:!0,draggable:!0,addAttributes(){return{key:i(`key`,`data-key`),label:{default:``,parseHTML:e=>e.getAttribute(`data-label`)??e.textContent??``,renderHTML:e=>({"data-label":e.label})},type:i(`type`,`data-variable-type`,`text`),placeholder:i(`placeholder`,`data-placeholder`),width:a(`width`,`data-width`,160),height:a(`height`,`data-height`,32),required:o(`required`,`data-required`),defaultValue:i(`defaultValue`,`data-default-value`),format:i(`format`,`data-format`),precision:{default:void 0,parseHTML:e=>{let t=e.getAttribute(`data-precision`);return t?Number(t):void 0},renderHTML:e=>e.precision===void 0?{}:{"data-precision":e.precision}},useGrouping:{default:void 0,parseHTML:e=>{let t=e.getAttribute(`data-use-grouping`);return t?t===`true`:void 0},renderHTML:e=>e.useGrouping===void 0?{}:{"data-use-grouping":String(!!e.useGrouping)}},checkedText:i(`checkedText`,`data-checked-text`),uncheckedText:i(`uncheckedText`,`data-unchecked-text`),options:s(`options`,`data-control-options`,[]),dataSource:s(`dataSource`,`data-control-source`,void 0),multiple:o(`multiple`,`data-multiple`),componentKey:i(`componentKey`,`data-component-key`),componentConfig:s(`componentConfig`,`data-component-config`,{}),multiline:o(`multiline`,`data-multiline`),rows:a(`rows`,`data-rows`,3),lineHeight:a(`lineHeight`,`data-line-height`,28),border:o(`border`,`data-border`),underline:o(`underline`,`data-underline`),color:i(`color`,`data-color`,`#1f2937`),background:i(`background`,`data-background`,`transparent`),fontSize:a(`fontSize`,`data-font-size`,14),fontFamily:{default:``,parseHTML:e=>e.getAttribute(`data-font-family`)??``,renderHTML:e=>e.fontFamily?{"data-font-family":e.fontFamily}:{}},placeholderColor:i(`placeholderColor`,`data-placeholder-color`,`#7a818b`),lineColor:i(`lineColor`,`data-line-color`,`#565b66`),textAlign:i(`textAlign`,`data-text-align`,`left`),borderStyle:i(`borderStyle`,`data-border-style`,`solid`),objectFit:i(`objectFit`,`data-object-fit`,`contain`)}},parseHTML(){return[{tag:`span[data-template-variable]`}]},renderHTML({HTMLAttributes:e}){let n=e[`data-border`]??e.border,i=e[`data-precision`]??e.precision,a=i===void 0||i===``?void 0:Number(i),o=e[`data-use-grouping`]??e.useGrouping,s=o===void 0||o===``?void 0:o===!0||o===`true`,c=t.resolveTemplateVariablePresentation({type:String(e[`data-variable-type`]||e.type||`text`),width:e[`data-width`]||e.width||160,height:e[`data-height`]||e.height||32,border:n===!0||n===`true`,underline:e[`data-underline`]===`true`||e.underline===!0,color:String(e[`data-color`]||e.color||`#1f2937`),background:String(e[`data-background`]||e.background||`transparent`),fontSize:e[`data-font-size`]||e.fontSize||14,fontFamily:String(e[`data-font-family`]||e.fontFamily||``),placeholder:String(e[`data-placeholder`]||e.placeholder||``),defaultValue:String(e[`data-default-value`]||e.defaultValue||``),format:String(e[`data-format`]||e.format||``),precision:a,useGrouping:s,checkedText:String(e[`data-checked-text`]||e.checkedText||``),uncheckedText:String(e[`data-unchecked-text`]||e.uncheckedText||``),multiline:e[`data-multiline`]===`true`||e.multiline===!0,rows:e[`data-rows`]||e.rows||3,lineHeight:e[`data-line-height`]||e.lineHeight||28,placeholderColor:String(e[`data-placeholder-color`]||e.placeholderColor||`#7a818b`),lineColor:String(e[`data-line-color`]||e.lineColor||`#565b66`),textAlign:String(e[`data-text-align`]||e.textAlign||`left`),borderStyle:String(e[`data-border-style`]||e.borderStyle||`solid`),objectFit:String(e[`data-object-fit`]||e.objectFit||`contain`)});return[`span`,(0,r.mergeAttributes)(e,{"data-template-variable":`true`,"data-variable-type":c.type,"data-width":String(c.width),"data-height":String(c.height),"data-border":String(c.border),"data-underline":String(c.underline),"data-multiline":String(e[`data-multiline`]===`true`||e.multiline===!0),"data-rows":String(Math.max(1,Number(e[`data-rows`]||e.rows||3))),"data-line-height":String(Math.max(18,Number(e[`data-line-height`]||e.lineHeight||28))),"data-color":c.color,"data-background":c.background,"data-font-size":String(c.fontSize),"data-font-family":c.fontFamily,"data-placeholder-color":c.placeholderColor,"data-line-color":c.lineColor,"data-text-align":c.textAlign,"data-border-style":c.borderStyle,"data-object-fit":c.objectFit,class:c.classes.join(` `),style:c.styleText}),c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `]}});function l(t){return{key:t.key,label:t.label,type:t.type??`text`,placeholder:t.placeholder||``,width:t.width??160,height:t.height??32,required:!!t.required,defaultValue:t.defaultValue||``,format:t.format||``,precision:t.precision,useGrouping:t.useGrouping,checkedText:t.checkedText||``,uncheckedText:t.uncheckedText||``,options:t.options?.map(e=>({...e}))??[],dataSource:t.dataSource?{...t.dataSource}:void 0,multiple:!!t.multiple,componentKey:t.componentKey||``,componentConfig:t.componentConfig?{...t.componentConfig}:{},multiline:!!t.multiline,rows:Math.max(1,Math.round(t.rows??3)),lineHeight:Math.max(18,Math.round(t.lineHeight??28)),border:t.style?.border??t.type===`image`,underline:t.style?.underline??(t.type!==`image`&&t.type!==`checkbox`),color:t.style?.color||`#1f2937`,background:t.style?.background||`transparent`,fontSize:t.style?.fontSize??14,fontFamily:t.style?.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:t.style?.placeholderColor||`#7a818b`,lineColor:t.style?.lineColor||`#565b66`,textAlign:t.style?.textAlign||`left`,borderStyle:t.style?.borderStyle||`solid`,objectFit:t.style?.objectFit||`contain`}}function u(e,t,n){if(!e)return!1;let r={type:`templateVariable`,attrs:l(t)},i=e.chain().focus();return typeof n==`number`?i.insertContentAt(n,r).run():i.insertContent(r).run()}exports.TemplateVariable=c,exports.buildTemplateVariableAttrs=l,exports.insertTemplateVariableNode=u;
1
+ require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../utils/template-variable-render.cjs`),n=require(`../utils/advanced-controls.cjs`);let r=require(`@tiptap/core`);function i(e,t,n=``){return{default:n,parseHTML:e=>e.getAttribute(t)??n,renderHTML:n=>({[t]:n[e]})}}function a(e,t,n){return{default:n,parseHTML:e=>Number(e.getAttribute(t)||n),renderHTML:n=>({[t]:n[e]})}}function o(e,t){return{default:!1,parseHTML:e=>e.getAttribute(t)===`true`,renderHTML:n=>({[t]:String(!!n[e])})}}function s(e,t,r){return{default:r,parseHTML:e=>n.decodeContractTemplateJsonAttribute(e.getAttribute(t))??r,renderHTML:r=>r[e]===void 0||r[e]===null?{}:{[t]:n.encodeContractTemplateJsonAttribute(r[e])}}}var c=r.Node.create({name:`templateVariable`,group:`inline`,inline:!0,atom:!0,selectable:!0,draggable:!0,addAttributes(){return{key:i(`key`,`data-key`),label:{default:``,parseHTML:e=>e.getAttribute(`data-label`)??e.textContent??``,renderHTML:e=>({"data-label":e.label})},type:i(`type`,`data-variable-type`,`text`),placeholder:i(`placeholder`,`data-placeholder`),width:a(`width`,`data-width`,160),height:a(`height`,`data-height`,32),required:o(`required`,`data-required`),defaultValue:i(`defaultValue`,`data-default-value`),format:i(`format`,`data-format`),precision:{default:void 0,parseHTML:e=>{let t=e.getAttribute(`data-precision`);return t?Number(t):void 0},renderHTML:e=>e.precision===void 0?{}:{"data-precision":e.precision}},useGrouping:{default:void 0,parseHTML:e=>{let t=e.getAttribute(`data-use-grouping`);return t?t===`true`:void 0},renderHTML:e=>e.useGrouping===void 0?{}:{"data-use-grouping":String(!!e.useGrouping)}},checkedText:i(`checkedText`,`data-checked-text`),uncheckedText:i(`uncheckedText`,`data-unchecked-text`),options:s(`options`,`data-control-options`,[]),dataSource:s(`dataSource`,`data-control-source`,void 0),multiple:o(`multiple`,`data-multiple`),componentKey:i(`componentKey`,`data-component-key`),componentConfig:s(`componentConfig`,`data-component-config`,{}),multiline:o(`multiline`,`data-multiline`),rows:a(`rows`,`data-rows`,3),lineHeight:a(`lineHeight`,`data-line-height`,28),border:o(`border`,`data-border`),underline:o(`underline`,`data-underline`),color:i(`color`,`data-color`,`#1f2937`),background:i(`background`,`data-background`,`transparent`),fontSize:a(`fontSize`,`data-font-size`,14),fontFamily:{default:``,parseHTML:e=>e.getAttribute(`data-font-family`)??``,renderHTML:e=>e.fontFamily?{"data-font-family":e.fontFamily}:{}},placeholderColor:i(`placeholderColor`,`data-placeholder-color`,`#7a818b`),lineColor:i(`lineColor`,`data-line-color`,`#565b66`),textAlign:i(`textAlign`,`data-text-align`,`left`),borderStyle:i(`borderStyle`,`data-border-style`,`solid`),objectFit:i(`objectFit`,`data-object-fit`,`contain`)}},parseHTML(){return[{tag:`span[data-template-variable]`}]},renderHTML({HTMLAttributes:e}){let i=e[`data-border`]??e.border,a=e[`data-precision`]??e.precision,o=a===void 0||a===``?void 0:Number(a),s=e[`data-use-grouping`]??e.useGrouping,c=s===void 0||s===``?void 0:s===!0||s===`true`,l=e[`data-control-options`],u=typeof l==`string`&&l?n.readContractTemplateControlOptions(l):n.readContractTemplateControlOptions(e.options),d=String(e[`data-default-value`]||e.defaultValue||``),f=String(e[`data-placeholder`]||e.placeholder||``),p=e[`data-multiple`]===`true`||e.multiple===!0,m=t.resolveTemplateVariablePresentation({type:String(e[`data-variable-type`]||e.type||`text`),width:e[`data-width`]||e.width||160,height:e[`data-height`]||e.height||32,border:i===!0||i===`true`,underline:e[`data-underline`]===`true`||e.underline===!0,color:String(e[`data-color`]||e.color||`#1f2937`),background:String(e[`data-background`]||e.background||`transparent`),fontSize:e[`data-font-size`]||e.fontSize||14,fontFamily:String(e[`data-font-family`]||e.fontFamily||``),placeholder:f,defaultValue:d,format:String(e[`data-format`]||e.format||``),precision:o,useGrouping:c,checkedText:String(e[`data-checked-text`]||e.checkedText||``),uncheckedText:String(e[`data-unchecked-text`]||e.uncheckedText||``),multiline:e[`data-multiline`]===`true`||e.multiline===!0,rows:e[`data-rows`]||e.rows||3,lineHeight:e[`data-line-height`]||e.lineHeight||28,placeholderColor:String(e[`data-placeholder-color`]||e.placeholderColor||`#7a818b`),lineColor:String(e[`data-line-color`]||e.lineColor||`#565b66`),textAlign:String(e[`data-text-align`]||e.textAlign||`left`),borderStyle:String(e[`data-border-style`]||e.borderStyle||`solid`),objectFit:String(e[`data-object-fit`]||e.objectFit||`contain`),options:u,multiple:p}),h=m.type===`radio`?n.buildRadioOptionNodes(u,d):[],g=m.type===`image`&&m.hasDefaultValue?` `:m.type===`radio`?f||` `:m.displayText||` `;return[`span`,(0,r.mergeAttributes)(e,{"data-template-variable":`true`,"data-variable-type":m.type,"data-width":String(m.width),"data-height":String(m.height),"data-border":String(m.border),"data-underline":String(m.underline),"data-multiline":String(e[`data-multiline`]===`true`||e.multiline===!0),"data-rows":String(Math.max(1,Number(e[`data-rows`]||e.rows||3))),"data-line-height":String(Math.max(18,Number(e[`data-line-height`]||e.lineHeight||28))),"data-color":m.color,"data-background":m.background,"data-font-size":String(m.fontSize),"data-font-family":m.fontFamily,"data-placeholder-color":m.placeholderColor,"data-line-color":m.lineColor,"data-text-align":m.textAlign,"data-border-style":m.borderStyle,"data-object-fit":m.objectFit,class:m.classes.join(` `),style:m.styleText}),...h.length?h:[g]]}});function l(t){return{key:t.key,label:t.label,type:t.type??`text`,placeholder:t.placeholder||``,width:t.width??160,height:t.height??32,required:!!t.required,defaultValue:t.defaultValue||``,format:t.format||``,precision:t.precision,useGrouping:t.useGrouping,checkedText:t.checkedText||``,uncheckedText:t.uncheckedText||``,options:t.options?.map(e=>({...e}))??[],dataSource:t.dataSource?{...t.dataSource}:void 0,multiple:!!t.multiple,componentKey:t.componentKey||``,componentConfig:t.componentConfig?{...t.componentConfig}:{},multiline:!!t.multiline,rows:Math.max(1,Math.round(t.rows??3)),lineHeight:Math.max(18,Math.round(t.lineHeight??28)),border:t.style?.border??t.type===`image`,underline:t.style?.underline??(t.type!==`image`&&t.type!==`checkbox`),color:t.style?.color||`#1f2937`,background:t.style?.background||`transparent`,fontSize:t.style?.fontSize??14,fontFamily:t.style?.fontFamily||e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:t.style?.placeholderColor||`#7a818b`,lineColor:t.style?.lineColor||`#565b66`,textAlign:t.style?.textAlign||`left`,borderStyle:t.style?.borderStyle||`solid`,objectFit:t.style?.objectFit||`contain`}}function u(e,t,n){if(!e)return!1;let r={type:`templateVariable`,attrs:l(t)},i=e.chain().focus();return typeof n==`number`?i.insertContentAt(n,r).run():i.insertContent(r).run()}exports.TemplateVariable=c,exports.buildTemplateVariableAttrs=l,exports.insertTemplateVariableNode=u;
@@ -1 +1 @@
1
- function e(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return(typeof t.value==`string`||typeof t.value==`number`)&&typeof t.label==`string`&&typeof t.type==`string`}function t(t,r){if(e(t))return{...n(t),value:t.value,label:t.label,type:t.type||r};if(typeof t==`string`||typeof t==`number`)return{value:t,label:String(t),type:r}}function n(e){let t={};return Object.entries(e).forEach(([e,n])=>{if(!(e===`value`||e===`label`||e===`type`))try{JSON.stringify(n),t[e]=n}catch{}}),t}function r(e,n,r){let i=(Array.isArray(e)?e:e==null||e===``?[]:[e]).map(e=>t(e,n)).filter(Boolean);return r?i:i[0]}function i(t){return Array.isArray(t)?t.map(e=>e.displayText||e.label||String(e.value)).filter(Boolean).join(`、`):e(t)?t.displayText||t.label||String(t.value):t==null?``:String(t)}function a(e){try{return encodeURIComponent(JSON.stringify(e??null))}catch{return``}}function o(e){if(!(typeof e!=`string`||!e))try{return JSON.parse(decodeURIComponent(e))}catch{return}}function s(e,t,n){let r=u(e,t?.dataPath),i=Array.isArray(r)?r:[],a=t?.valueField||`value`,o=t?.labelField||`label`;return i.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,r=t[a];return typeof r!=`string`&&typeof r!=`number`?[]:[{value:r,label:String(t[o]??r),type:typeof t.type==`string`&&t.type?t.type:n,...typeof t.disabled==`boolean`?{disabled:t.disabled}:{}}]})}function c(e,t){let n=e.trim();if(/^\/(?!\/)/.test(n))return!0;try{let e=new URL(n);return e.protocol!==`https:`&&e.protocol!==`http:`?!1:t.some(t=>{try{return new URL(t).origin===e.origin}catch{return!1}})}catch{return!1}}function l(e,t=1e4){let n=Number.isFinite(t)?Math.max(500,Math.floor(t)):1e4,r=Number(e);return Number.isFinite(r)?Math.min(n,Math.max(500,Math.floor(r))):n}function u(e,t){return t?t.split(`.`).filter(Boolean).reduce((e,t)=>{if(!(!e||typeof e!=`object`||Array.isArray(e)))return e[t]},e):e}function d(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}exports.decodeContractTemplateJsonAttribute=o,exports.encodeContractTemplateJsonAttribute=a,exports.formatContractTemplateRenderValue=i,exports.isAllowedContractTemplateRemoteUrl=c,exports.isContractTemplateSelectionValue=e,exports.normalizeContractTemplateControlOptions=s,exports.normalizeContractTemplateJsonObject=d,exports.normalizeContractTemplateRequestTimeout=l,exports.normalizeContractTemplateSelectionValue=t,exports.normalizeContractTemplateSelectionValues=r;
1
+ const e=require(`./html.cjs`);function t(e){if(!e||typeof e!=`object`||Array.isArray(e))return!1;let t=e;return(typeof t.value==`string`||typeof t.value==`number`)&&typeof t.label==`string`&&typeof t.type==`string`}function n(e,n){if(t(e))return{...r(e),value:e.value,label:e.label,type:e.type||n};if(typeof e==`string`||typeof e==`number`)return{value:e,label:String(e),type:n}}function r(e){let t={};return Object.entries(e).forEach(([e,n])=>{if(!(e===`value`||e===`label`||e===`type`))try{JSON.stringify(n),t[e]=n}catch{}}),t}function i(e,t,r){let i=(Array.isArray(e)?e:e==null||e===``?[]:[e]).map(e=>n(e,t)).filter(Boolean);return r?i:i[0]}function a(e){return Array.isArray(e)?e.map(e=>e.displayText||e.label||String(e.value)).filter(Boolean).join(`、`):t(e)?e.displayText||e.label||String(e.value):e==null?``:String(e)}function o(e){try{return encodeURIComponent(JSON.stringify(e??null))}catch{return``}}function s(e){if(!(typeof e!=`string`||!e))try{return JSON.parse(decodeURIComponent(e))}catch{return}}function c(e,t){let n=Array.isArray(e)?e:[],r=t!=null&&t!==``;return n.flatMap(e=>{if(!e||typeof e!=`object`)return[];let n=e;if(typeof n.label!=`string`)return[];let i=r&&String(n.value??``)===String(t);return[{label:n.label,mark:i?`●`:`○`,className:i?`gd-contract-template-variable__choice-option is-checked`:`gd-contract-template-variable__choice-option`}]})}function l(t,n){return c(t,n).map(t=>`<span class="${t.className}"><span class="gd-contract-template-variable__choice-mark">${t.mark}</span>${e.escapeHtmlText(t.label)}</span>`).join(``)}function u(e,t){return c(e,t).map(e=>[`span`,{class:e.className},[`span`,{class:`gd-contract-template-variable__choice-mark`},e.mark],e.label])}function d(e){let t=typeof e==`string`?s(e):e;return(Array.isArray(t)?t:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.value!=`string`&&typeof t.value!=`number`||typeof t.label!=`string`?[]:[t]})}function f(e,t,n){let r=h(e,t?.dataPath),i=Array.isArray(r)?r:[],a=t?.valueField||`value`,o=t?.labelField||`label`;return i.flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e,r=t[a];return typeof r!=`string`&&typeof r!=`number`?[]:[{value:r,label:String(t[o]??r),type:typeof t.type==`string`&&t.type?t.type:n,...typeof t.disabled==`boolean`?{disabled:t.disabled}:{}}]})}function p(e,t){let n=e.trim();if(/^\/(?!\/)/.test(n))return!0;try{let e=new URL(n);return e.protocol!==`https:`&&e.protocol!==`http:`?!1:t.some(t=>{try{return new URL(t).origin===e.origin}catch{return!1}})}catch{return!1}}function m(e,t=1e4){let n=Number.isFinite(t)?Math.max(500,Math.floor(t)):1e4,r=Number(e);return Number.isFinite(r)?Math.min(n,Math.max(500,Math.floor(r))):n}function h(e,t){return t?t.split(`.`).filter(Boolean).reduce((e,t)=>{if(!(!e||typeof e!=`object`||Array.isArray(e)))return e[t]},e):e}function g(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}exports.buildRadioOptionNodes=u,exports.buildRadioOptionsHtml=l,exports.decodeContractTemplateJsonAttribute=s,exports.encodeContractTemplateJsonAttribute=o,exports.formatContractTemplateRenderValue=a,exports.isAllowedContractTemplateRemoteUrl=p,exports.isContractTemplateSelectionValue=t,exports.normalizeContractTemplateControlOptions=f,exports.normalizeContractTemplateJsonObject=g,exports.normalizeContractTemplateRequestTimeout=m,exports.normalizeContractTemplateSelectionValue=n,exports.normalizeContractTemplateSelectionValues=i,exports.readContractTemplateControlOptions=d;
@@ -184,7 +184,13 @@ ${e.decorationsHtml}
184
184
  if (document.fonts)
185
185
  await withTimeout(document.fonts.ready)
186
186
  const metrics = measure()
187
- assertMetrics(metrics)
187
+ try {
188
+ assertMetrics(metrics)
189
+ }
190
+ catch (error) {
191
+ // 样本宽度跟系统字体、浏览器缩放走,业务用户无法消除。偏差只记日志,底图和签署继续。
192
+ console.warn('[GD-SIGN-COORD]', error instanceof Error ? error.message : String(error))
193
+ }
188
194
  ready = true
189
195
  post('ready', { metrics })
190
196
  observer = new ResizeObserver(() => {
@@ -1,3 +1,5 @@
1
- const e=require(`./html.cjs`),t=require(`./template-variable-render.cjs`),n=require(`./page-decorations.cjs`),r=require(`../types.cjs`),i=require(`./advanced-controls.cjs`),a=require(`../composables/use-template-designer.cjs`),o=require(`./image-url.cjs`);function s(e){let t=Array.isArray(e?.variables)?e.variables:[],n=t.map(e=>c(e)),r={};return t.forEach(e=>{let t=typeof e?.key==`string`?e.key:``;if(t){if(e.type===`checkbox`){r[t]=!1;return}if(e.type===`number`){let n=typeof e.defaultValue==`string`?e.defaultValue.trim().length>0:e.defaultValue!==void 0,i=Number(e.defaultValue);r[t]=n&&Number.isFinite(i)?i:``;return}r[t]=e.defaultValue??``}}),{values:r,variables:n}}function c(e){return JSON.parse(JSON.stringify(e))}var l=new Set([`action`,`formaction`,`href`,`src`,`xlink:href`]),u=/<[^>]+data-template-variable=["']true["'][^>]*>/gi,d=100,f=6e3,p=6,m=/^data:image\/(?:png|jpe?g|webp|gif);base64,[A-Za-z0-9+/=]+$/i;function h(e){let t={};return(Array.isArray(e?.variables)?e.variables:[]).forEach(e=>{e?.key&&(t[e.key]=O(e))}),t}function g(e,t){return{...h(e),...t??{}}}function _(e,t){let n=y(e);if(!e)return n;let r=Array.isArray(e.variables)?e.variables:[],i=new Set(r.map(e=>e?.key).filter(Boolean));return Object.keys(t).forEach(e=>{i.has(e)||n.push({type:`variable`,id:e,variableKey:e,message:`提交值 ${e} 不属于模板变量`,code:`VARIABLE_TYPE_INVALID`})}),r.forEach(e=>{if(!e?.key)return;let r=R(e,t[e.key]),i=e.label||e.key;if(e.required&&S(r)){n.push({type:`variable`,id:e.id,variableKey:e.key,message:`请填写${i}`,code:`VARIABLE_REQUIRED`});return}if(S(r))return;let a=e.type??`text`;a===`number`&&!z(r,e.precision)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法数字或超出精度`,code:`VARIABLE_TYPE_INVALID`}),a===`checkbox`&&!V(r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法勾选值`,code:`VARIABLE_TYPE_INVALID`}),a===`date`&&!B(r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法日期`,code:`VARIABLE_TYPE_INVALID`}),a===`image`&&!H(String(r).trim())&&n.push({type:`security`,id:e.id,variableKey:e.key,message:`${i} 必须使用安全的图片 data URL`,code:`UNSAFE_IMAGE_URL`}),a===`text`&&G(e,String(r))&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 内容超出变量范围`,code:`VARIABLE_OVERFLOW`}),U(a)&&(W(r,a!==`radio`&&!!e.multiple)||n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法选择值`,code:`VARIABLE_TYPE_INVALID`}))}),n}function v(e,t,n){return _(e,t)}function y(e){if(!e)return[{type:`page`,id:`template`,message:`缺少可渲染的合同模板`,code:`TEMPLATE_MISSING`}];let t=[],i=Array.isArray(e.pages)?e.pages:[],o=Array.isArray(e.variables)?e.variables:[];(!Array.isArray(e.pages)||i.length===0)&&t.push({type:`page`,id:`template-pages`,message:`模板至少需要一个合法页面`,code:`TEMPLATE_PAGES_INVALID`}),Array.isArray(e.variables)||t.push({type:`variable`,id:`template-variables`,message:`模板变量列表格式无效`,code:`TEMPLATE_VARIABLES_INVALID`}),K(e.pageSize)||t.push({type:`page`,id:`template-page-size`,message:`模板默认页面尺寸必须在 ${d} ~ ${f} CSS px 之间`,code:`TEMPLATE_PAGE_SIZE_INVALID`});let s=new Map;o.forEach((e,n)=>{if(!e||typeof e.key!=`string`||!e.key.trim()){t.push({type:`variable`,id:e?.id||`variable-${n}`,message:`第 ${n+1} 个变量缺少有效 key`,code:`VARIABLE_KEY_MISSING`});return}let i=e.key.trim(),c=o.some(t=>t?.id!==e.id&&typeof t?.key==`string`&&t.key.trim()===i),l=a.validateContractTemplateVariableKey(e.key,o,e.id),u=!a.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN.test(i)||a.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS.has(i);l&&(u||!c||e.key!==i)&&t.push({type:`variable`,id:e.id||`variable-${n}`,variableKey:e.key,message:`${e.label||e.key}:${l}`,code:`VARIABLE_KEY_INVALID`}),s.set(i,(s.get(i)??0)+1),r.isContractTemplateFieldType(e.type??`text`)||t.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})}),s.forEach((e,n)=>{e>1&&t.push({type:`variable`,id:n,variableKey:n,message:`变量 key ${n} 重复`,code:`VARIABLE_KEY_DUPLICATED`})});let c=new Set;i.forEach((e,n)=>{if(!e||typeof e.id!=`string`||!e.id.trim()||typeof e.contentHtml!=`string`){t.push({type:`page`,id:e?.id||`page-${n}`,pageId:e?.id,message:`第 ${n+1} 页结构无效,已跳过渲染`,code:`PAGE_INVALID`});return}e.pageSize!==void 0&&!K(e.pageSize)&&t.push({type:`page`,id:`${e.id}-page-size`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:页面尺寸必须在 ${d} ~ ${f} CSS px 之间`,code:`PAGE_SIZE_INVALID`}),N(e.contentHtml).forEach(e=>c.add(e)),P(e.contentHtml).forEach((r,i)=>{t.push({type:`security`,id:`${e.id}-security-${i}`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:${r}`,code:`HTML_UNSAFE`})})}),c.forEach(e=>{s.has(e)||t.push({type:`variable`,id:e,variableKey:e,message:`正文引用的变量 ${e} 缺少配置`,code:`VARIABLE_CONFIG_MISSING`})});let l=n.collectPageDecorationVariableKeys(e.pageDecorations);return s.forEach((e,n)=>{!c.has(n)&&!l.has(n)&&t.push({type:`variable`,id:n,variableKey:n,message:`变量 ${n} 缺少正文节点`,code:`VARIABLE_NODE_MISSING`})}),t.push(...n.validatePageDecorations(e.pageDecorations,o)),t}function b(t,r,i={}){if(!t||!Array.isArray(t.pages))return[];let o=Array.isArray(t.variables)?t.variables:[],s=new Map(o.filter(e=>e?.key).map(e=>[e.key,e])),c=e.hasPositivePageSize(t.pageSize)?t.pageSize:a.DEFAULT_PAGE_SIZE;return t.pages.flatMap(e=>{if(!e||typeof e.id!=`string`||!e.id.trim()||typeof e.contentHtml!=`string`)return[];let l=a.resolvePageSize(e.pageSize,c);return[{id:e.id,title:e.title||`未命名页面`,format:l.format??`Custom`,width:l.width,height:l.height,contentHtml:C(e.contentHtml,s,r,i),...t.pageDecorations?{pageDecorations:n.normalizePageDecorations(t.pageDecorations)}:{},decorationVariables:o,decorationValues:r}]})}function x(t,r,i={}){return b(t,r,i).map((t,r,i)=>{let a=n.buildPageDecorationsHtml(t.pageDecorations,r+1,i.length,t.decorationVariables,t.decorationValues);return`<section class="${n.buildPageDecorationClassNames(t.pageDecorations,r+1)}" data-page-id="${e.escapeHtmlAttribute(t.id)}" data-page-format="${e.escapeHtmlAttribute(t.format)}" data-page-width="${t.width}" data-page-height="${t.height}" style="width:${t.width}px;min-height:${t.height}px">${a}<div class="gd-contract-template-page__content">${t.contentHtml}</div></section>`}).join(`
2
- `)}function S(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function C(t,n,r,i){if(!t)return t;let a=M(t);if(e.canUseDomHtml()){let e=new DOMParser().parseFromString(a,`text/html`);return e.querySelectorAll(`[data-template-variable]`).forEach(e=>{w(e,n,r,i)}),e.body.innerHTML}return e.replaceTemplateVariableSpans(a,(t,a)=>{let o=e.getHtmlAttribute(a,`data-key`);return o?T(n.get(o),o,r[o],i):t})}function w(e,t,n,r){let i=e.dataset.key||``,a=t.get(i);if(!i||!a)return;let o=new DOMParser().parseFromString(T(a,i,n[i],r),`text/html`).body.firstElementChild;o&&e.replaceWith(o)}function T(e,t,n,r){return r.mode===`display`?E(e,t,n,r):D(e,t,n,r)}function E(n,r,i,a){let s=n?.type??`text`,c=i??O(n),l=s===`image`&&!S(c)&&!o.isSafeContractImageUrl(String(c))?``:c,u=A(l),d=t.resolveTemplateVariablePresentation({type:s,width:n?.width,height:n?.height,placeholder:n?.placeholder??``,defaultValue:u,format:n?.format??``,precision:n?.precision,useGrouping:n?.useGrouping,checkedText:n?.checkedText??``,uncheckedText:n?.uncheckedText??``,multiline:n?.multiline,rows:n?.rows,lineHeight:n?.lineHeight,style:n?.style}),f=d.displayText||n?.placeholder||n?.label||r,p=[`class="${e.escapeHtmlAttribute([`gd-contract-template-renderer__control`,`gd-contract-template-renderer__preview-control`,...d.classes,a.activeKey===r?`is-active`:``,S(l)?`is-empty`:``].filter(Boolean).join(` `))}"`,`style="${e.escapeHtmlAttribute(d.styleText)}"`,`data-contract-render-wrapper="true"`,`data-contract-render-preview="true"`,`data-key="${e.escapeHtmlAttribute(r)}"`,`data-variable-type="${e.escapeHtmlAttribute(s)}"`,`aria-label="${e.escapeHtmlAttribute(n?.label||r)}"`,a.disabled?``:`role="button"`,a.disabled?``:`tabindex="0"`].filter(Boolean).join(` `);return s===`checkbox`?`<span ${p}><span class="gd-contract-template-renderer__checkbox-mark" aria-hidden="true">${j(l)?`✓`:``}</span>${e.escapeHtmlText(f)}</span>`:s===`image`&&!S(l)?`<span ${p}></span>`:`<span ${p}>${e.escapeHtmlText(f)}</span>`}function D(n,r,a,o){let s=n?.type??`text`,c=!!o.readonly,l=k(a??O(n)),u=t.resolveTemplateVariablePresentation({type:s,width:n?.width,height:n?.height,placeholder:n?.placeholder??``,defaultValue:c?l:``,format:n?.format??``,precision:n?.precision,useGrouping:n?.useGrouping,checkedText:n?.checkedText??``,uncheckedText:n?.uncheckedText??``,multiline:n?.multiline,rows:n?.rows,lineHeight:n?.lineHeight,style:n?.style}),d=o.disabled||c,f=[`data-contract-render-control="true"`,`data-key="${e.escapeHtmlAttribute(r)}"`,`data-variable-type="${e.escapeHtmlAttribute(s)}"`,`aria-label="${e.escapeHtmlAttribute(n?.label||r)}"`,d?`disabled`:``,c?`readonly`:``].filter(Boolean).join(` `),p=`style="${e.escapeHtmlAttribute(u.styleText)}"`,m=e.escapeHtmlAttribute([`gd-contract-template-renderer__control`,...u.classes].join(` `));return s===`checkbox`?`<label class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}"><input type="checkbox" ${f} ${j(l)?`checked`:``}>${e.escapeHtmlText(n?.checkedText||n?.label||r)}</label>`:c?`<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}">${e.escapeHtmlText(u.displayText||l)}</span>`:s===`number`?`<input class="${m}" ${p} type="number" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`:s===`date`?`<input class="${m}" ${p} type="date" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`:s===`select`||s===`radio`||s.endsWith(`-selector`)||s===`custom`?`<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}">${e.escapeHtmlText(i.formatContractTemplateRenderValue(a))}</span>`:n?.multiline?`<textarea class="${m}" ${p} ${f} placeholder="${e.escapeHtmlAttribute(n.placeholder||``)}">${e.escapeHtmlText(l)}</textarea>`:`<input class="${m}" ${p} type="text" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`}function O(e){if(!e)return``;if(e.type===`checkbox`)return j(e.defaultValue);if(e.type===`number`&&e.defaultValue!==void 0){let t=Number(e.defaultValue);return Number.isFinite(t)?t:e.defaultValue}if(!(e.type===`select`||e.type===`radio`||e.type?.endsWith(`-selector`)))return e.defaultValue??``}function k(e){return typeof e==`boolean`?e?`true`:``:e==null?``:i.formatContractTemplateRenderValue(e)}function A(e){return typeof e==`boolean`?e?`true`:`false`:e==null?``:i.formatContractTemplateRenderValue(e)}function j(e){return e===!0||e===`true`||e===`1`||e===`yes`||e===`是`||e===`已选`}function M(t){if(e.canParseHtmlDocument()){let e=new DOMParser().parseFromString(t,`text/html`);return e.querySelectorAll(`script,style,meta,link,iframe,object,embed`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase();(n.startsWith(`on`)||n===`srcdoc`||l.has(n)&&F(t.value)||n===`style`&&L(t.value))&&e.removeAttribute(t.name)})}),e.body.innerHTML}return t.replace(/<\s*(script|style|iframe|object|embed)\b[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*\/?\s*(?:script|style|meta|link|iframe|object|embed)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\2|([^\s>]+))/gi,(e,t,n,r,i)=>{let a=r??i??``;return F(a)?``:n?` ${t}=${n}${a}${n}`:` ${t}=${a}`}).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>L(n)?``:` style=${t}${n}${t}`)}function N(t){return e.collectFromHtmlTags(t,u,t=>e.getHtmlAttribute(t,`data-key`))}function P(e){let t=[];return/<\s*(script|style|meta|link|iframe|object|embed)\b/i.test(e)&&t.push(`正文包含已移除的危险标签`),/\s(?:on[a-z]+|srcdoc)\s*=/i.test(e)&&t.push(`正文包含已移除的事件或嵌入属性`),(I(e)||/style\s*=\s*["'][^"']*(?:expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html))/i.test(e))&&t.push(`正文包含已移除的危险 URL 或样式`),t}function F(e){let t=e.replace(/&#(?:x([\da-f]+)|(\d+));?/gi,(e,t,n)=>{let r=Number.parseInt(t??n??``,t?16:10);try{return Number.isFinite(r)?String.fromCodePoint(r):e}catch{return e}}).replace(/&(colon|tab|newline);/gi,(e,t)=>({colon:`:`,newline:`
3
- `,tab:` `})[t.toLowerCase()]??``).trim().replace(/[\u0000-\u0020\u007F]+/g,``);return/^(?:javascript|vbscript|data:text\/html)/i.test(t)}function I(e){let t=/\s+(?:action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\1|([^\s>]+))/gi,n=t.exec(e);for(;n;){if(F(n[2]??n[3]??``))return!0;n=t.exec(e)}return!1}function L(e){return/expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html)/i.test(e)}function R(e,t){return S(t)&&!S(e.defaultValue)?e.defaultValue:t}function z(e,t){if(typeof e==`boolean`||typeof e!=`number`&&typeof e!=`string`)return!1;let n=String(e).trim();if(!/^-?(?:\d+)(?:\.\d+)?$/.test(n))return!1;let r=Number(n);if(!Number.isFinite(r))return!1;if(t!==void 0){let e=n.split(`.`)[1]?.length??0;if(!Number.isInteger(t)||t<0||t>p||e>t)return!1}return!0}function B(e){if(typeof e!=`string`&&typeof e!=`number`)return!1;let t=String(e).trim(),n=/^(\d{4})[-/年](\d{1,2})[-/月](\d{1,2})(?:日)?(?:[T\s].*)?$/.exec(t);if(!n)return!1;let r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=new Date(Date.UTC(r,i-1,a));return o.getUTCFullYear()===r&&o.getUTCMonth()===i-1&&o.getUTCDate()===a}function V(e){return typeof e==`boolean`?!0:[`1`,`true`,`yes`,`checked`,`是`,`已选`,`0`,`false`,`no`,`unchecked`,`否`,`未选`].includes(String(e).trim().toLowerCase())}function H(e){return m.test(e)}function U(e){return e===`select`||e===`radio`||e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`}function W(e,t){return t?Array.isArray(e)&&e.every(i.isContractTemplateSelectionValue):i.isContractTemplateSelectionValue(e)}function G(e,t){let n=e.width;if(!Number.isFinite(n)||n<=0)return!1;let r=Math.max(10,Number.isFinite(e.style?.fontSize)&&(e.style?.fontSize??0)>0?e.style.fontSize:14),i=Math.max(1,n-12)/r,a=e=>Array.from(e).reduce((e,t)=>e+(/[^\x00-\x7f]/.test(t)?1:.55),0);return e.multiline?t.split(/\r?\n/).reduce((e,t)=>e+Math.max(1,Math.ceil(a(t)/i)),0)>(e.rows??3):a(t)>i}function K(e){if(!e||typeof e!=`object`)return!1;let{width:t,height:n}=e;return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)&&t>=d&&n>=d&&t<=f&&n<=f}exports.buildInitialRenderValues=h,exports.buildTemplateRenderHtml=x,exports.buildTemplateRenderPages=b,exports.buildTemplateVariableData=s,exports.isEmptyRenderValue=S,exports.normalizeRenderValues=g,exports.resolveTemplateRenderSubmitErrors=v,exports.sanitizeContractRendererHtml=M,exports.validateTemplateRenderStructure=y,exports.validateTemplateRenderValues=_;
1
+ const e=require(`./html.cjs`),t=require(`./template-variable-render.cjs`),n=require(`./page-decorations.cjs`),r=require(`../types.cjs`),i=require(`./advanced-controls.cjs`),a=require(`../composables/use-template-designer.cjs`),o=require(`./image-url.cjs`);function s(e){let t=Array.isArray(e?.variables)?e.variables:[],n=t.map(e=>c(e)),r={};return t.forEach(e=>{let t=typeof e?.key==`string`?e.key:``;if(t){if(e.type===`checkbox`){r[t]=!1;return}if(e.type===`number`){let n=typeof e.defaultValue==`string`?e.defaultValue.trim().length>0:e.defaultValue!==void 0,i=Number(e.defaultValue);r[t]=n&&Number.isFinite(i)?i:``;return}r[t]=e.defaultValue??``}}),{values:r,variables:n}}function c(e){return JSON.parse(JSON.stringify(e))}var l=new Set([`action`,`formaction`,`href`,`src`,`xlink:href`]),u=/<[^>]+data-template-variable=["']true["'][^>]*>/gi,d=100,f=6e3,p=6,m=/^data:image\/(?:png|jpe?g|webp|gif);base64,[A-Za-z0-9+/=]+$/i;function h(e){let t={};return(Array.isArray(e?.variables)?e.variables:[]).forEach(e=>{e?.key&&(t[e.key]=A(e))}),t}function g(e,t){return{...h(e),...t??{}}}function _(e,t){let n=b(e);if(!e)return n;let r=Array.isArray(e.variables)?e.variables:[],i=new Set(r.map(e=>e?.key).filter(Boolean));return Object.keys(t).forEach(e=>{i.has(e)||n.push({type:`variable`,id:e,variableKey:e,message:`提交值 ${e} 不属于模板变量`,code:`VARIABLE_TYPE_INVALID`})}),r.forEach(e=>{if(!e?.key)return;let r=W(e,t[e.key]),i=e.label||e.key;if(e.required&&C(r)){n.push({type:`variable`,id:e.id,variableKey:e.key,message:`请填写${i}`,code:`VARIABLE_REQUIRED`});return}if(C(r))return;let a=e.type??`text`;a===`number`&&!G(r,e.precision,e.format)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法数字或超出精度`,code:`VARIABLE_TYPE_INVALID`}),a===`checkbox`&&!q(r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法勾选值`,code:`VARIABLE_TYPE_INVALID`}),a===`date`&&!K(r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法日期`,code:`VARIABLE_TYPE_INVALID`}),a===`image`&&!J(String(r).trim())&&n.push({type:`security`,id:e.id,variableKey:e.key,message:`${i} 必须使用安全的图片 data URL`,code:`UNSAFE_IMAGE_URL`}),n.push(...v(e,r)),Y(a)&&(X(r,a!==`radio`&&!!e.multiple)?N(e)&&!P(e,r)&&n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不在可选项中`,code:`VARIABLE_TYPE_INVALID`}):n.push({type:`variable`,id:e.id,variableKey:e.key,message:`${i} 不是合法选择值`,code:`VARIABLE_TYPE_INVALID`}))}),n}function v(e,t){if((e.type??`text`)!==`text`)return[];let n=W(e,t);if(C(n)||!Z(e,String(n)))return[];let r=e.label||e.key;return[{type:`variable`,id:e.id,variableKey:e.key,message:e.multiline?`${r} 内容超出正文预留的${e.rows??3}行,请缩短内容或调整模板行数`:`${r} 内容超出变量范围`,code:`VARIABLE_OVERFLOW`}]}function y(e,t,n){return _(e,t)}function b(e){if(!e)return[{type:`page`,id:`template`,message:`缺少可渲染的合同模板`,code:`TEMPLATE_MISSING`}];let t=[],i=Array.isArray(e.pages)?e.pages:[],o=Array.isArray(e.variables)?e.variables:[];(!Array.isArray(e.pages)||i.length===0)&&t.push({type:`page`,id:`template-pages`,message:`模板至少需要一个合法页面`,code:`TEMPLATE_PAGES_INVALID`}),Array.isArray(e.variables)||t.push({type:`variable`,id:`template-variables`,message:`模板变量列表格式无效`,code:`TEMPLATE_VARIABLES_INVALID`}),Q(e.pageSize)||t.push({type:`page`,id:`template-page-size`,message:`模板默认页面尺寸必须在 ${d} ~ ${f} CSS px 之间`,code:`TEMPLATE_PAGE_SIZE_INVALID`});let s=new Map;o.forEach((e,n)=>{if(!e||typeof e.key!=`string`||!e.key.trim()){t.push({type:`variable`,id:e?.id||`variable-${n}`,message:`第 ${n+1} 个变量缺少有效 key`,code:`VARIABLE_KEY_MISSING`});return}let i=e.key.trim(),c=o.some(t=>t?.id!==e.id&&typeof t?.key==`string`&&t.key.trim()===i),l=a.validateContractTemplateVariableKey(e.key,o,e.id),u=!a.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN.test(i)||a.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS.has(i);l&&(u||!c||e.key!==i)&&t.push({type:`variable`,id:e.id||`variable-${n}`,variableKey:e.key,message:`${e.label||e.key}:${l}`,code:`VARIABLE_KEY_INVALID`}),s.set(i,(s.get(i)??0)+1),r.isContractTemplateFieldType(e.type??`text`)||t.push({type:`variable`,id:e.id,variableKey:e.key,message:`${e.label||e.key} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})}),s.forEach((e,n)=>{e>1&&t.push({type:`variable`,id:n,variableKey:n,message:`变量 key ${n} 重复`,code:`VARIABLE_KEY_DUPLICATED`})});let c=new Set;i.forEach((e,n)=>{if(!e||typeof e.id!=`string`||!e.id.trim()||typeof e.contentHtml!=`string`){t.push({type:`page`,id:e?.id||`page-${n}`,pageId:e?.id,message:`第 ${n+1} 页结构无效,已跳过渲染`,code:`PAGE_INVALID`});return}e.pageSize!==void 0&&!Q(e.pageSize)&&t.push({type:`page`,id:`${e.id}-page-size`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:页面尺寸必须在 ${d} ~ ${f} CSS px 之间`,code:`PAGE_SIZE_INVALID`}),z(e.contentHtml).forEach(e=>c.add(e)),B(e.contentHtml).forEach((r,i)=>{t.push({type:`security`,id:`${e.id}-security-${i}`,pageId:e.id,message:`${e.title||`第 ${n+1} 页`}:${r}`,code:`HTML_UNSAFE`})})}),c.forEach(e=>{s.has(e)||t.push({type:`variable`,id:e,variableKey:e,message:`正文引用的变量 ${e} 缺少配置`,code:`VARIABLE_CONFIG_MISSING`})});let l=n.collectPageDecorationVariableKeys(e.pageDecorations);return s.forEach((e,n)=>{!c.has(n)&&!l.has(n)&&t.push({type:`variable`,id:n,variableKey:n,message:`变量 ${n} 缺少正文节点`,code:`VARIABLE_NODE_MISSING`})}),t.push(...n.validatePageDecorations(e.pageDecorations,o)),t}function x(t,r,i={}){if(!t||!Array.isArray(t.pages))return[];let o=Array.isArray(t.variables)?t.variables:[],s=new Map(o.filter(e=>e?.key).map(e=>[e.key,e])),c=e.hasPositivePageSize(t.pageSize)?t.pageSize:a.DEFAULT_PAGE_SIZE;return t.pages.flatMap(e=>{if(!e||typeof e.id!=`string`||!e.id.trim()||typeof e.contentHtml!=`string`)return[];let l=a.resolvePageSize(e.pageSize,c);return[{id:e.id,title:e.title||`未命名页面`,format:l.format??`Custom`,width:l.width,height:l.height,contentHtml:w(e.contentHtml,s,r,i),...t.pageDecorations?{pageDecorations:n.normalizePageDecorations(t.pageDecorations)}:{},decorationVariables:o,decorationValues:r}]})}function S(t,r,i={}){return x(t,r,i).map((t,r,i)=>{let a=n.buildPageDecorationsHtml(t.pageDecorations,r+1,i.length,t.decorationVariables,t.decorationValues);return`<section class="${n.buildPageDecorationClassNames(t.pageDecorations,r+1)}" data-page-id="${e.escapeHtmlAttribute(t.id)}" data-page-format="${e.escapeHtmlAttribute(t.format)}" data-page-width="${t.width}" data-page-height="${t.height}" style="width:${t.width}px;min-height:${t.height}px">${a}<div class="gd-contract-template-page__content">${t.contentHtml}</div></section>`}).join(`
2
+ `)}function C(e){return e==null||e===``||Array.isArray(e)&&e.length===0}function w(t,n,r,i){if(!t)return t;let a=R(t);if(e.canUseDomHtml()){let e=new DOMParser().parseFromString(a,`text/html`);return e.querySelectorAll(`[data-template-variable]`).forEach(e=>{T(e,n,r,i)}),e.body.innerHTML.replace(/(<textarea\b[^>]*data-contract-render-control="true"[^>]*>)(?=[\r\n])/gi,`$1
3
+ `)}return e.replaceTemplateVariableSpans(a,(t,a)=>{let o=e.getHtmlAttribute(a,`data-key`);return o?E(n.get(o),o,r[o],i):t})}function T(e,t,n,r){let i=e.dataset.key||``,a=t.get(i);if(!i||!a)return;let o=new DOMParser().parseFromString(E(a,i,n[i],r),`text/html`).body.firstElementChild;o&&(o.tagName===`TEXTAREA`&&(o.textContent=F(k(a,n[i]))),e.replaceWith(o))}function E(e,t,n,r){return r.mode===`display`?D(e,t,n,r):O(e,t,n,r)}function D(n,r,a,s){let c=n?.type??`text`,l=k(n,a),u=c===`image`&&!C(l)&&!o.isSafeContractImageUrl(String(l))?``:l,d=I(u),f=t.resolveTemplateVariablePresentation({type:c,width:n?.width,height:n?.height,placeholder:n?.placeholder??``,defaultValue:d,format:n?.format??``,precision:n?.precision,useGrouping:n?.useGrouping,checkedText:n?.checkedText??``,uncheckedText:n?.uncheckedText??``,multiline:n?.multiline,rows:n?.rows,lineHeight:n?.lineHeight,style:n?.style}),p=f.displayText||n?.placeholder||n?.label||r,m=[`class="${e.escapeHtmlAttribute([`gd-contract-template-renderer__control`,`gd-contract-template-renderer__preview-control`,...f.classes,s.activeKey===r?`is-active`:``,C(u)?`is-empty`:``].filter(Boolean).join(` `))}"`,`style="${e.escapeHtmlAttribute(f.styleText)}"`,`data-contract-render-wrapper="true"`,`data-contract-render-preview="true"`,`data-key="${e.escapeHtmlAttribute(r)}"`,`data-variable-type="${e.escapeHtmlAttribute(c)}"`,`aria-label="${e.escapeHtmlAttribute(n?.label||r)}"`,s.disabled?``:`role="button"`,s.disabled?``:`tabindex="0"`].filter(Boolean).join(` `);return c===`checkbox`?`<span ${m}><span class="gd-contract-template-renderer__checkbox-mark" aria-hidden="true">${L(u)?`✓`:``}</span>${e.escapeHtmlText(p)}</span>`:c===`radio`?`<span ${m}>${i.buildRadioOptionsHtml(n?.options,j(u))||e.escapeHtmlText(n?.placeholder||p)}</span>`:c===`select`?`<span ${m}>${e.escapeHtmlText(M(n,u)||p)}</span>`:c===`image`&&!C(u)?`<span ${m}></span>`:`<span ${m}>${e.escapeHtmlText(p)}</span>`}function O(n,r,a,o){let s=n?.type??`text`,c=!!o.readonly,l=F(k(n,a)),u=t.resolveTemplateVariablePresentation({type:s,width:n?.width,height:n?.height,placeholder:n?.placeholder??``,defaultValue:c?l:``,format:n?.format??``,precision:n?.precision,useGrouping:n?.useGrouping,checkedText:n?.checkedText??``,uncheckedText:n?.uncheckedText??``,multiline:n?.multiline,rows:n?.rows,lineHeight:n?.lineHeight,style:n?.style}),d=o.disabled||c,f=[`data-contract-render-control="true"`,`data-key="${e.escapeHtmlAttribute(r)}"`,`data-variable-type="${e.escapeHtmlAttribute(s)}"`,`aria-label="${e.escapeHtmlAttribute(n?.label||r)}"`,d?`disabled`:``,c?`readonly`:``].filter(Boolean).join(` `),p=`style="${e.escapeHtmlAttribute(u.styleText)}"`,m=e.escapeHtmlAttribute([`gd-contract-template-renderer__control`,...u.classes].join(` `));if(s===`checkbox`)return`<label class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}"><input type="checkbox" ${f} ${L(l)?`checked`:``}>${e.escapeHtmlText(n?.checkedText||n?.label||r)}</label>`;if(s===`radio`){let t=k(n,a),o=i.buildRadioOptionsHtml(n?.options,j(t))||e.escapeHtmlText(u.displayText||n?.placeholder||``);return`<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}">${o}</span>`}if(c)return`<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}">${e.escapeHtmlText(u.displayText||l)}</span>`;if(s===`number`)return`<input class="${m}" ${p} type="number" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`;if(s===`date`)return`<input class="${m}" ${p} type="date" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`;if(s===`select`||s.endsWith(`-selector`)||s===`custom`){let t=k(n,a),o=s===`select`?M(n,t):i.formatContractTemplateRenderValue(t);return`<span class="${m}" ${p} data-contract-render-wrapper="true" data-key="${e.escapeHtmlAttribute(r)}">${e.escapeHtmlText(o)}</span>`}if(n?.multiline){let t=/^[\r\n]/.test(l)?`
4
+ `:``;return`<textarea class="${m}" ${p} ${f} placeholder="${e.escapeHtmlAttribute(n.placeholder||``)}">${t}${e.escapeHtmlText(l)}</textarea>`}return`<input class="${m}" ${p} type="text" ${f} value="${e.escapeHtmlAttribute(l)}" placeholder="${e.escapeHtmlAttribute(n?.placeholder||``)}">`}function k(e,t){if(!(e?.type===`select`&&e.multiple&&C(t)))return t??A(e)}function A(e){if(!e)return``;if(e.type===`checkbox`)return L(e.defaultValue);if(e.type===`number`&&e.defaultValue!==void 0){let t=Number(e.defaultValue);return Number.isFinite(t)?t:e.defaultValue}if(e.type===`select`||e.type===`radio`){if(e.type===`select`&&e.multiple||!e.defaultValue)return;let t=(e.options??[]).find(t=>String(t.value)===String(e.defaultValue));return t?{value:t.value,label:t.label,type:t.type||e.type}:void 0}if(!e.type?.endsWith(`-selector`))return e.defaultValue??``}function j(e){if(!Array.isArray(e)){if(i.isContractTemplateSelectionValue(e))return e.value;if(typeof e==`string`||typeof e==`number`)return e}}function M(e,t){let n=Array.isArray(t)?t:[t];if(n.length&&n.every(e=>i.isContractTemplateSelectionValue(e)))return i.formatContractTemplateRenderValue(t);let r=n.flatMap(t=>{let n=typeof t==`string`||typeof t==`number`?t:void 0;if(n===void 0)return[];let r=e?.options?.find(e=>String(e.value)===String(n));return r?.label?[r.label]:[]});return r.length?r.join(`、`):i.formatContractTemplateRenderValue(t)}function N(e){return(e.type===`select`||e.type===`radio`)&&!e.dataSource&&Array.isArray(e.options)&&e.options.length>0}function P(e,t){let n=Array.isArray(t)?t:[t];return n.length>0&&n.every(t=>i.isContractTemplateSelectionValue(t)&&(e.options??[]).some(e=>String(e.value)===String(t.value)))}function F(e){return typeof e==`boolean`?e?`true`:``:e==null?``:i.formatContractTemplateRenderValue(e)}function I(e){return typeof e==`boolean`?e?`true`:`false`:e==null?``:i.formatContractTemplateRenderValue(e)}function L(e){return e===!0||e===`true`||e===`1`||e===`yes`||e===`是`||e===`已选`}function R(t){if(e.canParseHtmlDocument()){let e=new DOMParser().parseFromString(t,`text/html`);return e.querySelectorAll(`script,style,meta,link,iframe,object,embed`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase();(n.startsWith(`on`)||n===`srcdoc`||l.has(n)&&V(t.value)||n===`style`&&U(t.value))&&e.removeAttribute(t.name)})}),e.body.innerHTML}return t.replace(/<\s*(script|style|iframe|object|embed)\b[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*\/?\s*(?:script|style|meta|link|iframe|object|embed)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\2|([^\s>]+))/gi,(e,t,n,r,i)=>{let a=r??i??``;return V(a)?``:n?` ${t}=${n}${a}${n}`:` ${t}=${a}`}).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>U(n)?``:` style=${t}${n}${t}`)}function z(t){return e.collectFromHtmlTags(t,u,t=>e.getHtmlAttribute(t,`data-key`))}function B(e){let t=[];return/<\s*(script|style|meta|link|iframe|object|embed)\b/i.test(e)&&t.push(`正文包含已移除的危险标签`),/\s(?:on[a-z]+|srcdoc)\s*=/i.test(e)&&t.push(`正文包含已移除的事件或嵌入属性`),(H(e)||/style\s*=\s*["'][^"']*(?:expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html))/i.test(e))&&t.push(`正文包含已移除的危险 URL 或样式`),t}function V(e){let t=e.replace(/&#(?:x([\da-f]+)|(\d+));?/gi,(e,t,n)=>{let r=Number.parseInt(t??n??``,t?16:10);try{return Number.isFinite(r)?String.fromCodePoint(r):e}catch{return e}}).replace(/&(colon|tab|newline);/gi,(e,t)=>({colon:`:`,newline:`
5
+ `,tab:` `})[t.toLowerCase()]??``).trim().replace(/[\u0000-\u0020\u007F]+/g,``);return/^(?:javascript|vbscript|data:text\/html)/i.test(t)}function H(e){let t=/\s+(?:action|formaction|href|src|xlink:href)\s*=\s*(?:(["'])(.*?)\1|([^\s>]+))/gi,n=t.exec(e);for(;n;){if(V(n[2]??n[3]??``))return!0;n=t.exec(e)}return!1}function U(e){return/expression\s*\(|url\s*\(\s*["']?\s*(?:javascript|vbscript|data:text\/html)/i.test(e)}function W(e,t){return C(t)?e.type===`select`||e.type===`radio`?A(e):C(e.defaultValue)?t:e.defaultValue:t}function G(e,t,n){if(typeof e==`boolean`||typeof e!=`number`&&typeof e!=`string`)return!1;let r=String(e).trim();if(!/^-?(?:\d+)(?:\.\d+)?$/.test(r))return!1;let i=Number(r);if(!Number.isFinite(i))return!1;if(t!==void 0){let e=r.split(`.`)[1]?.length??0,i=t+(n===`percent`?2:0);if(!Number.isInteger(t)||t<0||t>p||e>i)return!1}return!0}function K(e){if(typeof e!=`string`&&typeof e!=`number`)return!1;let t=String(e).trim(),n=/^(\d{4})[-/年](\d{1,2})[-/月](\d{1,2})(?:日)?(?:[T\s].*)?$/.exec(t);if(!n)return!1;let r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=new Date(Date.UTC(r,i-1,a));return o.getUTCFullYear()===r&&o.getUTCMonth()===i-1&&o.getUTCDate()===a}function q(e){return typeof e==`boolean`?!0:[`1`,`true`,`yes`,`checked`,`是`,`已选`,`0`,`false`,`no`,`unchecked`,`否`,`未选`].includes(String(e).trim().toLowerCase())}function J(e){return m.test(e)}function Y(e){return e===`select`||e===`radio`||e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`}function X(e,t){return t?Array.isArray(e)&&e.every(i.isContractTemplateSelectionValue):i.isContractTemplateSelectionValue(e)}function Z(e,t){let n=e.width;if(!Number.isFinite(n)||n<=0)return!1;let r=Math.max(10,Number.isFinite(e.style?.fontSize)&&(e.style?.fontSize??0)>0?e.style.fontSize:14),i=Math.max(1,n-12)/r,a=e=>Array.from(e).reduce((e,t)=>e+(/[^\x00-\x7f]/.test(t)?1:.55),0);return e.multiline?t.split(/\r?\n/).reduce((e,t)=>e+Math.max(1,Math.ceil(a(t)/i)),0)>(e.rows??3):a(t)>i}function Q(e){if(!e||typeof e!=`object`)return!1;let{width:t,height:n}=e;return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)&&t>=d&&n>=d&&t<=f&&n<=f}exports.buildInitialRenderValues=h,exports.buildTemplateRenderHtml=S,exports.buildTemplateRenderPages=x,exports.buildTemplateVariableData=s,exports.isEmptyRenderValue=C,exports.normalizeRenderValues=g,exports.resolveTemplateRenderSubmitErrors=y,exports.sanitizeContractRendererHtml=R,exports.validateTemplateRenderStructure=b,exports.validateTemplateRenderValues=_,exports.validateTemplateTextOverflow=v;