@guodun/antdv 1.4.3 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.mjs +1 -1
- package/dist/es/components/contract-signing-location/src/ContractSigningTemplatePage.vue.mjs +66 -13
- package/dist/es/components/contract-signing-location/src/constants.mjs +27 -17
- package/dist/es/components/contract-signing-location/src/location-rules.mjs +2 -2
- package/dist/es/components/contract-signing-location/src/template-source.mjs +52 -36
- package/dist/es/components/contract-signing-location/style/index.css +1 -1
- package/dist/es/components/index.mjs +1 -1
- package/dist/es/components/pro-contract-template-designer/index.mjs +1 -1
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.mjs +4 -4
- package/dist/es/components/pro-contract-template-designer/src/DesignerPage.vue.mjs +50 -50
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +50 -50
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +34 -34
- package/dist/es/components/pro-contract-template-designer/src/utils/page-decorations.mjs +17 -17
- package/dist/es/components/pro-contract-template-designer/src/utils/signing-placement.mjs +14 -14
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +89 -89
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/es/index.mjs +25 -25
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocationCanvas.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/ContractSigningTemplatePage.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/constants.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/location-rules.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
- package/dist/lib/components/contract-signing-location/style/index.css +1 -1
- package/dist/lib/components/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/index.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplatePreviewPage.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/DesignerPage.vue.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +3 -3
- package/dist/lib/components/pro-contract-template-designer/src/utils/page-decorations.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/signing-placement.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +2 -2
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/index.cjs +1 -1
- package/dist/theme/contract-signing-location.css +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/types/components/contract-signing-location/src/ContractSigningTemplatePage.vue.d.ts +3 -1
- package/dist/types/components/contract-signing-location/src/constants.d.ts +18 -0
- package/dist/types/components/contract-signing-location/src/coordinates.d.ts +6 -0
- package/dist/types/components/contract-signing-location/src/template-source.d.ts +17 -0
- package/package.json +3 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./utils/
|
|
2
|
-
`)}function se(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>h)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ce(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof f.CellSelection||t instanceof p.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function C(){let e=S.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function le(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function w(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function T(e,t){let n=S.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return w(n.state.doc.resolve(r))}function E(){let e=S.value;if(e)return w(e.state.selection.$from)}function D(e,t,n){let r=S.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof f.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=T(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(f.CellSelection.create(r.state.doc,a))),!0):!1}function O(){let e=S.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function k(){let e=S.value,t=e?.state.selection;if(!e||!(t instanceof f.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function A(e=S.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function j(e){let t=S.value;if(!t)return 0;let n=A(t.state.doc),r=n,i=e=>{r=A(e.doc)};return e===`delete-table-row`?(0,f.deleteRow)(t.state,i):e===`delete-table-column`?(0,f.deleteColumn)(t.state,i):(0,f.deleteTable)(t.state,i),Math.max(0,n-r)}function M(e){let t=S.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?se():void 0,leadingText:C()})}function ue(e,t){M({pageId:_.page.id,clientX:e,clientY:t})}function N(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function P(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:a.normalizeContractImageDimension(e.attrs.width),height:a.normalizeContractImageDimension(e.attrs.height)}}function F(){let e=S.value?.state.selection;if(e instanceof p.NodeSelection)return P(e.node,e.from)}function I(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&v(`variable-select`,r.attrs.key),(!(e.state.selection instanceof p.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(p.NodeSelection.create(e.state.doc,t))),P(r,t))}catch{return}}function L(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:O(),activeAlignment:k(),affectedVariableCounts:{deleteRow:j(`delete-table-row`),deleteColumn:j(`delete-table-column`),deleteTable:j(`delete-table`)}})}function R(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function z(){let e=S.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&R(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function B(){let e=z();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function V(){return z().length>1}function H(){return[`center`,`right`].find(e=>S.value?.isActive(`heading`,{textAlign:e})||S.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function U(){let e=S.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:B(),hasMixedBlockFormats:V(),textAlign:H(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:ae(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:oe(),selectedContentImage:F()}}function W(){v(`editor-state-change`,_.page.id,U())}(0,u.watch)(y,e=>{S.value?.setEditable(!e),W()}),(0,u.watch)(()=>_.page.contentHtml,e=>{!S.value||e===S.value.getHTML()||(S.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W())});let de=(0,u.computed)(()=>{let e=n.normalizePageDecorations(_.pageDecorations),t=_.pageIndex+1,r=n.hasEnabledPageHeader(e,t)?n.getPageDecorationSafePadding(e.header):n.CONTRACT_PAGE_BASE_PADDING.top,i=n.hasEnabledPageFooter(e,t)?n.getPageDecorationSafePadding(e.footer):n.CONTRACT_PAGE_BASE_PADDING.bottom;return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-r-i)}px`}}),G=(0,u.computed)(()=>Math.max(.1,_.zoom||1)),fe=(0,u.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*G.value)}px`})),pe=(0,u.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),me=(0,u.computed)(()=>r.resolvePageSize(_.pageSize));function K(e,t){let n=b.value?.getBoundingClientRect();return n?{x:Math.min(_.pageSize.width,Math.max(0,(e-n.left)/G.value)),y:Math.min(_.pageSize.height,Math.max(0,(t-n.top)/G.value))}:{x:_.pageSize.width/2,y:_.pageSize.height/2}}function he(t){let n=b.value?.getBoundingClientRect(),r=b.value?.closest(`.gd-contract-template-designer__canvas`)?.getBoundingClientRect(),i=e.getSigningPlacementDefaultSize(t);if(!n||!r)return{x:Math.max(0,(_.pageSize.width-i.width)/2),y:Math.max(0,(_.pageSize.height-i.height)/2)};let a=Math.max(n.left,r.left),o=Math.max(n.top,r.top),s=Math.min(n.right,r.right),c=Math.min(n.bottom,r.bottom),l=K(s>a?(a+s)/2:(n.left+n.right)/2,c>o?(o+c)/2:(n.top+n.bottom)/2);return{x:l.x-i.width/2,y:l.y-i.height/2}}function ge(t){if(!e.canMutateSigningPlacements(_.readonly,_.disabled)){t.preventDefault(),t.stopPropagation();return}let n=e.parseSigningPlacementDragPayload(t.dataTransfer?.getData(e.SIGNING_PLACEMENT_MIME));if(n){t.preventDefault(),t.stopPropagation();let e=K(t.clientX,t.clientY);v(`signing-placement-drop`,_.page.id,n,e.x,e.y);return}let r=t.dataTransfer?.getData(`application/x-gd-contract-variable`);if(r){t.preventDefault(),t.stopPropagation(),v(`variable-drop`,_.page.id,r,t.clientX,t.clientY);return}let i=t.dataTransfer?.getData(m);i&&i!==_.page.id&&(t.preventDefault(),t.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function _e(e,t){let n=S.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return i.insertTemplateVariableNode(n,e,r),$(),q()}function ve(e,t){let n=S.value;if(n)return o.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),q()}function ye(e){let t=S.value,n=t?.state.selection;if(!t||!(n instanceof p.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:a.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let o=t.state.tr.setNodeMarkup(n.from,void 0,r);return o.setSelection(p.NodeSelection.create(o.doc,n.from)),t.view.dispatch(o),q()}function be(){let e=S.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function q(){return{..._.page,pageSize:me.value,contentHtml:S.value?.getHTML()??_.page.contentHtml,contentJson:S.value?.getJSON()??_.page.contentJson}}function J(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function xe(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Se(e){return(0,te.generateHTML)(J(e),x)}function Ce(){if(_.pageDecorations){let e=n.normalizePageDecorations(_.pageDecorations),t=_.pageIndex+1,r=n.hasEnabledPageHeader(e,t)?n.getPageDecorationSafePadding(e.header):n.CONTRACT_PAGE_BASE_PADDING.top,i=n.hasEnabledPageFooter(e,t)?n.getPageDecorationSafePadding(e.footer):n.CONTRACT_PAGE_BASE_PADDING.bottom;return Math.max(120,_.pageSize.height-r-i)}let e=b.value;if(!e)return _.pageSize.height-108;let t=window.getComputedStyle(e),r=Number.parseFloat(t.paddingTop)||0,i=Number.parseFloat(t.paddingBottom)||0;return Math.max(120,_.pageSize.height-r-i)}function we(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.value;return Array.from(e.children).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}})}function Y(){if(!S.value)return;let e=S.value.getJSON();return r.splitPageContentByMeasurements(e.content,we(),Ce())}function Te(){return!!Y()}function Ee(){if(!S.value)return;let e=Y();if(e)return S.value.commands.setContent(J(e.currentContent),{emitUpdate:!1}),{page:q(),overflowContent:e.overflowContent,overflowHtml:Se(e.overflowContent)}}function De(e){if(!S.value||!e.length)return;let t=S.value.getJSON().content,n=[...e,...xe(t)?[]:t??[]];return S.value.commands.setContent(J(n),{emitUpdate:!1}),q()}function X(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function Oe(e,t=e.key){if(!S.value)return;let n=i.buildTemplateVariableAttrs(e),r=!1;return S.value.commands.command(({tr:e,state:i,dispatch:a})=>(X(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),$(),r?q():void 0}function ke(e){if(!S.value)return;let t=0;return S.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=X(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?q():void 0}function Z(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function Q(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Ae(e){Z();let t=Q(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),S.value?.commands.focus(),!0):!1}function je(e){let t=Array.from(b.value?.querySelectorAll(`[data-signing-placement-id]`)??[]).find(t=>t.dataset.signingPlacementId===e);return t?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),!!t}function $(){Z(),Q(_.selectedVariableKey)?.classList.add(`is-active`)}function Me(e){let n=t.CONTRACT_TEXT_STYLE_PRESETS.find(t=>t.key===e),i=S.value;if(!n||!i)return;let a=i.chain().focus().clearNodes();n.headingLevel?a.setHeading({level:n.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(n.textAlign).setFontSize(`${n.fontSize}px`).setFontFamily(n.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`).setColor(r.DEFAULT_FIELD_STYLE.color||`#1f2937`),n.bold?a.setBold():a.unsetBold(),n.italic?a.setItalic():a.unsetItalic(),n.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,u.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,u.nextTick)($)},{deep:!0,flush:`post`});function Ne(e){e.type===`apply-block-style`?S.value&&c.applyContractTemplateBlockStyle(S.value,e.format):e.type===`apply-text-style-preset`?Me(e.preset):o.runContractTemplateEditorCommand(S.value,e),W()}function Pe(){S.value?.commands.focus()}function Fe(){return S.value?.getJSON()}function Ie(){return S.value?.getHTML()??_.page.contentHtml}function Le(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?Q(t.key):void 0;$(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function Re(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,u.onBeforeUnmount)(()=>{S.value?.destroy()}),re({focus:Pe,getHTML:Ie,getJSON:Fe,getEditorState:U,getTableCommandCapabilities:O,getAffectedVariableCount:j,getVisibleSigningPlacementPosition:he,insertVariable:_e,insertContentImage:ve,updateSelectedContentImage:ye,getSelectionRange:be,getSelectionViewportRect:ce,requestTextContextMenu:ue,hasOverflowContent:Te,updateVariable:Oe,removeVariable:ke,splitOverflowContent:Ee,prependContent:De,runCommand:Ne,scrollIntoField:Le,scrollIntoVariable:Ae,scrollIntoSigningPlacement:je,scrollIntoPage:Re}),(e,t)=>((0,u.openBlock)(),(0,u.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,u.normalizeStyle)(fe.value)},[(0,u.createElementVNode)(`div`,{class:(0,u.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,u.normalizeStyle)(pe.value)},[(0,u.createElementVNode)(`header`,ne,[(0,u.createElementVNode)(`span`,null,(0,u.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,u.createElementVNode)(`span`,null,`第 `+(0,u.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,u.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,u.toDisplayString)(g.pageSize.width)+` × `+(0,u.toDisplayString)(g.pageSize.height),1)]),(0,u.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,u.normalizeStyle)(de.value),onDragover:t[3]||=(0,u.withModifiers)(()=>{},[`prevent`]),onDrop:ge,onClick:t[4]||=e=>v(`editor-focus`,g.page.id)},[(0,u.createVNode)(ee.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,u.unref)(S)?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(d.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,u.unref)(S)},null,8,[`editor`])):(0,u.createCommentVNode)(``,!0),(0,u.createVNode)(l.default,{"page-size":g.pageSize,placements:g.signingPlacements,"selected-id":g.selectedSigningPlacementId,zoom:G.value,readonly:g.readonly,disabled:g.disabled,onSelect:t[0]||=e=>v(`signing-placement-select`,e),onMove:t[1]||=e=>v(`signing-placement-move`,e),onRemove:t[2]||=e=>v(`signing-placement-remove`,e)},null,8,[`page-size`,`placements`,`selected-id`,`zoom`,`readonly`,`disabled`])],36)],6)],4))}});exports.default=g;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./ContractTemplatePageDecorations.cjs`),r=require(`./utils/signing-placement.cjs`),i=require(`./composables/use-template-designer.cjs`),a=require(`./extensions/template-variable.cjs`),o=require(`./utils/content-image.cjs`),s=require(`./extensions/editor-extensions.cjs`),c=require(`./utils/context-variable.cjs`),l=require(`./utils/block-style.cjs`),ee=require(`./SigningPlacementLayer.cjs`);let u=require(`vue`),d=require(`@tiptap/vue-3`),te=require(`@tiptap/core`),f=require(`@tiptap/pm/tables`),p=require(`@tiptap/pm/state`);var ne={class:`gd-contract-template-designer__page-title`},m=`application/x-gd-contract-variable-move`,h=8,g=(0,u.defineComponent)({name:`ProContractTemplateDesignerPage`,__name:`DesignerPage`,props:{page:{},pageIndex:{},pageSize:{},pageDecorations:{default:void 0},totalPages:{default:1},variables:{},selectedVariableKey:{default:``},active:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},zoom:{default:1},signingPlacements:{default:()=>[]},selectedSigningPlacementId:{default:``},processImageFile:{type:Function,default:void 0}},emits:[`page-update`,`variable-drop`,`signing-placement-drop`,`signing-placement-select`,`signing-placement-move`,`signing-placement-remove`,`variable-select`,`variable-move-blocked`,`editor-focus`,`editor-state-change`,`editor-context-menu`],setup(g,{expose:re,emit:ie}){let _=g,v=ie,y=(0,u.computed)(()=>_.readonly||_.disabled),b=(0,u.ref)(),x=s.createEditorExtensions(`请输入合同正文,或从 WPS / Word 粘贴合同内容`,{processImageFile:_.processImageFile,getZoom:()=>Math.max(.1,_.zoom||1)}),S=(0,d.useEditor)({content:_.page.contentHtml,editable:!y.value,extensions:x,editorProps:{attributes:{class:`gd-contract-template-designer__editor-prose`},handleClick:(e,t,n)=>{let r=(n.target instanceof HTMLElement?n.target.closest(`[data-template-variable]`):void 0)?.dataset.key;if(!r)return!1;let i=_.variables.find(e=>e.key===r);return i&&v(`variable-select`,i.key),!1},handleDOMEvents:{contextmenu:(e,t)=>{if(y.value)return!1;let n=I(e,t.target);if(n)return t.preventDefault(),N({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY},n),!0;let r=S.value?.state.selection,i=r instanceof f.CellSelection,a=t.target instanceof HTMLElement?!!t.target.closest(`td, th`):!1,o=c.resolveEditorContextMenuKind({isCellSelection:i,selectionEmpty:!r||r.empty,inTable:a});return t.preventDefault(),o===`table`&&(i||D(t.clientX,t.clientY,t.target))?(L({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0):(M({pageId:_.page.id,clientX:t.clientX,clientY:t.clientY}),!0)},dragstart:(e,t)=>y.value?(t.preventDefault(),!0):(t.target instanceof HTMLElement?t.target:null)?.closest(`[data-template-variable]`)?(t.dataTransfer?.setData(m,_.page.id),t.dataTransfer&&(t.dataTransfer.effectAllowed=`move`),b.value?.classList.add(`is-variable-dragging`),!1):!1,dragend:()=>(b.value?.classList.remove(`is-variable-dragging`),!1),drop:(e,t)=>{if(y.value)return t.preventDefault(),t.stopPropagation(),!0;let n=t.dataTransfer?.getData(m);return!n||n===_.page.id?!1:(t.preventDefault(),v(`variable-move-blocked`,_.page.id),!0)}},handleKeyDown:(e,t)=>{if(y.value||!le(t))return!1;let n=S.value;if(!n)return!1;t.preventDefault();let r=n.state.selection,i=F();if(i){let e=n.view.coordsAtPos(r.from);return N({pageId:_.page.id,clientX:e.left,clientY:e.bottom},i),!0}let a=r instanceof f.CellSelection;if(c.resolveEditorContextMenuKind({isCellSelection:a,selectionEmpty:r.empty,inTable:n.isActive(`table`)})===`table`){if(!a){let e=E();typeof e==`number`&&n.view.dispatch(n.state.tr.setSelection(f.CellSelection.create(n.state.doc,e)))}let e=n.view.coordsAtPos(n.state.selection.from);return L({pageId:_.page.id,clientX:e.left,clientY:e.bottom}),!0}let o=n.view.coordsAtPos(n.state.selection.from);return M({pageId:_.page.id,clientX:o.left,clientY:o.bottom}),!0}},onUpdate:({editor:e})=>{v(`page-update`,{..._.page,contentHtml:e.getHTML(),contentJson:e.getJSON()}),W()},onFocus:()=>{v(`editor-focus`,_.page.id),W()},onBlur:W,onSelectionUpdate:W,onCreate:W});function ae(e){if(typeof e==`number`&&Number.isFinite(e))return e;let t=String(e||``).match(/(\d+(\.\d+)?)/);return t?Number(t[1]):void 0}function oe(){if(!S.value)return``;let{from:e,to:t}=S.value.state.selection;return S.value.state.doc.textBetween(e,t,`
|
|
2
|
+
`)}function se(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);if(Math.abs(r.top-n.top)>h)return;let i=Math.abs(r.left-n.left)/G.value;return Number.isFinite(i)&&i>0?i:void 0}catch{return}}function ce(){let e=S.value,t=e?.state.selection;if(!(!e||!t||t.empty)&&!(t instanceof f.CellSelection||t instanceof p.NodeSelection))try{let n=e.view.coordsAtPos(t.from),r=e.view.coordsAtPos(t.to,-1);return{top:Math.min(n.top,r.top),bottom:Math.max(n.bottom,r.bottom),left:Math.min(n.left,r.left),right:Math.max(n.left,r.right)}}catch{return}}function C(){let e=S.value;if(!e)return``;let t=e.state.selection.$from,n=t.pos;for(let e=t.depth;e>0;--e){let r=t.node(e).type.name;if(r===`paragraph`||r===`heading`){n=t.start(e);break}}return e.state.doc.textBetween(n,e.state.selection.from,``)}function le(e){return e.key===`ContextMenu`||e.shiftKey&&e.key===`F10`}function w(e){for(let t=e.depth;t>0;--t){let n=e.node(t).type.spec.tableRole;if(n===`cell`||n===`header_cell`)return e.before(t)}}function T(e,t){let n=S.value,r=n?.view.posAtCoords({left:e,top:t})?.pos;if(!(!n||typeof r!=`number`))return w(n.state.doc.resolve(r))}function E(){let e=S.value;if(e)return w(e.state.selection.$from)}function D(e,t,n){let r=S.value,i=n instanceof HTMLElement?n:null;if(!r||!i?.closest(`td,th`))return!1;if(r.state.selection instanceof f.CellSelection&&i.closest(`td.selectedCell,th.selectedCell`))return!0;let a=T(e,t);return typeof a==`number`?(r.view.dispatch(r.state.tr.setSelection(f.CellSelection.create(r.state.doc,a))),!0):!1}function O(){let e=S.value,t=e?.isActive(`table`)?e.can():void 0,n=e=>!!(t&&e(t));return{addRowBefore:n(e=>e.addRowBefore()),addRowAfter:n(e=>e.addRowAfter()),deleteRow:n(e=>e.deleteRow()),addColumnBefore:n(e=>e.addColumnBefore()),addColumnAfter:n(e=>e.addColumnAfter()),deleteColumn:n(e=>e.deleteColumn()),mergeCells:n(e=>e.mergeCells()),splitCell:n(e=>e.splitCell()),alignLeft:n(e=>e.setCellAttribute(`textAlign`,`left`)),alignCenter:n(e=>e.setCellAttribute(`textAlign`,`center`)),alignRight:n(e=>e.setCellAttribute(`textAlign`,`right`)),toggleHeaderRow:n(e=>e.toggleHeaderRow()),toggleHeaderColumn:n(e=>e.toggleHeaderColumn()),deleteTable:n(e=>e.deleteTable())}}function k(){let e=S.value,t=e?.state.selection;if(!e||!(t instanceof f.CellSelection))return`left`;let n=new Set;return t.forEachCell(e=>{let t=e.attrs.textAlign;n.add(t===`center`||t===`right`?t:`left`)}),n.size===1?n.values().next().value??`left`:`mixed`}function A(e=S.value?.state.doc){let t=0;return e?.descendants(e=>{e.type.name===`templateVariable`&&(t+=1)}),t}function j(e){let t=S.value;if(!t)return 0;let n=A(t.state.doc),r=n,i=e=>{r=A(e.doc)};return e===`delete-table-row`?(0,f.deleteRow)(t.state,i):e===`delete-table-column`?(0,f.deleteColumn)(t.state,i):(0,f.deleteTable)(t.state,i),Math.max(0,n-r)}function M(e){let t=S.value?.state.selection,n=!!(t&&!t.empty);v(`editor-context-menu`,{type:`text`,...e,hasSelection:n,selectionWidth:n?se():void 0,leadingText:C()})}function ue(e,t){M({pageId:_.page.id,clientX:e,clientY:t})}function N(e,t){v(`editor-context-menu`,{type:`image`,...e,image:t})}function P(e,t){if(!(e.type.name!==`image`||typeof e.attrs.src!=`string`||!e.attrs.src))return{position:t,src:e.attrs.src,alt:typeof e.attrs.alt==`string`?e.attrs.alt:void 0,title:typeof e.attrs.title==`string`?e.attrs.title:void 0,width:o.normalizeContractImageDimension(e.attrs.width),height:o.normalizeContractImageDimension(e.attrs.height)}}function F(){let e=S.value?.state.selection;if(e instanceof p.NodeSelection)return P(e.node,e.from)}function I(e,t){let n=t instanceof HTMLElement?t.closest(`[data-template-variable], img[src]`):null;if(n)try{let t=e.posAtDOM(n,0),r=e.state.doc.nodeAt(t);return!r||r.type.name!==`templateVariable`&&r.type.name!==`image`?void 0:(r.type.name===`templateVariable`&&typeof r.attrs.key==`string`&&v(`variable-select`,r.attrs.key),(!(e.state.selection instanceof p.NodeSelection)||e.state.selection.from!==t)&&e.dispatch(e.state.tr.setSelection(p.NodeSelection.create(e.state.doc,t))),P(r,t))}catch{return}}function L(e){v(`editor-context-menu`,{type:`table`,...e,capabilities:O(),activeAlignment:k(),affectedVariableCounts:{deleteRow:j(`delete-table-row`),deleteColumn:j(`delete-table-column`),deleteTable:j(`delete-table`)}})}function R(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function z(){let e=S.value;if(!e)return[];let{doc:t,selection:n}=e.state,r=[],i=e=>{e.type.name===`paragraph`?r.push(`paragraph`):e.type.name===`heading`&&R(e.attrs.level)&&r.push(e.attrs.level)};if(n.empty)for(let e=n.$from.depth;e>0;e--){let t=n.$from.node(e);if(t.type.name===`paragraph`||t.type.name===`heading`){i(t);break}}else t.nodesBetween(n.from,n.to,e=>(i(e),!0));return Array.from(new Set(r))}function B(){let e=z();return e.length===1&&e[0]!==`paragraph`?e[0]:void 0}function V(){return z().length>1}function H(){return[`center`,`right`].find(e=>S.value?.isActive(`heading`,{textAlign:e})||S.value?.isActive(`paragraph`,{textAlign:e}))??`left`}function U(){let e=S.value,t=t=>!!e?.isActive(t),n=e?.getAttributes(`textStyle`)??{};return{isFocused:!!e?.isFocused,canUndo:!!e?.can().undo(),canRedo:!!e?.can().redo(),isBold:t(`bold`),isItalic:t(`italic`),isUnderline:t(`underline`),isBulletList:t(`bulletList`),isOrderedList:t(`orderedList`),isTableActive:t(`table`),currentHeadingLevel:B(),hasMixedBlockFormats:V(),textAlign:H(),fontFamily:typeof n.fontFamily==`string`?n.fontFamily:void 0,fontSize:ae(n.fontSize),textColor:typeof n.color==`string`?n.color:void 0,selectionText:oe(),selectedContentImage:F()}}function W(){v(`editor-state-change`,_.page.id,U())}(0,u.watch)(y,e=>{S.value?.setEditable(!e),W()}),(0,u.watch)(()=>_.page.contentHtml,e=>{!S.value||e===S.value.getHTML()||(S.value.commands.setContent(e||`<p></p>`,{emitUpdate:!1}),W())});let de=(0,u.computed)(()=>{let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return{width:`${_.pageSize.width}px`,height:`${_.pageSize.height}px`,paddingTop:`${r}px`,paddingBottom:`${i}px`,"--gd-contract-page-content-height":`${Math.max(120,_.pageSize.height-r-i)}px`}}),G=(0,u.computed)(()=>Math.max(.1,_.zoom||1)),fe=(0,u.computed)(()=>({width:`${Math.ceil((_.pageSize.width+10)*G.value)}px`,height:`${Math.ceil((_.pageSize.height+40)*G.value)}px`})),pe=(0,u.computed)(()=>({"--gd-contract-page-zoom":String(G.value)})),me=(0,u.computed)(()=>i.resolvePageSize(_.pageSize));function K(e,t){let n=b.value?.getBoundingClientRect();return n?{x:Math.min(_.pageSize.width,Math.max(0,(e-n.left)/G.value)),y:Math.min(_.pageSize.height,Math.max(0,(t-n.top)/G.value))}:{x:_.pageSize.width/2,y:_.pageSize.height/2}}function he(e){let t=b.value?.getBoundingClientRect(),n=b.value?.closest(`.gd-contract-template-designer__canvas`)?.getBoundingClientRect(),i=r.getSigningPlacementDefaultSize(e);if(!t||!n)return{x:Math.max(0,(_.pageSize.width-i.width)/2),y:Math.max(0,(_.pageSize.height-i.height)/2)};let a=Math.max(t.left,n.left),o=Math.max(t.top,n.top),s=Math.min(t.right,n.right),c=Math.min(t.bottom,n.bottom),l=K(s>a?(a+s)/2:(t.left+t.right)/2,c>o?(o+c)/2:(t.top+t.bottom)/2);return{x:l.x-i.width/2,y:l.y-i.height/2}}function ge(e){if(!r.canMutateSigningPlacements(_.readonly,_.disabled)){e.preventDefault(),e.stopPropagation();return}let t=r.parseSigningPlacementDragPayload(e.dataTransfer?.getData(r.SIGNING_PLACEMENT_MIME));if(t){e.preventDefault(),e.stopPropagation();let n=K(e.clientX,e.clientY);v(`signing-placement-drop`,_.page.id,t,n.x,n.y);return}let n=e.dataTransfer?.getData(`application/x-gd-contract-variable`);if(n){e.preventDefault(),e.stopPropagation(),v(`variable-drop`,_.page.id,n,e.clientX,e.clientY);return}let i=e.dataTransfer?.getData(m);i&&i!==_.page.id&&(e.preventDefault(),e.stopPropagation(),v(`variable-move-blocked`,_.page.id))}function _e(e,t){let n=S.value;if(!n)return;let r=t?n.view.posAtCoords(t)?.pos:void 0;return a.insertTemplateVariableNode(n,e,r),$(),q()}function ve(e,t){let n=S.value;if(n)return s.runContractTemplateEditorCommand(n,{type:`insert-content-image`,image:e,position:t}),q()}function ye(e){let t=S.value,n=t?.state.selection;if(!t||!(n instanceof p.NodeSelection)||n.node.type.name!==`image`)return;let r={...n.node.attrs},i=!1;if([`width`,`height`].forEach(t=>{if(!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t]===void 0?null:o.normalizeContractImageDimension(e[t])??null;r[t]!==n&&(r[t]=n,i=!0)}),!i)return;let a=t.state.tr.setNodeMarkup(n.from,void 0,r);return a.setSelection(p.NodeSelection.create(a.doc,n.from)),t.view.dispatch(a),q()}function be(){let e=S.value?.state.selection;return e?{from:e.from,to:e.to}:void 0}function q(){return{..._.page,pageSize:me.value,contentHtml:S.value?.getHTML()??_.page.contentHtml,contentJson:S.value?.getJSON()??_.page.contentJson}}function J(e){return{type:`doc`,content:e.length?e:[{type:`paragraph`}]}}function xe(e){return e?.length?e.length===1&&e[0].type===`paragraph`&&!e[0].content?.length:!0}function Se(e){return(0,te.generateHTML)(J(e),x)}function Ce(){if(_.pageDecorations){let e=t.normalizePageDecorations(_.pageDecorations),n=_.pageIndex+1,r=t.hasEnabledPageHeader(e,n)?t.getPageDecorationSafePadding(e.header):t.CONTRACT_PAGE_BASE_PADDING.top,i=t.hasEnabledPageFooter(e,n)?t.getPageDecorationSafePadding(e.footer):t.CONTRACT_PAGE_BASE_PADDING.bottom;return Math.max(120,_.pageSize.height-r-i)}let e=b.value;if(!e)return _.pageSize.height-108;let n=window.getComputedStyle(e),r=Number.parseFloat(n.paddingTop)||0,i=Number.parseFloat(n.paddingBottom)||0;return Math.max(120,_.pageSize.height-r-i)}function we(){let e=b.value?.querySelector(`.gd-contract-template-designer__editor-prose`);if(!e)return[];let t=e.getBoundingClientRect(),n=G.value;return Array.from(e.children).map(e=>{let r=e.getBoundingClientRect();return{top:(r.top-t.top)/n,height:r.height/n}})}function Y(){if(!S.value)return;let e=S.value.getJSON();return i.splitPageContentByMeasurements(e.content,we(),Ce())}function Te(){return!!Y()}function Ee(){if(!S.value)return;let e=Y();if(e)return S.value.commands.setContent(J(e.currentContent),{emitUpdate:!1}),{page:q(),overflowContent:e.overflowContent,overflowHtml:Se(e.overflowContent)}}function De(e){if(!S.value||!e.length)return;let t=S.value.getJSON().content,n=[...e,...xe(t)?[]:t??[]];return S.value.commands.setContent(J(n),{emitUpdate:!1}),q()}function X(e,t){let n=[];return e.descendants((e,r)=>{e.type.name===`templateVariable`&&e.attrs.key===t&&n.push({node:e,pos:r})}),n}function Oe(e,t=e.key){if(!S.value)return;let n=a.buildTemplateVariableAttrs(e),r=!1;return S.value.commands.command(({tr:e,state:i,dispatch:a})=>(X(i.doc,t).forEach(({node:t,pos:i})=>{e.setNodeMarkup(i,void 0,{...t.attrs,...n}),r=!0}),r&&a?.(e),r)),$(),r?q():void 0}function ke(e){if(!S.value)return;let t=0;return S.value.commands.command(({tr:n,state:r,dispatch:i})=>{let a=X(r.doc,e).map(({node:e,pos:t})=>({from:t,to:t+e.nodeSize})).sort((e,t)=>t.from-e.from);return a.forEach(e=>n.delete(e.from,e.to)),t=a.length,t&&i?.(n),t>0}),t?q():void 0}function Z(){b.value?.querySelectorAll(`.gd-contract-template-variable.is-active`).forEach(e=>e.classList.remove(`is-active`))}function Q(e){if(e)return Array.from(b.value?.querySelectorAll(`[data-template-variable]`)??[]).find(t=>t.dataset.key===e)}function Ae(e){Z();let t=Q(e);return t?(t.classList.add(`is-active`),t.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),S.value?.commands.focus(),!0):!1}function je(e){let t=Array.from(b.value?.querySelectorAll(`[data-signing-placement-id]`)??[]).find(t=>t.dataset.signingPlacementId===e);return t?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),!!t}function $(){Z(),Q(_.selectedVariableKey)?.classList.add(`is-active`)}function Me(t){let n=e.CONTRACT_TEXT_STYLE_PRESETS.find(e=>e.key===t),r=S.value;if(!n||!r)return;let a=r.chain().focus().clearNodes();n.headingLevel?a.setHeading({level:n.headingLevel}):a.setParagraph(),a.unsetAllMarks().unsetTextAlign().unsetFontSize().unsetFontFamily().unsetColor().setTextAlign(n.textAlign).setFontSize(`${n.fontSize}px`).setFontFamily(n.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`).setColor(i.DEFAULT_FIELD_STYLE.color||`#1f2937`),n.bold?a.setBold():a.unsetBold(),n.italic?a.setItalic():a.unsetItalic(),n.underline?a.setUnderline():a.unsetUnderline(),a.run()}(0,u.watch)([()=>_.selectedVariableKey,()=>_.variables],()=>{(0,u.nextTick)($)},{deep:!0,flush:`post`});function Ne(e){e.type===`apply-block-style`?S.value&&l.applyContractTemplateBlockStyle(S.value,e.format):e.type===`apply-text-style-preset`?Me(e.preset):s.runContractTemplateEditorCommand(S.value,e),W()}function Pe(){S.value?.commands.focus()}function Fe(){return S.value?.getJSON()}function Ie(){return S.value?.getHTML()??_.page.contentHtml}function Le(e){let t=_.variables.find(t=>t.id===e||t.key===e),n=t?Q(t.key):void 0;$(),n?.scrollIntoView({behavior:`smooth`,block:`center`})}function Re(){b.value?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}return(0,u.onBeforeUnmount)(()=>{S.value?.destroy()}),re({focus:Pe,getHTML:Ie,getJSON:Fe,getEditorState:U,getTableCommandCapabilities:O,getAffectedVariableCount:j,getVisibleSigningPlacementPosition:he,insertVariable:_e,insertContentImage:ve,updateSelectedContentImage:ye,getSelectionRange:be,getSelectionViewportRect:ce,requestTextContextMenu:ue,hasOverflowContent:Te,updateVariable:Oe,removeVariable:ke,splitOverflowContent:Ee,prependContent:De,runCommand:Ne,scrollIntoField:Le,scrollIntoVariable:Ae,scrollIntoSigningPlacement:je,scrollIntoPage:Re}),(e,t)=>((0,u.openBlock)(),(0,u.createElementBlock)(`section`,{class:`gd-contract-template-designer__page-shell`,style:(0,u.normalizeStyle)(fe.value)},[(0,u.createElementVNode)(`div`,{class:(0,u.normalizeClass)([`gd-contract-template-designer__page-zoom`,{"is-active":g.active}]),style:(0,u.normalizeStyle)(pe.value)},[(0,u.createElementVNode)(`header`,ne,[(0,u.createElementVNode)(`span`,null,(0,u.toDisplayString)(g.page.title||`第 ${g.pageIndex+1} 页`),1),(0,u.createElementVNode)(`span`,null,`第 `+(0,u.toDisplayString)(g.pageIndex+1)+` 页 · `+(0,u.toDisplayString)(g.pageSize.label||`A4`)+` · `+(0,u.toDisplayString)(g.pageSize.width)+` × `+(0,u.toDisplayString)(g.pageSize.height),1)]),(0,u.createElementVNode)(`div`,{ref_key:`pageElement`,ref:b,class:`gd-contract-template-designer__page`,style:(0,u.normalizeStyle)(de.value),onDragover:t[3]||=(0,u.withModifiers)(()=>{},[`prevent`]),onDrop:ge,onClick:t[4]||=e=>v(`editor-focus`,g.page.id)},[(0,u.createVNode)(n.default,{decorations:g.pageDecorations,"page-number":g.pageIndex+1,"total-pages":g.totalPages,variables:g.variables},null,8,[`decorations`,`page-number`,`total-pages`,`variables`]),(0,u.unref)(S)?((0,u.openBlock)(),(0,u.createBlock)((0,u.unref)(d.EditorContent),{key:0,class:`gd-contract-template-page__content`,editor:(0,u.unref)(S)},null,8,[`editor`])):(0,u.createCommentVNode)(``,!0),(0,u.createVNode)(ee.default,{"page-size":g.pageSize,placements:g.signingPlacements,"selected-id":g.selectedSigningPlacementId,zoom:G.value,readonly:g.readonly,disabled:g.disabled,onSelect:t[0]||=e=>v(`signing-placement-select`,e),onMove:t[1]||=e=>v(`signing-placement-move`,e),onRemove:t[2]||=e=>v(`signing-placement-remove`,e)},null,8,[`page-size`,`placements`,`selected-id`,`zoom`,`readonly`,`disabled`])],36)],6)],4))}});exports.default=g;
|
package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/signing-placement.cjs`),n=require(`./constants.cjs`),r=require(`./utils/page-decorations.cjs`),i=require(`./composables/use-template-designer.cjs`),a=require(`./utils/image-url.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),c=require(`./utils/context-variable.cjs`),ee=require(`./DesignerPage.cjs`),te=require(`./TableContextMenu.cjs`),ne=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),re=require(`./ContractTemplateDesignerToolbar.cjs`),ie=require(`./ContractTemplateTextContextMenu.cjs`),ae=require(`./ContractTemplateTextBubbleMenu.cjs`),oe=require(`./ContractTemplateImageContextMenu.cjs`),se=require(`./ContractTemplatePreviewModal.cjs`),ce=require(`./ContractTemplateSubmitDataModal.cjs`),le=require(`./composables/use-template-draft-cache.cjs`),ue=require(`./composables/use-auto-pagination.cjs`),de=require(`./composables/use-designer-files.cjs`),l=require(`./composables/use-template-files.cjs`),fe=require(`./composables/use-draft-cache-session.cjs`),u=require(`./composables/use-signing-placement-editor.cjs`),pe=require(`./utils/template-tool-icons.cjs`),me=require(`./ContractTemplateFileBar.cjs`),he=require(`./ContractTemplateDesignerSidebar.cjs`),ge=require(`./ContractTemplateDesignerInspector.cjs`),_e=require(`./ContractTemplatePageDecorationsStudio.cjs`),d=require(`./utils/serialize-fingerprint.cjs`),ve=require(`./utils/editor-state.cjs`),ye=require(`./utils/context-menu-viewport.cjs`);let f=require(`vue`),be=require(`ant-design-vue`),xe=require(`@vueuse/core`),Se=require(`@ant-design/icons-vue`);var Ce={key:2,class:`gd-contract-template-designer__validation`},we={key:0,class:`gd-contract-template-designer__validation-list`},Te=[`onClick`],Ee={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},De=.5,Oe=1.5,ke=.1,Ae=120,je=128,Me=108,Ne=48,Pe=24,Fe=10,Ie=48,Le=8,p=(0,f.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:()=>i.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>i.DEFAULT_FIELD_TYPES},defaultVariableStyle:{default:()=>i.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},showSubmitDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},showSigningPlacementTools:{type:Boolean,default:!1},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:le.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:le.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:le.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`,`signing-placement-add`,`signing-placement-change`,`signing-placement-remove`,`signing-placement-select`],setup(p,{expose:Re,emit:ze}){let m=p,h=ze,Be=(0,f.computed)(()=>({height:typeof m.height==`number`?`${m.height}px`:m.height})),Ve=(0,f.ref)(),He=(0,f.ref)(),Ue=(0,f.ref)(),We=(0,f.ref)(),Ge=(0,f.ref)(),Ke=`gd-contract-template-page-decorations-studio-${(0,f.useId)()}`,qe=`gd-contract-template-workspace-chrome-${(0,f.useId)()}`,Je=(0,f.ref)(),Ye=(0,f.ref)();function Xe(e){if(!e||!Array.isArray(e.pages)||!Array.isArray(e.signingPlacements))return[];try{return i.validateTemplateValue(e).filter(e=>e.type===`signing-placement`)}catch{return[]}}function Ze(e,t){return Object.fromEntries(e.map((e,n)=>[e.id,Xe(t?.[n]?.template??e.template)]))}let Qe=``,$e=``,et=(0,f.ref)(!1),g=(0,f.computed)(()=>et.value||Array.isArray(m.files)),tt=l.normalizeContractTemplateFiles(m.files,m.modelValue,m.pageSize),nt=l.constrainContractTemplateFiles(tt,m.pageSizeOptions),rt=g.value?nt.files:tt,it=l.resolveContractTemplateActiveFileId(rt,m.activeFileId),_=(0,f.ref)(rt),v=(0,f.ref)(it),at=rt.find(e=>e.id===it)??rt[0],y=(0,f.ref)(Ze(rt,Array.isArray(m.files)?m.files:m.modelValue?[{template:m.modelValue}]:void 0)),b=(0,f.ref)(y.value[it]??Xe(at?.template)),ot=i.normalizeTemplateValue(at?.template??m.modelValue,m.pageSize),st=i.constrainTemplatePageSizes(ot,m.pageSizeOptions),x=(0,f.ref)(st.value);if(g.value){if(_.value=l.replaceContractTemplateFile(_.value,v.value,st.value),d.serializeFingerprint(_.value)!==d.serializeFingerprint(tt)){let e=l.cloneContractTemplateFiles(_.value);Qe=d.serializeFingerprint(e),h(`update:files`,e),h(`files-change`,l.cloneContractTemplateFiles(e))}}else m.modelValue&&d.serializeFingerprint(st.value)!==d.serializeFingerprint(ot)&&($e=d.serializeFingerprint(st.value),h(`update:modelValue`,i.cloneTemplateValue(st.value)),h(`change`,i.cloneTemplateValue(st.value)),Cr(st.resizedSigningPlacementIds,st.value));let S=(0,f.ref)(``),C=(0,f.ref)(``),w=(0,f.ref)(x.value.pages[0]?.id??``),T=(0,f.ref)(!1),E=(0,f.ref)([]),D=new Map,ct=(0,f.ref)(!1),lt=(0,f.ref)(``),ut=(0,f.ref)(!1),dt=(0,f.ref)(),ft=(0,f.ref)(),pt=(0,f.ref)(``),mt=(0,f.ref)(!1),ht=(0,f.ref)(``),O=(0,f.ref)(1),k=(0,f.ref)(!1),gt=(0,f.ref)(!1),_t=(0,f.ref)(!1),vt=(0,f.ref)(!1),yt=(0,f.ref)(!1),bt=(0,f.ref)(),A=(0,f.ref)(!1),xt=(0,f.ref)(`header`),St=(0,f.ref)(!1),Ct=(0,f.ref)({}),j=(0,f.ref)(``),M=(0,f.ref)(!1),N=(0,f.ref)(!1),wt=(0,f.ref)(!1),Tt=(0,f.ref)(!1),Et=(0,f.ref)(``),Dt=(0,f.ref)(),Ot=(0,f.ref)(),kt=(0,f.ref)(``),At=(0,f.ref)(!1),P=(0,f.ref)(),jt=(0,f.ref)(),F=(0,f.ref)(),Mt=(0,f.ref)(),Nt=(0,f.ref)(!1),Pt,Ft=(0,f.ref)(!1),It,Lt=(0,f.ref)(!1),Rt=(0,f.ref)(``),I=(0,f.ref)(),zt=(0,f.ref)(),L=(0,f.ref)(),Bt=(0,f.ref)(),Vt=(0,f.ref)(),Ht=(0,f.ref)(),R=(0,f.ref)(``),z=(0,f.ref)(le.createDraftCacheStatus(`idle`,`暂无本地草稿`)),Ut=(0,f.ref)({rows:3,cols:3,withHeaderRow:!0}),Wt=new WeakSet,Gt=[`.gd-contract-template-designer__page-decorations-select-popup`,`.gd-contract-template-designer__page-decorations-dropdown-popup`].join(`,`),Kt,qt,Jt=!1,Yt=!1,Xt,B=(0,f.computed)(()=>m.readonly||m.disabled),Zt=(0,f.computed)(()=>!!(P.value||I.value||L.value||M.value||N.value||St.value||wt.value||Tt.value)),Qt=(0,f.computed)(()=>!!m.enableDraftCache&&!B.value),$t=(0,f.computed)(()=>_.value.find(e=>e.id===v.value)??_.value[0]),en=(0,f.computed)(()=>m.draftCacheKey),V=(0,f.computed)(()=>x.value.variables.find(e=>e.key===S.value)),H=(0,f.computed)(()=>x.value.signingPlacements??[]),tn=(0,f.computed)(()=>dt.value?i.buildTemplatePreviewPages(dt.value):[]),nn=(0,f.computed)(()=>(ft.value??[]).map(e=>({file:e,pages:i.buildTemplatePreviewPages(e.template)}))),rn=(0,f.computed)(()=>nn.value.find(e=>e.file.id===pt.value)??nn.value[0]),an=(0,f.computed)(()=>H.value.find(e=>e.id===C.value)),on=(0,f.computed)(()=>H.value.map(e=>{let n=x.value.pages.findIndex(t=>t.id===e.pageId);return{placement:e,label:t.SIGNING_PLACEMENT_TYPE_LABELS[e.type],detail:`${t.SIGNING_PLACEMENT_TYPE_LABELS[e.type]} · 第 ${Math.max(0,n)+1} 页`}})),sn=(0,f.computed)(()=>{let e=an.value?.pageId;return Z(x.value.pages.find(t=>t.id===e))}),U=(0,f.computed)(()=>x.value.pages.find(e=>e.id===w.value)??x.value.pages[0]),cn=(0,f.computed)(()=>i.resolvePageSize(U.value?.pageSize,x.value.pageSize)),ln=(0,f.computed)(()=>T.value&&E.value.length===0),un=(0,f.computed)(()=>T.value?ln.value?`校验通过,正文变量与变量配置一致`:`发现 ${E.value.length} 个校验问题`:``),dn=(0,f.computed)(()=>{let e=U.value?.title||`合同正文`;return`${g.value&&$t.value?`${$t.value.name} · `:``}${e} · ${cn.value.label} · 共 ${x.value.pages.length} 页`}),fn=(0,f.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[r.resolvePageDecorationPreset(x.value.pageDecorations)]),pn=(0,f.computed)(()=>{let e=r.normalizePageDecorations(x.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),mn=(0,f.computed)(()=>Object.values(pn.value).filter(Boolean).length),hn=(0,f.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${le.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``}}),gn=(0,f.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`})),_n=(0,f.computed)(()=>`${Math.round(O.value*100)}%`),vn=(0,f.computed)(()=>n.resolveFontFamilyOptions(m.fontFamilies,m.fontFamilyMode)),yn=(0,f.computed)(()=>vn.value.map(e=>({label:e.label,value:e.value}))),bn=n.DEFAULT_TEXT_ALIGN_OPTIONS,xn=[...n.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Sn=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Cn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],wn=(0,f.computed)(()=>i.normalizePageSizeOptions(m.pageSizeOptions)),Tn=(0,f.computed)(()=>wn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:i.getPageSizeKey(e)}))),En=(0,f.computed)(()=>i.getPageSizeKey(cn.value)),Dn=(0,f.computed)(()=>t.resolveSigningPlacementToolItems({showSigningPlacementTools:m.showSigningPlacementTools})),On=(0,f.computed)(()=>m.variableTypes.filter(t=>e.isContractTemplateFieldType(t?.type))),kn=(0,f.computed)(()=>On.value.map(e=>({...e,icon:pe.resolveFieldTypeIcon(e.type)}))),An=(0,f.computed)(()=>i.normalizeContractTemplateMaxPages(m.maxPages)),jn=(0,f.computed)(()=>x.value.pages.length>=An.value),Mn=(0,f.computed)(()=>{let e=i.collectTemplateValueVariableKeys(x.value);return Array.from(r.collectPageDecorationVariableKeys(x.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:W}=ue.useAutoPagination({templateValue:x,readonlyState:B,isAutoPaginating:ct,pendingPaginationPageId:lt,activePageId:w,normalizedMaxPages:An,pageRefs:D,syncPageEditors:K,commitBodyChange:br,getPageSize:Z,notifyPageLimit:kr}),{insertSigningPlacement:Nn,handleSigningPlacementDrop:Pn,insertSigningPlacementTool:Fn,handleSigningPlacementDragStart:In,updateSigningPlacement:Ln,patchSelectedSigningPlacement:Rn,duplicateSigningPlacement:zn,removeSigningPlacement:Bn}=u.useSigningPlacementEditor({templateValue:x,signingPlacements:H,selectedSigningPlacement:an,selectedSigningPlacementId:C,selectedPage:U,activePageId:w,readonly:()=>m.readonly,disabled:()=>m.disabled,showSigningPlacementTools:()=>!!m.showSigningPlacementTools,getPageSize:Z,getVisiblePosition:(e,t)=>D.get(e)?.getVisibleSigningPlacementPosition(t),commitSigningPlacements:Dr,selectSigningPlacement:Q,emitAdd:e=>h(`signing-placement-add`,e),emitChange:e=>h(`signing-placement-change`,e),emitRemove:e=>h(`signing-placement-remove`,e)}),{saveDraftCache:Vn,loadDraftCache:Hn,clearDraftCache:Un,restoreDraftCacheIfNeeded:Wn,stopDraftCacheTimer:Gn,restartDraftCacheTimer:Kn,resetDraftFingerprint:qn}=fe.useDraftCacheSession({draftCacheWritable:Qt,multipleFilesMode:g,filesValue:_,activeFileIdValue:v,templateValue:x,draftCacheKey:en,draftCacheInterval:()=>m.draftCacheInterval,draftCacheMaxBytes:()=>m.draftCacheMaxBytes,pageSize:()=>m.pageSize,pageSizeOptions:()=>m.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:K,setActiveFileId:mr,emitFilesChange:J,commit:Y,setSigningPlacementInputErrorsByFile:e=>{y.value=e},buildSigningPlacementInputErrorsByFile:Ze,updateDraftCacheStatus:hr,scheduleAutoPaginate:W,activePageId:w,selectedVariableKey:S}),Jn=(0,f.computed)(()=>{let e=Rt.value.trim().toLowerCase(),t=x.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),Yn=(0,f.computed)(()=>Math.max(Ne,cn.value.width-je)),Xn=(0,f.computed)(()=>Math.max(Pe,cn.value.height-Me)),G=(0,f.computed)(()=>Ct.value[w.value]??ir()),Zn=(0,f.computed)(()=>G.value.hasMixedBlockFormats?void 0:G.value.currentHeadingLevel??`paragraph`),Qn=(0,f.computed)(()=>G.value.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),$n=(0,f.computed)(()=>G.value.fontSize??i.DEFAULT_FIELD_STYLE.fontSize??14),er=(0,f.computed)(()=>G.value.textColor||i.DEFAULT_FIELD_STYLE.color||`#1f2937`),tr=(0,f.computed)(()=>V.value?.style?.fontFamily||i.DEFAULT_FIELD_STYLE.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),nr=(0,f.computed)(()=>{let e=n.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),t=cr($n.value),r=cr(j.value),i=new Map;return r&&!n.DEFAULT_FONT_SIZE_PRESETS.includes(r)&&i.set(r,{label:`使用 ${r}px`,value:r}),t&&!n.DEFAULT_FONT_SIZE_PRESETS.includes(t)&&i.set(t,{label:r===t?`使用 ${t}px`:`${t}px`,value:t}),[...Array.from(i.values()),...e]});(0,f.watch)(()=>m.modelValue,e=>{if(!e||g.value)return;let t=i.normalizeTemplateValue(e,m.pageSize),n=i.constrainTemplatePageSizes(t,m.pageSizeOptions),r=n.value,a=d.serializeFingerprint(r)!==d.serializeFingerprint(x.value),o=d.serializeFingerprint(r),s=o===$e;s&&($e=``),(a||!s)&&(b.value=Xe(e),y.value={...y.value,[v.value]:b.value},x.value=r,_.value=l.replaceContractTemplateFile(_.value,v.value,r),w.value=r.pages[0]?.id??``,S.value=``,C.value=``,W(w.value)),d.serializeFingerprint(r)!==d.serializeFingerprint(t)&&($e=o,h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r)),Cr(n.resizedSigningPlacementIds,r))},{deep:!0}),(0,f.watch)(()=>m.files,e=>{if(!Array.isArray(e))return;let t=l.normalizeContractTemplateFiles(e,void 0,m.pageSize),n=l.constrainContractTemplateFiles(t,m.pageSizeOptions).files,r=d.serializeFingerprint(n),i=d.serializeFingerprint(_.value),a=r===Qe;a||(y.value=Ze(n,e)),a&&(Qe=``);let o=l.resolveContractTemplateActiveFileId(n,m.activeFileId||v.value);if(r===i?o!==v.value&&mr(o,{syncCurrent:!1,shouldEmit:!1}):(_.value=n,mr(o,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0,persistCurrentErrors:!1})),r!==d.serializeFingerprint(t)){let e=l.cloneContractTemplateFiles(n);Qe=d.serializeFingerprint(e),h(`update:files`,e),h(`files-change`,l.cloneContractTemplateFiles(e))}},{deep:!0}),(0,f.watch)(()=>m.activeFileId,e=>{!g.value||!e||e===v.value||mr(e,{syncCurrent:!0,shouldEmit:!1})});function rr(e,t){let n=d.serializeFingerprint(_.value);q(!1);let r=l.normalizeContractTemplateFiles(_.value,void 0,e),{files:a,resizedSigningPlacementIds:o}=l.constrainContractTemplateFiles(r,t),s=d.serializeFingerprint(a)!==n,c=a.find(e=>e.id===v.value);c&&d.serializeFingerprint(c.template)!==d.serializeFingerprint(x.value)&&(x.value=i.cloneTemplateValue(c.template),b.value=[...y.value[v.value]??[]]),s&&(T.value=!1,E.value=[],J(a,``));let ee=o.get(v.value);return ee?.length&&c&&Cr(ee,c.template),s}(0,f.watch)([()=>m.pageSize,()=>m.pageSizeOptions],([e,t])=>{if(g.value){rr(e,t),W(w.value);return}let n=i.normalizeTemplateValue(x.value,e),r=i.constrainTemplatePageSizes(n,t);d.serializeFingerprint(r.value)!==d.serializeFingerprint(x.value)&&Y(r.value),W(w.value)},{deep:!0}),(0,f.watch)(An,()=>{W(x.value.pages[0]?.id)}),(0,f.watch)(B,e=>{e&&($(),M.value=!1,N.value=!1)}),(0,f.watch)(w,()=>{F.value=void 0}),(0,f.watch)([Zt,A,ut],()=>{Ha()}),(0,f.watch)(H,e=>{C.value&&!e.some(e=>e.id===C.value)&&(C.value=``,h(`signing-placement-select`,void 0))},{deep:!0}),(0,f.watch)(()=>[m.enableDraftCache,en.value,m.draftCacheInterval,B.value],()=>{qn(),Kn()}),(0,f.watch)(k,e=>{if(!(typeof document>`u`)){if(e){Kt=document.body.style.overflow,document.body.style.overflow=`hidden`;return}document.body.style.overflow=Kt??``,Kt=void 0}}),(0,f.onMounted)(()=>{Wn(),Kn(),W(w.value),window.addEventListener(`pointerdown`,Xa,!0),window.addEventListener(`pointerup`,qa),window.addEventListener(`keydown`,$a,!0),window.addEventListener(`keydown`,eo),window.addEventListener(`resize`,Ja),window.addEventListener(`scroll`,Za,!0)}),(0,f.onBeforeUnmount)(()=>{ur(),Jt=!0,k.value&&typeof document<`u`&&(document.body.style.overflow=Kt??``),window.removeEventListener(`pointerdown`,Xa,!0),window.removeEventListener(`pointerup`,qa),window.removeEventListener(`keydown`,$a,!0),window.removeEventListener(`keydown`,eo),window.removeEventListener(`resize`,Ja),window.removeEventListener(`scroll`,Za,!0),It!==void 0&&cancelAnimationFrame(It),Gn()});function ir(){return{isFocused:!1,canUndo:!1,canRedo:!1,isBold:!1,isItalic:!1,isUnderline:!1,isBulletList:!1,isOrderedList:!1,isTableActive:!1,textAlign:`left`,fontFamily:n.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:i.DEFAULT_FIELD_STYLE.fontSize??14,textColor:i.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function ar(e){return e===`left`||e===`center`||e===`right`}function or(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function sr(e,t=$n.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ie,Math.max(Fe,Math.round(n))):t}function cr(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ie,Math.max(Fe,Math.round(n)))}function K(e=x.value){return{...e,pages:e.pages.map(e=>{let t=D.get(e.id);return{...e,contentHtml:t?.getHTML()??e.contentHtml,contentJson:t?.getJSON()??e.contentJson}})}}function lr(){Yt=!1,Xt&&=(clearTimeout(Xt),void 0)}function ur(){let e=Yt;lr(),e&&pr()}function dr(){Yt=!0,Xt&&clearTimeout(Xt),Xt=setTimeout(()=>{Xt=void 0,!(!Yt||Jt)&&(Yt=!1,pr())},Ae)}function fr(e){let t=x.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,x.value={...x.value,pages:i}}function pr(){let e=K(),t=i.syncTemplateVariablesWithPages(e);S.value&&!t.variables.some(e=>e.key===S.value)&&(S.value=``),Y(t)}function q(e=!1){ur();let t=i.cloneTemplateValue(K());if(!g.value)return t;let n=_.value.find(e=>e.id===v.value)?.template,r=d.serializeFingerprint(n)!==d.serializeFingerprint(t),a=l.replaceContractTemplateFile(_.value,v.value,t);return _.value=a,r&&e&&J(a),t}function J(e,t=v.value){if(!g.value)return;let n=l.cloneContractTemplateFiles(e);_.value=n,Qe=d.serializeFingerprint(n),h(`update:files`,l.cloneContractTemplateFiles(n)),h(`files-change`,l.cloneContractTemplateFiles(n));let r=n.find(e=>e.id===t);r&&h(`file-change`,l.cloneContractTemplateFiles([r])[0])}function mr(e,t={}){let{syncCurrent:n,shouldEmit:r,forceRefresh:a,persistCurrentErrors:o}=de.resolveSetActiveFileIdOptions(t),s=l.resolveContractTemplateActiveFileId(_.value,e),c=s!==v.value;if(o&&g.value&&v.value&&(y.value={...y.value,[v.value]:[...b.value]}),n?q(!0):lr(),!c&&!a)return;let ee=_.value.find(e=>e.id===s);ee&&(v.value=s,x.value=i.cloneTemplateValue(ee.template),b.value=[...y.value[s]??[]],S.value=``,C.value=``,w.value=x.value.pages[0]?.id??``,Ct.value={},D.clear(),lt.value=``,T.value=!1,E.value=[],ut.value=!1,dt.value=void 0,ft.value=void 0,qn(),r&&c&&h(`update:activeFileId`,s),n&&c&&Qt.value&&Vn(),(0,f.nextTick)(()=>{W(w.value)}))}function Y(e){lr();let t=i.normalizeTemplateValue(e,m.pageSize),n=i.constrainTemplatePageSizes(t,m.pageSizeOptions),r=n.value;return x.value=r,T.value=!1,E.value=[],g.value?J(l.replaceContractTemplateFile(_.value,v.value,r)):(_.value=l.replaceContractTemplateFile(_.value,v.value,r),$e=d.serializeFingerprint(r),h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r))),Cr(n.resizedSigningPlacementIds,r),r}function hr(e,t=e.type!==`unchanged`){z.value=e,t&&h(`draft-cache-change`,{...e})}function gr(){return{...z.value}}function _r(e,t){t?D.set(e,t):D.delete(e)}function X(e,t=U.value?.id??w.value){B.value||D.get(t)?.runCommand(e)}function vr(e){X(e),$()}function yr(e){let t=P.value?.pageId;t&&(D.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function br(e){let t=Y(i.syncTemplateVariablesWithPages(e));return S.value&&!t.variables.some(e=>e.key===S.value)&&(S.value=``),t}function xr(e){fr(e),dr(),W(e.id)}function Z(e){return i.resolvePageSize(e?.pageSize,x.value.pageSize)}function Sr(e){return H.value.filter(t=>t.pageId===e)}function Cr(e,t=x.value){let n=new Set(e);n.size&&(Tr(n),(t.signingPlacements??[]).filter(e=>n.has(e.id)).forEach(e=>h(`signing-placement-change`,u.cloneSigningPlacement(e))))}function Q(e){let t=e?H.value.find(t=>t.id===e):void 0;C.value=t?.id??``,t&&(S.value=``,w.value=t.pageId),h(`signing-placement-select`,t?u.cloneSigningPlacement(t):void 0)}function wr(e){Q(e.id)}function Tr(e){let t=new Set(e);if(!t.size)return;let n=b.value.filter(e=>e.type!==`signing-placement`||!t.has(e.id));b.value=n,y.value={...y.value,[v.value]:n}}function Er(e){let t=b.value.filter(t=>t.type!==`signing-placement`||t.pageId!==e);b.value=t,y.value={...y.value,[v.value]:t}}function Dr(e,t=[]){return Tr(t),Y({...x.value,signingPlacements:e})}function Or(e){if(B.value||!U.value)return;let n=wn.value.find(t=>i.getPageSizeKey(t)===e);if(!n)return;let r=U.value.id,a=Z(U.value),o=i.resolvePageSize(n,x.value.pageSize),s=H.value.map(e=>e.pageId===r?t.scaleSigningPlacementToPage(e,a,o):e);Tr(s.filter(e=>e.pageId===r).map(e=>e.id)),Y({...x.value,pages:x.value.pages.map(e=>e.id===r?{...e,pageSize:o}:e),signingPlacements:s}),s.filter(e=>e.pageId===r).forEach(e=>h(`signing-placement-change`,u.cloneSigningPlacement(e))),W(r)}function kr(e){let t=An.value;R.value=`合同最多支持 ${t} 页`,h(`page-limit`,t,e)}function Ar(){if(B.value)return;if(jn.value){kr(`add`);return}let e=i.createDefaultPage(x.value.pages.length+1,cn.value);Y({...x.value,pages:[...x.value.pages,e]}),w.value=e.id}function jr(e){if(B.value)return;if(jn.value){kr(`duplicate`);return}let n=x.value.pages.findIndex(t=>t.id===e.id);if(n<0)return;let r=i.cloneTemplateValue({pages:[e],variables:[],pageSize:x.value.pageSize,signingPlacements:[]}).pages[0],a=i.createBlankPage(n+2,Z(e),r.contentHtml,r.contentJson);a.title=`${e.title||`第 ${n+1} 页`}副本`;let o=[...x.value.pages];o.splice(n+1,0,a);let s=Sr(e.id).map(e=>t.createSigningPlacement(e.type,a.id,Z(a),{...u.cloneSigningPlacement(e),id:void 0,pageId:a.id}));Y({...x.value,pages:o,signingPlacements:[...H.value,...s]}),w.value=a.id,s.forEach(e=>h(`signing-placement-add`,u.cloneSigningPlacement(e))),s[0]&&Q(s[0].id)}function Mr(e){if(B.value||x.value.pages.length<=1)return;let t=x.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=Sr(e.id);Er(e.id);let r=x.value.pages.filter(t=>t.id!==e.id),i=br({...x.value,pages:r,signingPlacements:H.value.filter(t=>t.pageId!==e.id)});w.value=i.pages[Math.min(t,i.pages.length-1)]?.id??``,n.some(e=>e.id===C.value)&&Q(),n.forEach(e=>h(`signing-placement-remove`,u.cloneSigningPlacement(e)))}function Nr(e){if(B.value||x.value.pages.length<=1)return;let t=Sr(e.id).length;if(!t){Mr(e);return}be.Modal.confirm({title:`删除合同页面`,content:`此页包含 ${t} 个签署位置,删除页面会同时移除这些位置,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{Mr(e)}})}function Pr(e){let t=new Set(x.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function Fr(e){let t=e.type??`text`;return i.createTemplateVariable({...e,type:t,key:e.key||Pr(t),label:e.label||i.getFieldOption(t,m.variableTypes).label},m.variableTypes,m.defaultVariableStyle)}function Ir(e,t=U.value?.id??x.value.pages[0].id,n){if(B.value)return e;let r=D.get(t)?.insertVariable(e,n),i=!x.value.variables.some(t=>t.key===e.key);return Y({...x.value,pages:r?x.value.pages.map(e=>e.id===r.id?r:e):x.value.pages,variables:i?[...x.value.variables,e]:x.value.variables}),S.value=e.key,Q(),w.value=t,i&&h(`variable-add`,e),W(t),e}function Lr(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 Rr(e={}){let t=s.normalizeContractImageDimension(Dt.value),n=s.normalizeContractImageDimension(Ot.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function zr(){Et.value=``,Dt.value=void 0,Ot.value=void 0,kt.value=``}function Br(e,t=U.value?.id??x.value.pages[0]?.id,n){let r=Lr({...e,src:e.src.trim()});if(!(B.value||!t||!a.isSafeContractImageUrl(r.src)||!r.src||!D.get(t)?.insertContentImage(r,n)))return w.value=t,S.value=``,Q(),r.src}function Vr(e){return e instanceof Error?e:Error(`图片处理失败`)}async function Hr(e,t){t===`toolbar`&&(At.value=!0,kt.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:m.imageCompression,upload:m.imageUpload});return Jt?void 0:n.src}catch(e){let n=Vr(e);t===`toolbar`&&(kt.value=n.message),R.value=n.message,h(`image-error`,n,t);return}finally{t===`toolbar`&&(At.value=!1)}}async function Ur(e){return await Hr(e,`paste`)??null}async function Wr(e,t={}){if(B.value)return;let n=U.value?.id??x.value.pages[0]?.id,r=n?D.get(n)?.getSelectionRange():void 0,i=typeof e==`string`?e.trim():await Hr(e,`toolbar`);if(Jt)return;if(!i||!a.isSafeContractImageUrl(i)){typeof e==`string`&&(kt.value=`请输入安全的图片 URL`);return}if(n&&!D.has(n))return;let o=Br({...t,src:i},n,r);return o&&(Tt.value=!1,zr(),R.value=`已插入图片`),o}function Gr(){B.value||At.value||($(),kt.value=``,Ye.value&&(Ye.value.value=``),Ye.value?.click())}async function Kr(e){let t=e.target.files?.[0];t&&await Wr(t,Rr({alt:t.name}))}async function qr(){let e=Et.value;await Wr(e,Rr())}function Jr(e){mi(e),wt.value=!1}function Yr(){$(),Ar()}function Xr(e,t,n,r){$(),Ir(Fr({type:t}),e,{left:n,top:r})}function Zr(e){$(),S.value=e,Q()}function Qr(e){let t=x.value.variables.find(t=>t.id===e.id);if(!t)return;let n=e.key.trim();if(n!==t.key){let t=i.validateContractTemplateVariableKey(n,x.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:n};let a=[...x.value.pages],o=t.key,s=``;D.forEach((t,n)=>{let r=t.updateVariable(e,o);if(r){s||=n;let e=a.findIndex(e=>e.id===n);e>=0&&(a[e]=r)}}),Y({...x.value,pages:a,variables:x.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&x.value.pageDecorations?{pageDecorations:r.rewritePageDecorationVariableTokens(x.value.pageDecorations,o,e.key)}:{}}),S.value=e.key,W(s||w.value)}function $r(e){V.value&&Qr({...V.value,...e,style:{...V.value.style,...e.style}})}function ei(e){B.value||!V.value||$r({key:e})}function ti(e){B.value||(Y({...x.value,pageDecorations:r.normalizePageDecorations(e)}),W(x.value.pages[0]?.id))}function ni(e){(e===`left`||e===`center`||e===`right`)&&$r({style:{textAlign:e}})}function ri(e){(e===`solid`||e===`dashed`)&&$r({style:{borderStyle:e}})}function ii(e){(e===`contain`||e===`cover`||e===`fill`)&&$r({style:{objectFit:e}})}function ai(e){$r({style:e})}function oi(e){ai({fontFamily:String(e||``).trim()||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`})}function si(e){ai({fontSize:sr(e,V.value?.style?.fontSize??14)})}function ci(e){V.value&&$r({multiline:e,rows:V.value.rows||3,lineHeight:V.value.lineHeight||28,style:e?{underline:!0}:void 0})}function li(e){V.value&&$r({rows:Number(e||3),lineHeight:V.value.lineHeight||28})}function ui(e){if(B.value)return;let t=[...x.value.pages];D.forEach((n,r)=>{let i=n.removeVariable(e.key);if(i){let e=t.findIndex(e=>e.id===r);e>=0&&(t[e]=i)}}),Y({...x.value,pages:t,variables:x.value.variables.filter(t=>t.id!==e.id),...x.value.pageDecorations?{pageDecorations:r.rewritePageDecorationVariableTokens(x.value.pageDecorations,e.key)}:{}}),S.value=``,C.value=``}function di(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(x.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 fi(e){B.value||Ir(i.createTemplateVariable({...e,id:void 0,key:di(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},m.variableTypes,m.defaultVariableStyle))}function pi(e){return B.value?void 0:Ir(x.value.variables.find(t=>t.key===e.key)??i.createTemplateVariable(e,m.variableTypes,m.defaultVariableStyle))}function mi(e){if(!B.value)return Ir(Fr({type:e}))}function hi(t){if(B.value||!e.isContractTemplateFieldType(t))return;let n=P.value,r=On.value.find(e=>e.type===t);if(!n||!r)return;let i=c.inferContextVariableLabel(n.leadingText)||r.label,a=c.resolveContextVariableWidth(n.selectionWidth,Ne,Yn.value),o=gi();Ir(Fr({type:t,label:i,...a?{width:a}:{},...o?{style:o}:{}}),n.pageId),R.value=n.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function gi(){let e=G.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 _i(e){if(B.value)return;let t=P.value;t&&(Ir(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function vi(t){let n=t.type&&e.isContractTemplateFieldType(t.type)?t.type:`text`;return i.getFieldOption(n,On.value).label}function yi(){x.value.variables.length&&(Lt.value=!0,(0,f.nextTick)(()=>{Ma(),jt.value?.focusBindSearch()}))}function bi(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function xi(e){return O.value=Math.round(Math.min(Oe,Math.max(De,Number.isFinite(e)?e:1))*100)/100,O.value}let{width:Si}=(0,xe.useElementSize)(He),Ci=(0,f.computed)(()=>Math.max(...x.value.pages.map(e=>Z(e).width),i.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:wi,applyAutoFit:Ti,markUserAdjusted:Ei,userAdjusted:Di}=o.useFitWidthZoom({viewportWidth:Si,widestPageWidth:Ci,padding:48,minZoom:De,maxZoom:Oe,getZoom:()=>O.value,applyZoom:xi});function Oi(e){return Ei(),xi(e)}function ki(){return Ti()}function Ai(){return O.value}function ji(){Oi(O.value+ke)}function Mi(){Oi(O.value-ke)}function Ni(){$(),M.value=!1,N.value=!1,St.value=!1,k.value=!k.value}(0,f.watch)(Si,e=>{yt.value&&!Di.value&&e>0&&wi()});function Pi(e){vt.value?Je.value?.focus():e()}function Fi(){$(),za(),A.value=!1,qt={fullscreen:k.value,sidebar:gt.value,inspector:_t.value,chrome:vt.value,zoom:O.value,userAdjusted:Di.value},k.value=!0,gt.value=!0,_t.value=!0,vt.value=!0,yt.value=!0,(0,f.nextTick)(()=>{B.value?bt.value?.focus():D.get(w.value)?.focus()})}function Ii(){let e=qt;yt.value=!1,qt=void 0,e&&(k.value=e.fullscreen,gt.value=e.sidebar,_t.value=e.inspector,vt.value=e.chrome,e.userAdjusted?Oi(e.zoom):Ti(),(0,f.nextTick)(()=>Pi(()=>We.value?.focusImmersive())))}function Li(){yt.value?Ii():Fi()}function Ri(){$(),F.value=void 0;let e=q(!1);g.value?(ft.value=l.cloneContractTemplateFiles(_.value),dt.value=void 0,pt.value=v.value||_.value[0]?.id||``):(dt.value=i.cloneTemplateValue(e),ft.value=void 0,pt.value=``),ut.value=!0}function zi(){ut.value=!1,dt.value=void 0,ft.value=void 0,pt.value=``}function Bi(){return fa()}function Vi(){$();let e=Bi();return ht.value=JSON.stringify(e,null,2),mt.value=!0,e}function Hi(){mt.value=!1}function Ui(){$(),F.value=void 0,M.value=!1,N.value=!1;let e=H.value.map(u.cloneSigningPlacement);b.value=[],y.value={...y.value,[v.value]:[]};let t=!!C.value;S.value=``,C.value=``,w.value=``,ut.value=!1,dt.value=void 0,ft.value=void 0,mt.value=!1,ht.value=``,Ct.value={},lt.value=``;let n=Y(i.createBlankTemplate(i.DEFAULT_PAGE_SIZE));return t&&h(`signing-placement-select`,void 0),e.forEach(e=>h(`signing-placement-remove`,e)),w.value=n.pages[0]?.id??``,i.cloneTemplateValue(n)}function Wi(){B.value||($(),be.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面、模板变量和签署位置,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{Ui()}}))}function Gi(e){let t=K().pages,n=t.find(e=>e.id===w.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 Ki(e){$(),S.value=e.key,Q();let t=Gi(e);t&&(w.value=t.id,(0,f.nextTick)(()=>{D.get(t.id)?.scrollIntoVariable(e.key)}))}function qi(e){let t=x.value.variables.find(t=>t.key===e||t.id===e);t&&Ki(t)}function Ji(e){let t=H.value.find(t=>t.id===e);t&&($(),S.value=``,w.value=t.pageId,Q(t.id),(0,f.nextTick)(()=>{D.get(t.pageId)?.scrollIntoSigningPlacement(t.id)}))}function Yi(e,t=!0){$(),w.value=e,t&&(0,f.nextTick)(()=>{D.get(e)?.scrollIntoPage()})}function Xi(e){x.value.pages.some(t=>t.id===e)&&Yi(e)}function Zi(){if(A.value){Qi();return}A.value=!0}function Qi(){A.value=!1,(0,f.nextTick)(()=>Pi(()=>We.value?.focusPageDecorations()))}function $i(){return ur(),i.cloneTemplateValue(K())}function ea(e){b.value=Xe(e),y.value={...y.value,[v.value]:b.value};let t=Y(i.normalizeTemplateValue(e,m.pageSize));t.signingPlacements?.some(e=>e.id===C.value)||Q(),W(t.pages[0]?.id)}function ta(){let e=q(!1);return g.value?l.cloneContractTemplateFiles(_.value):l.cloneContractTemplateFiles(l.replaceContractTemplateFile(_.value,v.value,e))}function na(e,t){let n=l.normalizeContractTemplateFiles(e,void 0,m.pageSize),r=l.constrainContractTemplateFiles(n,m.pageSizeOptions),i=_.value;et.value=!0,q(!1),_.value=r.files,y.value=Ze(r.files,e),mr(l.resolveContractTemplateActiveFileId(_.value,t??v.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),d.serializeFingerprint(i)!==d.serializeFingerprint(_.value)&&J(_.value,``)}function ra(e){if(B.value)return;et.value=!0,q(!0);let t=l.createContractTemplateFile(e||`合同文件 ${_.value.length+1}`,m.pageSize);return _.value=[..._.value,t],y.value={...y.value,[t.id]:[]},J(_.value,``),h(`file-add`,l.cloneContractTemplateFiles([t])[0]),mr(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.cloneContractTemplateFiles([t])[0]}function ia(e){!g.value&&!_.value.some(t=>t.id===e)||(et.value=!0,mr(e))}function aa(e,t){if(B.value)return;et.value=!0,q(!1);let n=l.renameContractTemplateFile(_.value,e,t),r=n.find(t=>t.id===e);if(r)return _.value=n,J(n,e),l.cloneContractTemplateFiles([r])[0]}function oa(e){if(B.value||_.value.length<=1)return;et.value=!0,q(!1);let t=_.value.find(t=>t.id===e);if(!t)return;let n=l.removeContractTemplateFile(_.value,e);if(n.length===_.value.length)return;_.value=n;let{[e]:r,...i}=y.value;y.value=i,J(n,``),h(`file-remove`,l.cloneContractTemplateFiles([t])[0]);let a=t.template.signingPlacements??[];return a.forEach(e=>h(`signing-placement-remove`,u.cloneSigningPlacement(e))),a.some(e=>e.id===C.value)&&h(`signing-placement-select`,void 0),v.value===e&&mr(l.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),l.cloneContractTemplateFiles([t])[0]}function sa(e){if(B.value||_.value.length<=1)return;let t=_.value.find(t=>t.id===e);if(!t)return;let n=t.template.signingPlacements?.length??0;be.Modal.confirm({title:`删除合同文件`,content:n?`“${t.name}”包含 ${n} 个签署位置,删除后文件内正文、变量和签署位置都会移除,是否继续?`:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{oa(e)}})}function ca(e,t){if(B.value)return;et.value=!0,q(!1);let n=_.value.findIndex(t=>t.id===e),r=l.moveContractTemplateFile(_.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return _.value=r,J(r,``),h(`file-move`,l.cloneContractTemplateFiles([a])[0],n,i),l.cloneContractTemplateFiles([a])[0]}function la(){q(!1);let e=_a(g.value?_.value.flatMap(e=>{let t=i.validateTemplateValue(e.template,{maxPages:An.value});return[...y.value[e.id]??[],...t].map(t=>({...t,fileId:e.id}))}):[...b.value,...i.validateTemplateValue(K(),{maxPages:An.value})]);return E.value=e,T.value=!0,h(`validate`,e),e}function ua(e){if(e.fileId&&e.fileId!==v.value){ia(e.fileId),(0,f.nextTick)(()=>ua({...e,fileId:void 0}));return}let t=r.resolvePageDecorationValidationPath(e);if(t){A.value=!0,(0,f.nextTick)(()=>Ge.value?.focusField(t));return}if(e.type===`signing-placement`){let t=H.value.find(t=>t.id===e.id);if(t){Yi(t.pageId),Q(t.id);return}}if(e.variableKey){qi(e.variableKey);return}if(e.pageId){Xi(e.pageId);return}let n=x.value.variables.find(t=>t.id===e.id||t.key===e.id);if(n){Ki(n);return}x.value.pages.some(t=>t.id===e.id)&&Yi(e.id)}function da(e){return r.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`signing-placement`?`签署位置`:e.type===`variable`?`变量`:`字段`}function fa(){return ur(),i.exportTemplateValue(K())}function pa(){let e=q(!1),t=g.value?_.value:l.replaceContractTemplateFile(_.value,v.value,e);return l.exportContractTemplateFiles(t)}function ma(e){let n=K();try{let r=i.collectTemplateLocationRuleExportErrors(n,b.value);if(r.length)throw new t.ContractTemplateLocationRuleBuildError(r);return e(n)}catch(e){throw e instanceof t.ContractTemplateLocationRuleBuildError&&(E.value=[...e.errors],T.value=!0,h(`validate`,[...e.errors])),e}}function ha(e){return ma(n=>t.buildSigningPlacementLocationRules(n,e))}function ga(e){return ma(n=>t.buildContractLocationRules(n,e))}function _a(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 va(e){E.value=[...e],T.value=!0}function ya(){E.value=[],T.value=!1}function ba(){D.get(U.value?.id??w.value)?.focus()}function xa(e){ar(e)&&X({type:`set-text-align`,value:e})}function Sa(e){(e===`paragraph`||or(e))&&X({type:`apply-block-style`,format:e})}function Ca(e){let t=cr(e);t&&(X({type:`set-font-size`,value:t}),j.value=``)}function wa(e){let t=String(e||``).trim();if(!t){X({type:`unset-font-family`});return}X({type:`set-font-family`,value:t})}function Ta(e){Ea(e.target?.value??``)}function Ea(e){let t=e.trim();t&&X({type:`set-color`,value:t})}function Da(e){j.value=e}function Oa(){j.value.trim()&&Ca(j.value)}function ka(e){e.key===`Enter`&&(e.preventDefault(),Oa())}function Aa(e){e||(Oa(),j.value=``)}function ja(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Lt.value=!1,Rt.value=``;let t=ye.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,f.nextTick)(()=>{Ma(),jt.value?.focusFirstButton()})}function Ma(){let e=jt.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=ye.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function Na(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=ye.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,f.nextTick)(()=>{let e=zt.value?.getMenuElement(),t=I.value;if(e&&t){let n=ye.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}zt.value?.focusFirstItem()})}function Pa(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,I.value=void 0,Vt.value=e.image.width,Ht.value=e.image.height,S.value=``,C.value&&Q();let t=ye.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,f.nextTick)(()=>{Fa(),Bt.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function Fa(){let e=Bt.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=ye.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function Ia(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(Vt.value),height:s.normalizeContractImageDimension(Ht.value)})&&(R.value=`已更新图片尺寸`),$())}function La(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function Ra(e){e.type===`table`?Na(e):e.type===`image`?Pa(e):ja(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Lt.value=!1,Rt.value=``}function za(){M.value=!1,N.value=!1,St.value=!1,wt.value=!1,Tt.value=!1}function Ba(){za(),vt.value=!vt.value,(0,f.nextTick)(()=>Pi(()=>We.value?.focusChromeToggle()))}let Va=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function Ha(){let e=B.value||Ft.value||Nt.value||Zt.value||A.value||ut.value,t=w.value,n=e?void 0:D.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-Le,i=r>=12?r:n.bottom+Le,a=(n.left+n.right)/2-380/2,o=ye.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,f.nextTick)(()=>Ua(n))}function Ua(e){let t=Mt.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-Le,a=i>=12?i:e.bottom+Le,o=(e.left+e.right)/2-r.width/2,s=ye.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function Wa(){let e=F.value?.pageId??w.value,t=D.get(e)?.getSelectionRange();Pt=t?{pageId:e,...t}:void 0,Nt.value=!0,F.value=void 0}function Ga(e){if(!Nt.value)return;let t=Pt,n=D.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(Nt.value=!1,Pt=void 0)}function Ka(){!F.value||It!==void 0||(It=requestAnimationFrame(()=>{It=void 0,Ha()}))}function qa(){Ft.value&&(Ft.value=!1,Ha())}function Ja(){$(),Ka()}function Ya(e,t){D.get(F.value?.pageId??w.value)?.requestTextContextMenu(e,t)}function Xa(e){let t=e.target instanceof HTMLElement?e.target:null;t?.closest(`.ProseMirror`)&&(Ft.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(Va)||($(),F.value&&Wa()))}function Za(e){(e.target instanceof Element?e.target:null)?.closest(Va)||($(),Ka())}function Qa(e){let t=Ve.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 $a(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Ve.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(Gt)||r?.closest(Gt)),a=!!(n&&t.contains(n)||r&&t.contains(r)),o=!!t.querySelector(`.ant-select-open, .ant-dropdown-open`);if(i||a&&o){Wt.add(e);return}!Zt.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),Qi())}function eo(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!Qt.value||!Qa(e))return;e.preventDefault(),Vn();return}if(e.key===`Escape`){if(Wt.has(e)){Wt.delete(e);return}let t=Zt.value,n=t||A.value;if(!t&&A.value&&Qi(),$(),za(),n&&e.stopPropagation(),!n){if(F.value){Wa(),e.stopPropagation();return}yt.value?Ii():k.value=!1}}}function to(e,t){e===w.value&&t.selectedContentImage&&(S.value=``,C.value&&Q()),e===w.value&&(Ga(e),Ha());let n=Ct.value[e];n&&ve.isSameEditorState(n,t)||(Ct.value={...Ct.value,[e]:t})}function no(e=Ut.value.rows,t=Ut.value.cols){X({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:!!Ut.value.withHeaderRow}}),M.value=!1,$()}let ro={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function io(e){let t=I.value;if(!t)return;let n=()=>{X(e,t.pageId),$()},r=ro[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),be.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>D.get(t.pageId)?.focus()})}function ao(e){let t=zt.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),D.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 oo(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),D.get(t??``)?.focus()}function so(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),D.get(t??``)?.focus()}function co(e){X({type:e}),N.value=!1,$()}return Re({getValue:$i,setValue:ea,getFiles:ta,setFiles:na,addFile:ra,selectFile:ia,renameFile:aa,removeFile:oa,moveFile:ca,validate:la,exportTemplate:fa,exportFiles:pa,getSubmitData:Bi,clearTemplate:Ui,saveDraftCache:Vn,loadDraftCache:Hn,clearDraftCache:Un,getDraftCacheStatus:gr,insertVariable:pi,insertImage:Wr,focus:ba,openPreview:Ri,closePreview:zi,openSubmitDataViewer:Vi,closeSubmitDataViewer:Hi,setServerValidationErrors:va,clearValidationErrors:ya,scrollToVariable:qi,scrollToSigningPlacement:Ji,scrollToPage:Xi,setZoom:Oi,resetZoom:ki,getZoom:Ai,fitWidth:wi,insertSigningPlacement:Nn,selectSigningPlacement:Q,buildLocationRules:ha,buildContractLocationRules:ga}),(e,n)=>((0,f.openBlock)(),(0,f.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Ve,class:(0,f.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":p.disabled,"is-readonly":B.value,"is-fullscreen":k.value,"is-immersive":yt.value}]),style:(0,f.normalizeStyle)(Be.value)},[g.value?((0,f.openBlock)(),(0,f.createBlock)(me.default,{key:0,files:_.value,"active-file-id":v.value,readonly:B.value,onSelect:ia,onAdd:n[0]||=e=>ra(),onRename:aa,onRemove:sa,onMove:ca},null,8,[`files`,`active-file-id`,`readonly`])):(0,f.createCommentVNode)(``,!0),(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":gt.value,"is-inspector-collapsed":_t.value}])},[(0,f.createVNode)(he.default,{collapsed:gt.value,pages:x.value.pages,variables:x.value.variables,"decoration-variable-keys":Mn.value,"signing-placement-navigation-items":on.value,"active-page-id":w.value,"selected-variable-key":S.value,"selected-signing-placement-id":C.value,"normalized-max-pages":An.value,"page-limit-reached":jn.value,"selected-page":U.value,"selected-page-size":cn.value,"normalized-page-size-options":wn.value,"page-size-options":Tn.value,"selected-page-size-option-value":En.value,"show-signing-placement-tools":m.showSigningPlacementTools,readonly:B.value,"get-page-size":Z,"get-page-signing-placements":Sr,onToggle:n[1]||=e=>gt.value=!gt.value,onAddPage:Ar,onActivatePage:Yi,onDuplicatePage:jr,onRemovePage:Nr,onPatchPageFormat:Or,onScrollToVariable:Ki,onScrollToSigningPlacement:Ji},null,8,[`collapsed`,`pages`,`variables`,`decoration-variable-keys`,`signing-placement-navigation-items`,`active-page-id`,`selected-variable-key`,`selected-signing-placement-id`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`show-signing-placement-tools`,`readonly`]),(0,f.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:Ue,class:`gd-contract-template-designer__workspace`},[(0,f.withDirectives)((0,f.createElementVNode)(`div`,{id:qe,class:`gd-contract-template-designer__workspace-chrome`},[(0,f.createVNode)(ne.default,{ref_key:`workspaceHeaderElement`,ref:We,summary:dn.value,"draft-cache-status-text":hn.value,"draft-cache-status-class":gn.value,"show-draft-cache-status":p.showDraftCacheStatus,"show-clear-button":p.showClearButton,"show-submit-data-viewer":p.showSubmitDataViewer,readonly:B.value,"zoom-percent":_n.value,"zoom-out-disabled":O.value<=De,"zoom-in-disabled":O.value>=Oe,"is-fullscreen":k.value,immersive:yt.value,"page-decorations-open":A.value,"page-decorations-studio-id":Ke,"page-decorations-preset-label":fn.value,"page-decorations-enabled-count":mn.value,"page-decorations-enabled-states":pn.value,"chrome-controls-id":qe,onZoomOut:Mi,onZoomIn:ji,onFitWidth:(0,f.unref)(wi),onResetZoom:ki,onToggleFullscreen:Ni,onToggleImmersive:Li,onClear:Wi,onValidate:la,onPreview:Ri,onSubmitData:Vi,onTogglePageDecorations:Zi,onToggleChrome:Ba},null,8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-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,f.createVNode)(re.default,{"variable-insert-popover-open":wt.value,"onUpdate:variableInsertPopoverOpen":n[2]||=e=>wt.value=e,"image-insert-popover-open":Tt.value,"onUpdate:imageInsertPopoverOpen":n[3]||=e=>Tt.value=e,"image-insert-url":Et.value,"onUpdate:imageInsertUrl":n[4]||=e=>Et.value=e,"image-insert-width":Dt.value,"onUpdate:imageInsertWidth":n[5]||=e=>Dt.value=e,"image-insert-height":Ot.value,"onUpdate:imageInsertHeight":n[6]||=e=>Ot.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":n[7]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":n[8]||=e=>N.value=e,"table-insert-draft":Ut.value,"onUpdate:tableInsertDraft":n[9]||=e=>Ut.value=e,"toolbar-more-open":St.value,"onUpdate:toolbarMoreOpen":n[10]||=e=>St.value=e,readonly:B.value,"editor-state":G.value,"current-block-format":Zn.value,"block-format-options":xn,"font-family-select-options":yn.value,"current-editor-font-family":Qn.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"current-editor-text-color":er.value,"body-control-tool-items":kn.value,"page-limit-reached":jn.value,"normalized-max-pages":An.value,"image-processing":At.value,"image-insert-error":kt.value,onCommand:n[11]||=e=>X(e),onPatchBlockFormat:Sa,onPatchFontFamily:wa,onPatchFontSize:Ca,onPatchColor:Ta,onPatchTextAlign:xa,onInsertVariable:Jr,onOpenImageFile:Gr,onInsertImageUrl:qr,onAddPage:Ar,onInsertTable:no,onTableAction:co,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka},null,8,[`variable-insert-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`,`page-limit-reached`,`normalized-max-pages`,`image-processing`,`image-insert-error`])],512),[[f.vShow,!vt.value]]),vt.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(be.Tooltip),{key:0,title:`展开工具区`},{default:(0,f.withCtx)(()=>[(0,f.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:Je,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":qe,onClick:Ba},[(0,f.createVNode)((0,f.unref)(Se.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,f.createCommentVNode)(``,!0),yt.value&&!A.value?((0,f.openBlock)(),(0,f.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:bt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:Ii},[(0,f.createVNode)((0,f.unref)(Se.CompressOutlined),{"aria-hidden":`true`}),n[25]||=(0,f.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),n[26]||=(0,f.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,f.createCommentVNode)(``,!0),T.value?((0,f.openBlock)(),(0,f.createElementBlock)(`section`,Ce,[(0,f.createVNode)((0,f.unref)(be.Alert),{type:ln.value?`success`:`error`,message:un.value,"show-icon":``},null,8,[`type`,`message`]),E.value.length?((0,f.openBlock)(),(0,f.createElementBlock)(`div`,we,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(E.value,e=>((0,f.openBlock)(),(0,f.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>ua(e)},[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(e.message),1),(0,f.createElementVNode)(`small`,null,(0,f.toDisplayString)(da(e)),1)],8,Te))),128))])):(0,f.createCommentVNode)(``,!0)])):(0,f.createCommentVNode)(``,!0),(0,f.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:He,class:`gd-contract-template-designer__canvas`},[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(x.value.pages,(e,t)=>((0,f.openBlock)(),(0,f.createBlock)(ee.default,{key:`${v.value}:${e.id}`,ref_for:!0,ref:t=>_r(e.id,t),page:e,"page-index":t,"page-size":Z(e),"page-decorations":x.value.pageDecorations,"total-pages":x.value.pages.length,variables:x.value.variables,"selected-variable-key":S.value,"signing-placements":m.showSigningPlacementTools?Sr(e.id):[],"selected-signing-placement-id":C.value,active:w.value===e.id,readonly:p.readonly,disabled:p.disabled,zoom:O.value,"process-image-file":Ur,onPageUpdate:xr,onVariableDrop:Xr,onVariableSelect:Zr,onSigningPlacementDrop:(0,f.unref)(Pn),onSigningPlacementSelect:wr,onSigningPlacementMove:(0,f.unref)(Ln),onSigningPlacementRemove:(0,f.unref)(Bn),onEditorFocus:n[12]||=e=>Yi(e,!1),onEditorStateChange:to,onEditorContextMenu:Ra,onVariableMoveBlocked:n[13]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`signing-placements`,`selected-signing-placement-id`,`active`,`readonly`,`disabled`,`zoom`,`onSigningPlacementDrop`,`onSigningPlacementMove`,`onSigningPlacementRemove`]))),128))],512),(0,f.withDirectives)((0,f.createVNode)(_e.default,{ref_key:`pageDecorationsStudioElement`,ref:Ge,id:Ke,open:A.value,decorations:x.value.pageDecorations,variables:x.value.variables,"font-family-options":yn.value,readonly:p.readonly,disabled:p.disabled,"active-tab":xt.value,"onUpdate:activeTab":n[14]||=e=>xt.value=e,onChange:ti,onClose:Qi},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[f.vShow,A.value]])],512),(0,f.createVNode)(ge.default,{collapsed:_t.value,readonly:p.readonly,disabled:p.disabled,"show-signing-placement-tools":m.showSigningPlacementTools,"body-control-tool-items":kn.value,"signing-placement-tools":Dn.value,"signing-placements":H.value,"selected-signing-placement":an.value,"selected-signing-placement-page-size":sn.value,"selected-variable":V.value,variables:x.value.variables,"current-variable-font-family":tr.value,"font-family-select-options":yn.value,"text-align-options":(0,f.unref)(bn),"border-style-options":Sn,"object-fit-options":Cn,"selected-variable-width-max":Yn.value,"selected-variable-height-max":Xn.value,"min-font-size":Fe,"max-font-size":Ie,"default-multiline-rows":(0,f.unref)(3),"resolve-signing-placement-type-icon":(0,f.unref)(pe.resolveSigningPlacementTypeIcon),"signing-placement-type-labels":(0,f.unref)(t.SIGNING_PLACEMENT_TYPE_LABELS),onToggle:n[15]||=e=>_t.value=!_t.value,onVariableDragStart:bi,onInsertVariable:mi,onSigningPlacementDragStart:(0,f.unref)(In),onInsertSigningPlacement:(0,f.unref)(Fn),onPatchSigningPlacement:(0,f.unref)(Rn),onDuplicateSigningPlacement:n[16]||=e=>(0,f.unref)(zn)(),onRemoveSigningPlacement:n[17]||=e=>(0,f.unref)(Bn)(),onDuplicateVariable:fi,onRemoveVariable:ui,onPatchVariable:$r,onRenameVariable:ei,onPatchStyle:ai,onPatchMultiline:ci,onPatchRows:li,onPatchFontFamily:oi,onPatchFontSize:si,onPatchTextAlign:ni,onPatchBorderStyle:ri,onPatchObjectFit:ii},null,8,[`collapsed`,`readonly`,`disabled`,`show-signing-placement-tools`,`body-control-tool-items`,`signing-placement-tools`,`signing-placements`,`selected-signing-placement`,`selected-signing-placement-page-size`,`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`,`resolve-signing-placement-type-icon`,`signing-placement-type-labels`,`onSigningPlacementDragStart`,`onInsertSigningPlacement`,`onPatchSigningPlacement`])],2),((0,f.openBlock)(),(0,f.createBlock)(f.Teleport,{to:`body`},[I.value?((0,f.openBlock)(),(0,f.createBlock)(te.default,{key:0,ref_key:`tableContextMenuElement`,ref:zt,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,f.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:io,onKeydown:ao},null,8,[`capabilities`,`active-alignment`,`style`])):(0,f.createCommentVNode)(``,!0),L.value?((0,f.openBlock)(),(0,f.createBlock)(oe.default,{key:1,ref_key:`imageContextMenuElement`,ref:Bt,width:Vt.value,"onUpdate:width":n[18]||=e=>Vt.value=e,height:Ht.value,"onUpdate:height":n[19]||=e=>Ht.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:La,onApply:Ia,onKeydown:so},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,f.createCommentVNode)(``,!0),P.value?((0,f.openBlock)(),(0,f.createBlock)(ie.default,{key:2,ref_key:`textContextMenuElement`,ref:jt,"bind-open":Lt.value,"onUpdate:bindOpen":n[20]||=e=>Lt.value=e,"bind-keyword":Rt.value,"onUpdate:bindKeyword":n[21]||=e=>Rt.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":G.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"text-align-options":(0,f.unref)(bn),"current-editor-text-color":er.value,"body-control-tool-items":kn.value,"text-menu-bindable-variables":Jn.value,"page-limit-reached":jn.value,"table-insert-draft":Ut.value,"variables-count":x.value.variables.length,"resolve-bind-variable-type-label":vi,onCommand:vr,onClipboard:yr,onOpenImage:Gr,onAddPage:Yr,onInsertVariable:hi,onBindVariable:_i,onOpenBindPanel:yi,onKeydown:oo,onPatchFontSize:Ca,onPatchTextAlign:xa,onPatchColor:Ea,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`text-align-options`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`page-limit-reached`,`table-insert-draft`,`variables-count`])):(0,f.createCommentVNode)(``,!0),F.value?((0,f.openBlock)(),(0,f.createBlock)(ae.default,{key:3,ref_key:`textBubbleElement`,ref:Mt,x:F.value.x,y:F.value.y,"editor-state":G.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"current-editor-text-color":er.value,"text-align-options":(0,f.unref)(bn),onCommand:X,onPatchFontSize:Ca,onPatchTextAlign:xa,onPatchColor:Ea,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka,onMore:Ya},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,f.createCommentVNode)(``,!0)])),(0,f.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:Ye,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:Kr},null,544),(0,f.createElementVNode)(`span`,Ee,(0,f.toDisplayString)(R.value),1),(0,f.createVNode)(se.default,{open:ut.value,"onUpdate:open":n[22]||=e=>ut.value=e,"preview-pages":tn.value,"preview-file-groups":nn.value,"preview-active-group":rn.value,"preview-snapshot":dt.value,onCancel:zi,onSelectFile:n[23]||=e=>pt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`]),(0,f.createVNode)(ce.default,{open:mt.value,"onUpdate:open":n[24]||=e=>mt.value=e,json:ht.value,onCancel:Hi},null,8,[`open`,`json`])],6))}});exports.default=p;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./utils/signing-placement.cjs`),i=require(`./composables/use-template-designer.cjs`),a=require(`./utils/image-url.cjs`),o=require(`./composables/use-fit-width-zoom.cjs`),s=require(`./utils/content-image.cjs`),c=require(`./utils/context-variable.cjs`),ee=require(`./DesignerPage.cjs`),te=require(`./TableContextMenu.cjs`),ne=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),re=require(`./ContractTemplateDesignerToolbar.cjs`),ie=require(`./ContractTemplateTextContextMenu.cjs`),ae=require(`./ContractTemplateTextBubbleMenu.cjs`),oe=require(`./ContractTemplateImageContextMenu.cjs`),se=require(`./ContractTemplatePreviewModal.cjs`),ce=require(`./ContractTemplateSubmitDataModal.cjs`),le=require(`./composables/use-template-draft-cache.cjs`),ue=require(`./composables/use-auto-pagination.cjs`),de=require(`./composables/use-designer-files.cjs`),l=require(`./composables/use-template-files.cjs`),fe=require(`./composables/use-draft-cache-session.cjs`),u=require(`./composables/use-signing-placement-editor.cjs`),pe=require(`./utils/template-tool-icons.cjs`),me=require(`./ContractTemplateFileBar.cjs`),he=require(`./ContractTemplateDesignerSidebar.cjs`),ge=require(`./ContractTemplateDesignerInspector.cjs`),_e=require(`./ContractTemplatePageDecorationsStudio.cjs`),d=require(`./utils/serialize-fingerprint.cjs`),ve=require(`./utils/editor-state.cjs`),ye=require(`./utils/context-menu-viewport.cjs`);let f=require(`vue`),be=require(`ant-design-vue`),xe=require(`@vueuse/core`),Se=require(`@ant-design/icons-vue`);var Ce={key:2,class:`gd-contract-template-designer__validation`},we={key:0,class:`gd-contract-template-designer__validation-list`},Te=[`onClick`],Ee={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},De=.5,Oe=1.5,ke=.1,Ae=120,je=128,Me=108,Ne=48,Pe=24,Fe=10,Ie=48,Le=8,p=(0,f.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:()=>i.DEFAULT_PAGE_SIZE},pageSizeOptions:{},maxPages:{default:20},imageCompression:{type:[Object,Boolean]},imageUpload:{},variableTypes:{default:()=>i.DEFAULT_FIELD_TYPES},defaultVariableStyle:{default:()=>i.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},showSubmitDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},showSigningPlacementTools:{type:Boolean,default:!1},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:le.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:le.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:le.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`,`signing-placement-add`,`signing-placement-change`,`signing-placement-remove`,`signing-placement-select`],setup(p,{expose:Re,emit:ze}){let m=p,h=ze,Be=(0,f.computed)(()=>({height:typeof m.height==`number`?`${m.height}px`:m.height})),Ve=(0,f.ref)(),He=(0,f.ref)(),Ue=(0,f.ref)(),We=(0,f.ref)(),Ge=(0,f.ref)(),Ke=`gd-contract-template-page-decorations-studio-${(0,f.useId)()}`,qe=`gd-contract-template-workspace-chrome-${(0,f.useId)()}`,Je=(0,f.ref)(),Ye=(0,f.ref)();function Xe(e){if(!e||!Array.isArray(e.pages)||!Array.isArray(e.signingPlacements))return[];try{return i.validateTemplateValue(e).filter(e=>e.type===`signing-placement`)}catch{return[]}}function Ze(e,t){return Object.fromEntries(e.map((e,n)=>[e.id,Xe(t?.[n]?.template??e.template)]))}let Qe=``,$e=``,et=(0,f.ref)(!1),g=(0,f.computed)(()=>et.value||Array.isArray(m.files)),tt=l.normalizeContractTemplateFiles(m.files,m.modelValue,m.pageSize),nt=l.constrainContractTemplateFiles(tt,m.pageSizeOptions),rt=g.value?nt.files:tt,it=l.resolveContractTemplateActiveFileId(rt,m.activeFileId),_=(0,f.ref)(rt),v=(0,f.ref)(it),at=rt.find(e=>e.id===it)??rt[0],y=(0,f.ref)(Ze(rt,Array.isArray(m.files)?m.files:m.modelValue?[{template:m.modelValue}]:void 0)),b=(0,f.ref)(y.value[it]??Xe(at?.template)),ot=i.normalizeTemplateValue(at?.template??m.modelValue,m.pageSize),st=i.constrainTemplatePageSizes(ot,m.pageSizeOptions),x=(0,f.ref)(st.value);if(g.value){if(_.value=l.replaceContractTemplateFile(_.value,v.value,st.value),d.serializeFingerprint(_.value)!==d.serializeFingerprint(tt)){let e=l.cloneContractTemplateFiles(_.value);Qe=d.serializeFingerprint(e),h(`update:files`,e),h(`files-change`,l.cloneContractTemplateFiles(e))}}else m.modelValue&&d.serializeFingerprint(st.value)!==d.serializeFingerprint(ot)&&($e=d.serializeFingerprint(st.value),h(`update:modelValue`,i.cloneTemplateValue(st.value)),h(`change`,i.cloneTemplateValue(st.value)),Cr(st.resizedSigningPlacementIds,st.value));let S=(0,f.ref)(``),C=(0,f.ref)(``),w=(0,f.ref)(x.value.pages[0]?.id??``),T=(0,f.ref)(!1),E=(0,f.ref)([]),D=new Map,ct=(0,f.ref)(!1),lt=(0,f.ref)(``),ut=(0,f.ref)(!1),dt=(0,f.ref)(),ft=(0,f.ref)(),pt=(0,f.ref)(``),mt=(0,f.ref)(!1),ht=(0,f.ref)(``),O=(0,f.ref)(1),k=(0,f.ref)(!1),gt=(0,f.ref)(!1),_t=(0,f.ref)(!1),vt=(0,f.ref)(!1),yt=(0,f.ref)(!1),bt=(0,f.ref)(),A=(0,f.ref)(!1),xt=(0,f.ref)(`header`),St=(0,f.ref)(!1),Ct=(0,f.ref)({}),j=(0,f.ref)(``),M=(0,f.ref)(!1),N=(0,f.ref)(!1),wt=(0,f.ref)(!1),Tt=(0,f.ref)(!1),Et=(0,f.ref)(``),Dt=(0,f.ref)(),Ot=(0,f.ref)(),kt=(0,f.ref)(``),At=(0,f.ref)(!1),P=(0,f.ref)(),jt=(0,f.ref)(),F=(0,f.ref)(),Mt=(0,f.ref)(),Nt=(0,f.ref)(!1),Pt,Ft=(0,f.ref)(!1),It,Lt=(0,f.ref)(!1),Rt=(0,f.ref)(``),I=(0,f.ref)(),zt=(0,f.ref)(),L=(0,f.ref)(),Bt=(0,f.ref)(),Vt=(0,f.ref)(),Ht=(0,f.ref)(),R=(0,f.ref)(``),z=(0,f.ref)(le.createDraftCacheStatus(`idle`,`暂无本地草稿`)),Ut=(0,f.ref)({rows:3,cols:3,withHeaderRow:!0}),Wt=new WeakSet,Gt=[`.gd-contract-template-designer__page-decorations-select-popup`,`.gd-contract-template-designer__page-decorations-dropdown-popup`].join(`,`),Kt,qt,Jt=!1,Yt=!1,Xt,B=(0,f.computed)(()=>m.readonly||m.disabled),Zt=(0,f.computed)(()=>!!(P.value||I.value||L.value||M.value||N.value||St.value||wt.value||Tt.value)),Qt=(0,f.computed)(()=>!!m.enableDraftCache&&!B.value),$t=(0,f.computed)(()=>_.value.find(e=>e.id===v.value)??_.value[0]),en=(0,f.computed)(()=>m.draftCacheKey),V=(0,f.computed)(()=>x.value.variables.find(e=>e.key===S.value)),H=(0,f.computed)(()=>x.value.signingPlacements??[]),tn=(0,f.computed)(()=>dt.value?i.buildTemplatePreviewPages(dt.value):[]),nn=(0,f.computed)(()=>(ft.value??[]).map(e=>({file:e,pages:i.buildTemplatePreviewPages(e.template)}))),rn=(0,f.computed)(()=>nn.value.find(e=>e.file.id===pt.value)??nn.value[0]),an=(0,f.computed)(()=>H.value.find(e=>e.id===C.value)),on=(0,f.computed)(()=>H.value.map(e=>{let t=x.value.pages.findIndex(t=>t.id===e.pageId);return{placement:e,label:r.SIGNING_PLACEMENT_TYPE_LABELS[e.type],detail:`${r.SIGNING_PLACEMENT_TYPE_LABELS[e.type]} · 第 ${Math.max(0,t)+1} 页`}})),sn=(0,f.computed)(()=>{let e=an.value?.pageId;return Z(x.value.pages.find(t=>t.id===e))}),U=(0,f.computed)(()=>x.value.pages.find(e=>e.id===w.value)??x.value.pages[0]),cn=(0,f.computed)(()=>i.resolvePageSize(U.value?.pageSize,x.value.pageSize)),ln=(0,f.computed)(()=>T.value&&E.value.length===0),un=(0,f.computed)(()=>T.value?ln.value?`校验通过,正文变量与变量配置一致`:`发现 ${E.value.length} 个校验问题`:``),dn=(0,f.computed)(()=>{let e=U.value?.title||`合同正文`;return`${g.value&&$t.value?`${$t.value.name} · `:``}${e} · ${cn.value.label} · 共 ${x.value.pages.length} 页`}),fn=(0,f.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(x.value.pageDecorations)]),pn=(0,f.computed)(()=>{let e=t.normalizePageDecorations(x.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),mn=(0,f.computed)(()=>Object.values(pn.value).filter(Boolean).length),hn=(0,f.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${le.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``}}),gn=(0,f.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`})),_n=(0,f.computed)(()=>`${Math.round(O.value*100)}%`),vn=(0,f.computed)(()=>e.resolveFontFamilyOptions(m.fontFamilies,m.fontFamilyMode)),yn=(0,f.computed)(()=>vn.value.map(e=>({label:e.label,value:e.value}))),bn=e.DEFAULT_TEXT_ALIGN_OPTIONS,xn=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],Sn=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Cn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],wn=(0,f.computed)(()=>i.normalizePageSizeOptions(m.pageSizeOptions)),Tn=(0,f.computed)(()=>wn.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:i.getPageSizeKey(e)}))),En=(0,f.computed)(()=>i.getPageSizeKey(cn.value)),Dn=(0,f.computed)(()=>r.resolveSigningPlacementToolItems({showSigningPlacementTools:m.showSigningPlacementTools})),On=(0,f.computed)(()=>m.variableTypes.filter(e=>n.isContractTemplateFieldType(e?.type))),kn=(0,f.computed)(()=>On.value.map(e=>({...e,icon:pe.resolveFieldTypeIcon(e.type)}))),An=(0,f.computed)(()=>i.normalizeContractTemplateMaxPages(m.maxPages)),jn=(0,f.computed)(()=>x.value.pages.length>=An.value),Mn=(0,f.computed)(()=>{let e=i.collectTemplateValueVariableKeys(x.value);return Array.from(t.collectPageDecorationVariableKeys(x.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:W}=ue.useAutoPagination({templateValue:x,readonlyState:B,isAutoPaginating:ct,pendingPaginationPageId:lt,activePageId:w,normalizedMaxPages:An,pageRefs:D,syncPageEditors:K,commitBodyChange:br,getPageSize:Z,notifyPageLimit:kr}),{insertSigningPlacement:Nn,handleSigningPlacementDrop:Pn,insertSigningPlacementTool:Fn,handleSigningPlacementDragStart:In,updateSigningPlacement:Ln,patchSelectedSigningPlacement:Rn,duplicateSigningPlacement:zn,removeSigningPlacement:Bn}=u.useSigningPlacementEditor({templateValue:x,signingPlacements:H,selectedSigningPlacement:an,selectedSigningPlacementId:C,selectedPage:U,activePageId:w,readonly:()=>m.readonly,disabled:()=>m.disabled,showSigningPlacementTools:()=>!!m.showSigningPlacementTools,getPageSize:Z,getVisiblePosition:(e,t)=>D.get(e)?.getVisibleSigningPlacementPosition(t),commitSigningPlacements:Dr,selectSigningPlacement:Q,emitAdd:e=>h(`signing-placement-add`,e),emitChange:e=>h(`signing-placement-change`,e),emitRemove:e=>h(`signing-placement-remove`,e)}),{saveDraftCache:Vn,loadDraftCache:Hn,clearDraftCache:Un,restoreDraftCacheIfNeeded:Wn,stopDraftCacheTimer:Gn,restartDraftCacheTimer:Kn,resetDraftFingerprint:qn}=fe.useDraftCacheSession({draftCacheWritable:Qt,multipleFilesMode:g,filesValue:_,activeFileIdValue:v,templateValue:x,draftCacheKey:en,draftCacheInterval:()=>m.draftCacheInterval,draftCacheMaxBytes:()=>m.draftCacheMaxBytes,pageSize:()=>m.pageSize,pageSizeOptions:()=>m.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:K,setActiveFileId:mr,emitFilesChange:J,commit:Y,setSigningPlacementInputErrorsByFile:e=>{y.value=e},buildSigningPlacementInputErrorsByFile:Ze,updateDraftCacheStatus:hr,scheduleAutoPaginate:W,activePageId:w,selectedVariableKey:S}),Jn=(0,f.computed)(()=>{let e=Rt.value.trim().toLowerCase(),t=x.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),Yn=(0,f.computed)(()=>Math.max(Ne,cn.value.width-je)),Xn=(0,f.computed)(()=>Math.max(Pe,cn.value.height-Me)),G=(0,f.computed)(()=>Ct.value[w.value]??ir()),Zn=(0,f.computed)(()=>G.value.hasMixedBlockFormats?void 0:G.value.currentHeadingLevel??`paragraph`),Qn=(0,f.computed)(()=>G.value.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),$n=(0,f.computed)(()=>G.value.fontSize??i.DEFAULT_FIELD_STYLE.fontSize??14),er=(0,f.computed)(()=>G.value.textColor||i.DEFAULT_FIELD_STYLE.color||`#1f2937`),tr=(0,f.computed)(()=>V.value?.style?.fontFamily||i.DEFAULT_FIELD_STYLE.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),nr=(0,f.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=cr($n.value),r=cr(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,f.watch)(()=>m.modelValue,e=>{if(!e||g.value)return;let t=i.normalizeTemplateValue(e,m.pageSize),n=i.constrainTemplatePageSizes(t,m.pageSizeOptions),r=n.value,a=d.serializeFingerprint(r)!==d.serializeFingerprint(x.value),o=d.serializeFingerprint(r),s=o===$e;s&&($e=``),(a||!s)&&(b.value=Xe(e),y.value={...y.value,[v.value]:b.value},x.value=r,_.value=l.replaceContractTemplateFile(_.value,v.value,r),w.value=r.pages[0]?.id??``,S.value=``,C.value=``,W(w.value)),d.serializeFingerprint(r)!==d.serializeFingerprint(t)&&($e=o,h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r)),Cr(n.resizedSigningPlacementIds,r))},{deep:!0}),(0,f.watch)(()=>m.files,e=>{if(!Array.isArray(e))return;let t=l.normalizeContractTemplateFiles(e,void 0,m.pageSize),n=l.constrainContractTemplateFiles(t,m.pageSizeOptions).files,r=d.serializeFingerprint(n),i=d.serializeFingerprint(_.value),a=r===Qe;a||(y.value=Ze(n,e)),a&&(Qe=``);let o=l.resolveContractTemplateActiveFileId(n,m.activeFileId||v.value);if(r===i?o!==v.value&&mr(o,{syncCurrent:!1,shouldEmit:!1}):(_.value=n,mr(o,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0,persistCurrentErrors:!1})),r!==d.serializeFingerprint(t)){let e=l.cloneContractTemplateFiles(n);Qe=d.serializeFingerprint(e),h(`update:files`,e),h(`files-change`,l.cloneContractTemplateFiles(e))}},{deep:!0}),(0,f.watch)(()=>m.activeFileId,e=>{!g.value||!e||e===v.value||mr(e,{syncCurrent:!0,shouldEmit:!1})});function rr(e,t){let n=d.serializeFingerprint(_.value);q(!1);let r=l.normalizeContractTemplateFiles(_.value,void 0,e),{files:a,resizedSigningPlacementIds:o}=l.constrainContractTemplateFiles(r,t),s=d.serializeFingerprint(a)!==n,c=a.find(e=>e.id===v.value);c&&d.serializeFingerprint(c.template)!==d.serializeFingerprint(x.value)&&(x.value=i.cloneTemplateValue(c.template),b.value=[...y.value[v.value]??[]]),s&&(T.value=!1,E.value=[],J(a,``));let ee=o.get(v.value);return ee?.length&&c&&Cr(ee,c.template),s}(0,f.watch)([()=>m.pageSize,()=>m.pageSizeOptions],([e,t])=>{if(g.value){rr(e,t),W(w.value);return}let n=i.normalizeTemplateValue(x.value,e),r=i.constrainTemplatePageSizes(n,t);d.serializeFingerprint(r.value)!==d.serializeFingerprint(x.value)&&Y(r.value),W(w.value)},{deep:!0}),(0,f.watch)(An,()=>{W(x.value.pages[0]?.id)}),(0,f.watch)(B,e=>{e&&($(),M.value=!1,N.value=!1)}),(0,f.watch)(w,()=>{F.value=void 0}),(0,f.watch)([Zt,A,ut],()=>{Ha()}),(0,f.watch)(H,e=>{C.value&&!e.some(e=>e.id===C.value)&&(C.value=``,h(`signing-placement-select`,void 0))},{deep:!0}),(0,f.watch)(()=>[m.enableDraftCache,en.value,m.draftCacheInterval,B.value],()=>{qn(),Kn()}),(0,f.watch)(k,e=>{if(!(typeof document>`u`)){if(e){Kt=document.body.style.overflow,document.body.style.overflow=`hidden`;return}document.body.style.overflow=Kt??``,Kt=void 0}}),(0,f.onMounted)(()=>{Wn(),Kn(),W(w.value),window.addEventListener(`pointerdown`,Xa,!0),window.addEventListener(`pointerup`,qa),window.addEventListener(`keydown`,$a,!0),window.addEventListener(`keydown`,eo),window.addEventListener(`resize`,Ja),window.addEventListener(`scroll`,Za,!0)}),(0,f.onBeforeUnmount)(()=>{ur(),Jt=!0,k.value&&typeof document<`u`&&(document.body.style.overflow=Kt??``),window.removeEventListener(`pointerdown`,Xa,!0),window.removeEventListener(`pointerup`,qa),window.removeEventListener(`keydown`,$a,!0),window.removeEventListener(`keydown`,eo),window.removeEventListener(`resize`,Ja),window.removeEventListener(`scroll`,Za,!0),It!==void 0&&cancelAnimationFrame(It),Gn()});function ir(){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:i.DEFAULT_FIELD_STYLE.fontSize??14,textColor:i.DEFAULT_FIELD_STYLE.color??`#1f2937`,selectionText:``,hasMixedBlockFormats:!1}}function ar(e){return e===`left`||e===`center`||e===`right`}function or(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function sr(e,t=$n.value){let n=Number(e);return Number.isFinite(n)?Math.min(Ie,Math.max(Fe,Math.round(n))):t}function cr(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Ie,Math.max(Fe,Math.round(n)))}function K(e=x.value){return{...e,pages:e.pages.map(e=>{let t=D.get(e.id);return{...e,contentHtml:t?.getHTML()??e.contentHtml,contentJson:t?.getJSON()??e.contentJson}})}}function lr(){Yt=!1,Xt&&=(clearTimeout(Xt),void 0)}function ur(){let e=Yt;lr(),e&&pr()}function dr(){Yt=!0,Xt&&clearTimeout(Xt),Xt=setTimeout(()=>{Xt=void 0,!(!Yt||Jt)&&(Yt=!1,pr())},Ae)}function fr(e){let t=x.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,x.value={...x.value,pages:i}}function pr(){let e=K(),t=i.syncTemplateVariablesWithPages(e);S.value&&!t.variables.some(e=>e.key===S.value)&&(S.value=``),Y(t)}function q(e=!1){ur();let t=i.cloneTemplateValue(K());if(!g.value)return t;let n=_.value.find(e=>e.id===v.value)?.template,r=d.serializeFingerprint(n)!==d.serializeFingerprint(t),a=l.replaceContractTemplateFile(_.value,v.value,t);return _.value=a,r&&e&&J(a),t}function J(e,t=v.value){if(!g.value)return;let n=l.cloneContractTemplateFiles(e);_.value=n,Qe=d.serializeFingerprint(n),h(`update:files`,l.cloneContractTemplateFiles(n)),h(`files-change`,l.cloneContractTemplateFiles(n));let r=n.find(e=>e.id===t);r&&h(`file-change`,l.cloneContractTemplateFiles([r])[0])}function mr(e,t={}){let{syncCurrent:n,shouldEmit:r,forceRefresh:a,persistCurrentErrors:o}=de.resolveSetActiveFileIdOptions(t),s=l.resolveContractTemplateActiveFileId(_.value,e),c=s!==v.value;if(o&&g.value&&v.value&&(y.value={...y.value,[v.value]:[...b.value]}),n?q(!0):lr(),!c&&!a)return;let ee=_.value.find(e=>e.id===s);ee&&(v.value=s,x.value=i.cloneTemplateValue(ee.template),b.value=[...y.value[s]??[]],S.value=``,C.value=``,w.value=x.value.pages[0]?.id??``,Ct.value={},D.clear(),lt.value=``,T.value=!1,E.value=[],ut.value=!1,dt.value=void 0,ft.value=void 0,qn(),r&&c&&h(`update:activeFileId`,s),n&&c&&Qt.value&&Vn(),(0,f.nextTick)(()=>{W(w.value)}))}function Y(e){lr();let t=i.normalizeTemplateValue(e,m.pageSize),n=i.constrainTemplatePageSizes(t,m.pageSizeOptions),r=n.value;return x.value=r,T.value=!1,E.value=[],g.value?J(l.replaceContractTemplateFile(_.value,v.value,r)):(_.value=l.replaceContractTemplateFile(_.value,v.value,r),$e=d.serializeFingerprint(r),h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r))),Cr(n.resizedSigningPlacementIds,r),r}function hr(e,t=e.type!==`unchanged`){z.value=e,t&&h(`draft-cache-change`,{...e})}function gr(){return{...z.value}}function _r(e,t){t?D.set(e,t):D.delete(e)}function X(e,t=U.value?.id??w.value){B.value||D.get(t)?.runCommand(e)}function vr(e){X(e),$()}function yr(e){let t=P.value?.pageId;t&&(D.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function br(e){let t=Y(i.syncTemplateVariablesWithPages(e));return S.value&&!t.variables.some(e=>e.key===S.value)&&(S.value=``),t}function xr(e){fr(e),dr(),W(e.id)}function Z(e){return i.resolvePageSize(e?.pageSize,x.value.pageSize)}function Sr(e){return H.value.filter(t=>t.pageId===e)}function Cr(e,t=x.value){let n=new Set(e);n.size&&(Tr(n),(t.signingPlacements??[]).filter(e=>n.has(e.id)).forEach(e=>h(`signing-placement-change`,u.cloneSigningPlacement(e))))}function Q(e){let t=e?H.value.find(t=>t.id===e):void 0;C.value=t?.id??``,t&&(S.value=``,w.value=t.pageId),h(`signing-placement-select`,t?u.cloneSigningPlacement(t):void 0)}function wr(e){Q(e.id)}function Tr(e){let t=new Set(e);if(!t.size)return;let n=b.value.filter(e=>e.type!==`signing-placement`||!t.has(e.id));b.value=n,y.value={...y.value,[v.value]:n}}function Er(e){let t=b.value.filter(t=>t.type!==`signing-placement`||t.pageId!==e);b.value=t,y.value={...y.value,[v.value]:t}}function Dr(e,t=[]){return Tr(t),Y({...x.value,signingPlacements:e})}function Or(e){if(B.value||!U.value)return;let t=wn.value.find(t=>i.getPageSizeKey(t)===e);if(!t)return;let n=U.value.id,a=Z(U.value),o=i.resolvePageSize(t,x.value.pageSize),s=H.value.map(e=>e.pageId===n?r.scaleSigningPlacementToPage(e,a,o):e);Tr(s.filter(e=>e.pageId===n).map(e=>e.id)),Y({...x.value,pages:x.value.pages.map(e=>e.id===n?{...e,pageSize:o}:e),signingPlacements:s}),s.filter(e=>e.pageId===n).forEach(e=>h(`signing-placement-change`,u.cloneSigningPlacement(e))),W(n)}function kr(e){let t=An.value;R.value=`合同最多支持 ${t} 页`,h(`page-limit`,t,e)}function Ar(){if(B.value)return;if(jn.value){kr(`add`);return}let e=i.createDefaultPage(x.value.pages.length+1,cn.value);Y({...x.value,pages:[...x.value.pages,e]}),w.value=e.id}function jr(e){if(B.value)return;if(jn.value){kr(`duplicate`);return}let t=x.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=i.cloneTemplateValue({pages:[e],variables:[],pageSize:x.value.pageSize,signingPlacements:[]}).pages[0],a=i.createBlankPage(t+2,Z(e),n.contentHtml,n.contentJson);a.title=`${e.title||`第 ${t+1} 页`}副本`;let o=[...x.value.pages];o.splice(t+1,0,a);let s=Sr(e.id).map(e=>r.createSigningPlacement(e.type,a.id,Z(a),{...u.cloneSigningPlacement(e),id:void 0,pageId:a.id}));Y({...x.value,pages:o,signingPlacements:[...H.value,...s]}),w.value=a.id,s.forEach(e=>h(`signing-placement-add`,u.cloneSigningPlacement(e))),s[0]&&Q(s[0].id)}function Mr(e){if(B.value||x.value.pages.length<=1)return;let t=x.value.pages.findIndex(t=>t.id===e.id);if(t<0)return;let n=Sr(e.id);Er(e.id);let r=x.value.pages.filter(t=>t.id!==e.id),i=br({...x.value,pages:r,signingPlacements:H.value.filter(t=>t.pageId!==e.id)});w.value=i.pages[Math.min(t,i.pages.length-1)]?.id??``,n.some(e=>e.id===C.value)&&Q(),n.forEach(e=>h(`signing-placement-remove`,u.cloneSigningPlacement(e)))}function Nr(e){if(B.value||x.value.pages.length<=1)return;let t=Sr(e.id).length;if(!t){Mr(e);return}be.Modal.confirm({title:`删除合同页面`,content:`此页包含 ${t} 个签署位置,删除页面会同时移除这些位置,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{Mr(e)}})}function Pr(e){let t=new Set(x.value.variables.map(e=>e.key)),n=1;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function Fr(e){let t=e.type??`text`;return i.createTemplateVariable({...e,type:t,key:e.key||Pr(t),label:e.label||i.getFieldOption(t,m.variableTypes).label},m.variableTypes,m.defaultVariableStyle)}function Ir(e,t=U.value?.id??x.value.pages[0].id,n){if(B.value)return e;let r=D.get(t)?.insertVariable(e,n),i=!x.value.variables.some(t=>t.key===e.key);return Y({...x.value,pages:r?x.value.pages.map(e=>e.id===r.id?r:e):x.value.pages,variables:i?[...x.value.variables,e]:x.value.variables}),S.value=e.key,Q(),w.value=t,i&&h(`variable-add`,e),W(t),e}function Lr(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 Rr(e={}){let t=s.normalizeContractImageDimension(Dt.value),n=s.normalizeContractImageDimension(Ot.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function zr(){Et.value=``,Dt.value=void 0,Ot.value=void 0,kt.value=``}function Br(e,t=U.value?.id??x.value.pages[0]?.id,n){let r=Lr({...e,src:e.src.trim()});if(!(B.value||!t||!a.isSafeContractImageUrl(r.src)||!r.src||!D.get(t)?.insertContentImage(r,n)))return w.value=t,S.value=``,Q(),r.src}function Vr(e){return e instanceof Error?e:Error(`图片处理失败`)}async function Hr(e,t){t===`toolbar`&&(At.value=!0,kt.value=``);try{let n=await s.processContractImageFile(e,{source:t,compression:m.imageCompression,upload:m.imageUpload});return Jt?void 0:n.src}catch(e){let n=Vr(e);t===`toolbar`&&(kt.value=n.message),R.value=n.message,h(`image-error`,n,t);return}finally{t===`toolbar`&&(At.value=!1)}}async function Ur(e){return await Hr(e,`paste`)??null}async function Wr(e,t={}){if(B.value)return;let n=U.value?.id??x.value.pages[0]?.id,r=n?D.get(n)?.getSelectionRange():void 0,i=typeof e==`string`?e.trim():await Hr(e,`toolbar`);if(Jt)return;if(!i||!a.isSafeContractImageUrl(i)){typeof e==`string`&&(kt.value=`请输入安全的图片 URL`);return}if(n&&!D.has(n))return;let o=Br({...t,src:i},n,r);return o&&(Tt.value=!1,zr(),R.value=`已插入图片`),o}function Gr(){B.value||At.value||($(),kt.value=``,Ye.value&&(Ye.value.value=``),Ye.value?.click())}async function Kr(e){let t=e.target.files?.[0];t&&await Wr(t,Rr({alt:t.name}))}async function qr(){let e=Et.value;await Wr(e,Rr())}function Jr(e){mi(e),wt.value=!1}function Yr(){$(),Ar()}function Xr(e,t,n,r){$(),Ir(Fr({type:t}),e,{left:n,top:r})}function Zr(e){$(),S.value=e,Q()}function Qr(e){let n=x.value.variables.find(t=>t.id===e.id);if(!n)return;let r=e.key.trim();if(r!==n.key){let t=i.validateContractTemplateVariableKey(r,x.value.variables,e.id);if(t){R.value=t;return}}e={...e,key:r};let a=[...x.value.pages],o=n.key,s=``;D.forEach((t,n)=>{let r=t.updateVariable(e,o);if(r){s||=n;let e=a.findIndex(e=>e.id===n);e>=0&&(a[e]=r)}}),Y({...x.value,pages:a,variables:x.value.variables.map(t=>t.id===e.id?e:t),...o!==e.key&&x.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(x.value.pageDecorations,o,e.key)}:{}}),S.value=e.key,W(s||w.value)}function $r(e){V.value&&Qr({...V.value,...e,style:{...V.value.style,...e.style}})}function ei(e){B.value||!V.value||$r({key:e})}function ti(e){B.value||(Y({...x.value,pageDecorations:t.normalizePageDecorations(e)}),W(x.value.pages[0]?.id))}function ni(e){(e===`left`||e===`center`||e===`right`)&&$r({style:{textAlign:e}})}function ri(e){(e===`solid`||e===`dashed`)&&$r({style:{borderStyle:e}})}function ii(e){(e===`contain`||e===`cover`||e===`fill`)&&$r({style:{objectFit:e}})}function ai(e){$r({style:e})}function oi(e){ai({fontFamily:String(e||``).trim()||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`})}function si(e){ai({fontSize:sr(e,V.value?.style?.fontSize??14)})}function ci(e){V.value&&$r({multiline:e,rows:V.value.rows||3,lineHeight:V.value.lineHeight||28,style:e?{underline:!0}:void 0})}function li(e){V.value&&$r({rows:Number(e||3),lineHeight:V.value.lineHeight||28})}function ui(e){if(B.value)return;let n=[...x.value.pages];D.forEach((t,r)=>{let i=t.removeVariable(e.key);if(i){let e=n.findIndex(e=>e.id===r);e>=0&&(n[e]=i)}}),Y({...x.value,pages:n,variables:x.value.variables.filter(t=>t.id!==e.id),...x.value.pageDecorations?{pageDecorations:t.rewritePageDecorationVariableTokens(x.value.pageDecorations,e.key)}:{}}),S.value=``,C.value=``}function di(e){let t=(e.trim()||`variable`).replace(/\s+/g,`_`),n=new Set(x.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 fi(e){B.value||Ir(i.createTemplateVariable({...e,id:void 0,key:di(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},m.variableTypes,m.defaultVariableStyle))}function pi(e){return B.value?void 0:Ir(x.value.variables.find(t=>t.key===e.key)??i.createTemplateVariable(e,m.variableTypes,m.defaultVariableStyle))}function mi(e){if(!B.value)return Ir(Fr({type:e}))}function hi(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=On.value.find(t=>t.type===e);if(!t||!r)return;let i=c.inferContextVariableLabel(t.leadingText)||r.label,a=c.resolveContextVariableWidth(t.selectionWidth,Ne,Yn.value),o=gi();Ir(Fr({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function gi(){let e=G.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 _i(e){if(B.value)return;let t=P.value;t&&(Ir(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function vi(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return i.getFieldOption(t,On.value).label}function yi(){x.value.variables.length&&(Lt.value=!0,(0,f.nextTick)(()=>{Ma(),jt.value?.focusBindSearch()}))}function bi(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function xi(e){return O.value=Math.round(Math.min(Oe,Math.max(De,Number.isFinite(e)?e:1))*100)/100,O.value}let{width:Si}=(0,xe.useElementSize)(He),Ci=(0,f.computed)(()=>Math.max(...x.value.pages.map(e=>Z(e).width),i.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:wi,applyAutoFit:Ti,markUserAdjusted:Ei,userAdjusted:Di}=o.useFitWidthZoom({viewportWidth:Si,widestPageWidth:Ci,padding:48,minZoom:De,maxZoom:Oe,getZoom:()=>O.value,applyZoom:xi});function Oi(e){return Ei(),xi(e)}function ki(){return Ti()}function Ai(){return O.value}function ji(){Oi(O.value+ke)}function Mi(){Oi(O.value-ke)}function Ni(){$(),M.value=!1,N.value=!1,St.value=!1,k.value=!k.value}(0,f.watch)(Si,e=>{yt.value&&!Di.value&&e>0&&wi()});function Pi(e){vt.value?Je.value?.focus():e()}function Fi(){$(),za(),A.value=!1,qt={fullscreen:k.value,sidebar:gt.value,inspector:_t.value,chrome:vt.value,zoom:O.value,userAdjusted:Di.value},k.value=!0,gt.value=!0,_t.value=!0,vt.value=!0,yt.value=!0,(0,f.nextTick)(()=>{B.value?bt.value?.focus():D.get(w.value)?.focus()})}function Ii(){let e=qt;yt.value=!1,qt=void 0,e&&(k.value=e.fullscreen,gt.value=e.sidebar,_t.value=e.inspector,vt.value=e.chrome,e.userAdjusted?Oi(e.zoom):Ti(),(0,f.nextTick)(()=>Pi(()=>We.value?.focusImmersive())))}function Li(){yt.value?Ii():Fi()}function Ri(){$(),F.value=void 0;let e=q(!1);g.value?(ft.value=l.cloneContractTemplateFiles(_.value),dt.value=void 0,pt.value=v.value||_.value[0]?.id||``):(dt.value=i.cloneTemplateValue(e),ft.value=void 0,pt.value=``),ut.value=!0}function zi(){ut.value=!1,dt.value=void 0,ft.value=void 0,pt.value=``}function Bi(){return fa()}function Vi(){$();let e=Bi();return ht.value=JSON.stringify(e,null,2),mt.value=!0,e}function Hi(){mt.value=!1}function Ui(){$(),F.value=void 0,M.value=!1,N.value=!1;let e=H.value.map(u.cloneSigningPlacement);b.value=[],y.value={...y.value,[v.value]:[]};let t=!!C.value;S.value=``,C.value=``,w.value=``,ut.value=!1,dt.value=void 0,ft.value=void 0,mt.value=!1,ht.value=``,Ct.value={},lt.value=``;let n=Y(i.createBlankTemplate(i.DEFAULT_PAGE_SIZE));return t&&h(`signing-placement-select`,void 0),e.forEach(e=>h(`signing-placement-remove`,e)),w.value=n.pages[0]?.id??``,i.cloneTemplateValue(n)}function Wi(){B.value||($(),be.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面、模板变量和签署位置,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{Ui()}}))}function Gi(e){let t=K().pages,n=t.find(e=>e.id===w.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 Ki(e){$(),S.value=e.key,Q();let t=Gi(e);t&&(w.value=t.id,(0,f.nextTick)(()=>{D.get(t.id)?.scrollIntoVariable(e.key)}))}function qi(e){let t=x.value.variables.find(t=>t.key===e||t.id===e);t&&Ki(t)}function Ji(e){let t=H.value.find(t=>t.id===e);t&&($(),S.value=``,w.value=t.pageId,Q(t.id),(0,f.nextTick)(()=>{D.get(t.pageId)?.scrollIntoSigningPlacement(t.id)}))}function Yi(e,t=!0){$(),w.value=e,t&&(0,f.nextTick)(()=>{D.get(e)?.scrollIntoPage()})}function Xi(e){x.value.pages.some(t=>t.id===e)&&Yi(e)}function Zi(){if(A.value){Qi();return}A.value=!0}function Qi(){A.value=!1,(0,f.nextTick)(()=>Pi(()=>We.value?.focusPageDecorations()))}function $i(){return ur(),i.cloneTemplateValue(K())}function ea(e){b.value=Xe(e),y.value={...y.value,[v.value]:b.value};let t=Y(i.normalizeTemplateValue(e,m.pageSize));t.signingPlacements?.some(e=>e.id===C.value)||Q(),W(t.pages[0]?.id)}function ta(){let e=q(!1);return g.value?l.cloneContractTemplateFiles(_.value):l.cloneContractTemplateFiles(l.replaceContractTemplateFile(_.value,v.value,e))}function na(e,t){let n=l.normalizeContractTemplateFiles(e,void 0,m.pageSize),r=l.constrainContractTemplateFiles(n,m.pageSizeOptions),i=_.value;et.value=!0,q(!1),_.value=r.files,y.value=Ze(r.files,e),mr(l.resolveContractTemplateActiveFileId(_.value,t??v.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),d.serializeFingerprint(i)!==d.serializeFingerprint(_.value)&&J(_.value,``)}function ra(e){if(B.value)return;et.value=!0,q(!0);let t=l.createContractTemplateFile(e||`合同文件 ${_.value.length+1}`,m.pageSize);return _.value=[..._.value,t],y.value={...y.value,[t.id]:[]},J(_.value,``),h(`file-add`,l.cloneContractTemplateFiles([t])[0]),mr(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.cloneContractTemplateFiles([t])[0]}function ia(e){!g.value&&!_.value.some(t=>t.id===e)||(et.value=!0,mr(e))}function aa(e,t){if(B.value)return;et.value=!0,q(!1);let n=l.renameContractTemplateFile(_.value,e,t),r=n.find(t=>t.id===e);if(r)return _.value=n,J(n,e),l.cloneContractTemplateFiles([r])[0]}function oa(e){if(B.value||_.value.length<=1)return;et.value=!0,q(!1);let t=_.value.find(t=>t.id===e);if(!t)return;let n=l.removeContractTemplateFile(_.value,e);if(n.length===_.value.length)return;_.value=n;let{[e]:r,...i}=y.value;y.value=i,J(n,``),h(`file-remove`,l.cloneContractTemplateFiles([t])[0]);let a=t.template.signingPlacements??[];return a.forEach(e=>h(`signing-placement-remove`,u.cloneSigningPlacement(e))),a.some(e=>e.id===C.value)&&h(`signing-placement-select`,void 0),v.value===e&&mr(l.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),l.cloneContractTemplateFiles([t])[0]}function sa(e){if(B.value||_.value.length<=1)return;let t=_.value.find(t=>t.id===e);if(!t)return;let n=t.template.signingPlacements?.length??0;be.Modal.confirm({title:`删除合同文件`,content:n?`“${t.name}”包含 ${n} 个签署位置,删除后文件内正文、变量和签署位置都会移除,是否继续?`:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{oa(e)}})}function ca(e,t){if(B.value)return;et.value=!0,q(!1);let n=_.value.findIndex(t=>t.id===e),r=l.moveContractTemplateFile(_.value,e,t),i=r.findIndex(t=>t.id===e),a=r[i];if(!(!a||n===i))return _.value=r,J(r,``),h(`file-move`,l.cloneContractTemplateFiles([a])[0],n,i),l.cloneContractTemplateFiles([a])[0]}function la(){q(!1);let e=_a(g.value?_.value.flatMap(e=>{let t=i.validateTemplateValue(e.template,{maxPages:An.value});return[...y.value[e.id]??[],...t].map(t=>({...t,fileId:e.id}))}):[...b.value,...i.validateTemplateValue(K(),{maxPages:An.value})]);return E.value=e,T.value=!0,h(`validate`,e),e}function ua(e){if(e.fileId&&e.fileId!==v.value){ia(e.fileId),(0,f.nextTick)(()=>ua({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,f.nextTick)(()=>Ge.value?.focusField(n));return}if(e.type===`signing-placement`){let t=H.value.find(t=>t.id===e.id);if(t){Yi(t.pageId),Q(t.id);return}}if(e.variableKey){qi(e.variableKey);return}if(e.pageId){Xi(e.pageId);return}let r=x.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){Ki(r);return}x.value.pages.some(t=>t.id===e.id)&&Yi(e.id)}function da(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`signing-placement`?`签署位置`:e.type===`variable`?`变量`:`字段`}function fa(){return ur(),i.exportTemplateValue(K())}function pa(){let e=q(!1),t=g.value?_.value:l.replaceContractTemplateFile(_.value,v.value,e);return l.exportContractTemplateFiles(t)}function ma(e){let t=K();try{let n=i.collectTemplateLocationRuleExportErrors(t,b.value);if(n.length)throw new r.ContractTemplateLocationRuleBuildError(n);return e(t)}catch(e){throw e instanceof r.ContractTemplateLocationRuleBuildError&&(E.value=[...e.errors],T.value=!0,h(`validate`,[...e.errors])),e}}function ha(e){return ma(t=>r.buildSigningPlacementLocationRules(t,e))}function ga(e){return ma(t=>r.buildContractLocationRules(t,e))}function _a(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 va(e){E.value=[...e],T.value=!0}function ya(){E.value=[],T.value=!1}function ba(){D.get(U.value?.id??w.value)?.focus()}function xa(e){ar(e)&&X({type:`set-text-align`,value:e})}function Sa(e){(e===`paragraph`||or(e))&&X({type:`apply-block-style`,format:e})}function Ca(e){let t=cr(e);t&&(X({type:`set-font-size`,value:t}),j.value=``)}function wa(e){let t=String(e||``).trim();if(!t){X({type:`unset-font-family`});return}X({type:`set-font-family`,value:t})}function Ta(e){Ea(e.target?.value??``)}function Ea(e){let t=e.trim();t&&X({type:`set-color`,value:t})}function Da(e){j.value=e}function Oa(){j.value.trim()&&Ca(j.value)}function ka(e){e.key===`Enter`&&(e.preventDefault(),Oa())}function Aa(e){e||(Oa(),j.value=``)}function ja(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Lt.value=!1,Rt.value=``;let t=ye.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,f.nextTick)(()=>{Ma(),jt.value?.focusFirstButton()})}function Ma(){let e=jt.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=ye.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function Na(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,L.value=void 0;let t=ye.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,f.nextTick)(()=>{let e=zt.value?.getMenuElement(),t=I.value;if(e&&t){let n=ye.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}zt.value?.focusFirstItem()})}function Pa(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,I.value=void 0,Vt.value=e.image.width,Ht.value=e.image.height,S.value=``,C.value&&Q();let t=ye.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,f.nextTick)(()=>{Fa(),Bt.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function Fa(){let e=Bt.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=ye.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function Ia(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:s.normalizeContractImageDimension(Vt.value),height:s.normalizeContractImageDimension(Ht.value)})&&(R.value=`已更新图片尺寸`),$())}function La(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function Ra(e){e.type===`table`?Na(e):e.type===`image`?Pa(e):ja(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Lt.value=!1,Rt.value=``}function za(){M.value=!1,N.value=!1,St.value=!1,wt.value=!1,Tt.value=!1}function Ba(){za(),vt.value=!vt.value,(0,f.nextTick)(()=>Pi(()=>We.value?.focusChromeToggle()))}let Va=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function Ha(){let e=B.value||Ft.value||Nt.value||Zt.value||A.value||ut.value,t=w.value,n=e?void 0:D.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-Le,i=r>=12?r:n.bottom+Le,a=(n.left+n.right)/2-380/2,o=ye.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,f.nextTick)(()=>Ua(n))}function Ua(e){let t=Mt.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-Le,a=i>=12?i:e.bottom+Le,o=(e.left+e.right)/2-r.width/2,s=ye.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function Wa(){let e=F.value?.pageId??w.value,t=D.get(e)?.getSelectionRange();Pt=t?{pageId:e,...t}:void 0,Nt.value=!0,F.value=void 0}function Ga(e){if(!Nt.value)return;let t=Pt,n=D.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(Nt.value=!1,Pt=void 0)}function Ka(){!F.value||It!==void 0||(It=requestAnimationFrame(()=>{It=void 0,Ha()}))}function qa(){Ft.value&&(Ft.value=!1,Ha())}function Ja(){$(),Ka()}function Ya(e,t){D.get(F.value?.pageId??w.value)?.requestTextContextMenu(e,t)}function Xa(e){let t=e.target instanceof HTMLElement?e.target:null;t?.closest(`.ProseMirror`)&&(Ft.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(Va)||($(),F.value&&Wa()))}function Za(e){(e.target instanceof Element?e.target:null)?.closest(Va)||($(),Ka())}function Qa(e){let t=Ve.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 $a(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Ve.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(Gt)||r?.closest(Gt)),a=!!(n&&t.contains(n)||r&&t.contains(r)),o=!!t.querySelector(`.ant-select-open, .ant-dropdown-open`);if(i||a&&o){Wt.add(e);return}!Zt.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),Qi())}function eo(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!Qt.value||!Qa(e))return;e.preventDefault(),Vn();return}if(e.key===`Escape`){if(Wt.has(e)){Wt.delete(e);return}let t=Zt.value,n=t||A.value;if(!t&&A.value&&Qi(),$(),za(),n&&e.stopPropagation(),!n){if(F.value){Wa(),e.stopPropagation();return}yt.value?Ii():k.value=!1}}}function to(e,t){e===w.value&&t.selectedContentImage&&(S.value=``,C.value&&Q()),e===w.value&&(Ga(e),Ha());let n=Ct.value[e];n&&ve.isSameEditorState(n,t)||(Ct.value={...Ct.value,[e]:t})}function no(e=Ut.value.rows,t=Ut.value.cols){X({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:!!Ut.value.withHeaderRow}}),M.value=!1,$()}let ro={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function io(e){let t=I.value;if(!t)return;let n=()=>{X(e,t.pageId),$()},r=ro[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),be.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>D.get(t.pageId)?.focus()})}function ao(e){let t=zt.value?.getMenuElement();if(!t)return;if(e.key===`Escape`){e.preventDefault(),e.stopPropagation();let t=I.value?.pageId;$(),D.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 oo(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),D.get(t??``)?.focus()}function so(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),D.get(t??``)?.focus()}function co(e){X({type:e}),N.value=!1,$()}return Re({getValue:$i,setValue:ea,getFiles:ta,setFiles:na,addFile:ra,selectFile:ia,renameFile:aa,removeFile:oa,moveFile:ca,validate:la,exportTemplate:fa,exportFiles:pa,getSubmitData:Bi,clearTemplate:Ui,saveDraftCache:Vn,loadDraftCache:Hn,clearDraftCache:Un,getDraftCacheStatus:gr,insertVariable:pi,insertImage:Wr,focus:ba,openPreview:Ri,closePreview:zi,openSubmitDataViewer:Vi,closeSubmitDataViewer:Hi,setServerValidationErrors:va,clearValidationErrors:ya,scrollToVariable:qi,scrollToSigningPlacement:Ji,scrollToPage:Xi,setZoom:Oi,resetZoom:ki,getZoom:Ai,fitWidth:wi,insertSigningPlacement:Nn,selectSigningPlacement:Q,buildLocationRules:ha,buildContractLocationRules:ga}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Ve,class:(0,f.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":p.disabled,"is-readonly":B.value,"is-fullscreen":k.value,"is-immersive":yt.value}]),style:(0,f.normalizeStyle)(Be.value)},[g.value?((0,f.openBlock)(),(0,f.createBlock)(me.default,{key:0,files:_.value,"active-file-id":v.value,readonly:B.value,onSelect:ia,onAdd:t[0]||=e=>ra(),onRename:aa,onRemove:sa,onMove:ca},null,8,[`files`,`active-file-id`,`readonly`])):(0,f.createCommentVNode)(``,!0),(0,f.createElementVNode)(`div`,{class:(0,f.normalizeClass)([`gd-contract-template-designer__layout`,{"is-sidebar-collapsed":gt.value,"is-inspector-collapsed":_t.value}])},[(0,f.createVNode)(he.default,{collapsed:gt.value,pages:x.value.pages,variables:x.value.variables,"decoration-variable-keys":Mn.value,"signing-placement-navigation-items":on.value,"active-page-id":w.value,"selected-variable-key":S.value,"selected-signing-placement-id":C.value,"normalized-max-pages":An.value,"page-limit-reached":jn.value,"selected-page":U.value,"selected-page-size":cn.value,"normalized-page-size-options":wn.value,"page-size-options":Tn.value,"selected-page-size-option-value":En.value,"show-signing-placement-tools":m.showSigningPlacementTools,readonly:B.value,"get-page-size":Z,"get-page-signing-placements":Sr,onToggle:t[1]||=e=>gt.value=!gt.value,onAddPage:Ar,onActivatePage:Yi,onDuplicatePage:jr,onRemovePage:Nr,onPatchPageFormat:Or,onScrollToVariable:Ki,onScrollToSigningPlacement:Ji},null,8,[`collapsed`,`pages`,`variables`,`decoration-variable-keys`,`signing-placement-navigation-items`,`active-page-id`,`selected-variable-key`,`selected-signing-placement-id`,`normalized-max-pages`,`page-limit-reached`,`selected-page`,`selected-page-size`,`normalized-page-size-options`,`page-size-options`,`selected-page-size-option-value`,`show-signing-placement-tools`,`readonly`]),(0,f.createElementVNode)(`main`,{ref_key:`workspaceElement`,ref:Ue,class:`gd-contract-template-designer__workspace`},[(0,f.withDirectives)((0,f.createElementVNode)(`div`,{id:qe,class:`gd-contract-template-designer__workspace-chrome`},[(0,f.createVNode)(ne.default,{ref_key:`workspaceHeaderElement`,ref:We,summary:dn.value,"draft-cache-status-text":hn.value,"draft-cache-status-class":gn.value,"show-draft-cache-status":p.showDraftCacheStatus,"show-clear-button":p.showClearButton,"show-submit-data-viewer":p.showSubmitDataViewer,readonly:B.value,"zoom-percent":_n.value,"zoom-out-disabled":O.value<=De,"zoom-in-disabled":O.value>=Oe,"is-fullscreen":k.value,immersive:yt.value,"page-decorations-open":A.value,"page-decorations-studio-id":Ke,"page-decorations-preset-label":fn.value,"page-decorations-enabled-count":mn.value,"page-decorations-enabled-states":pn.value,"chrome-controls-id":qe,onZoomOut:Mi,onZoomIn:ji,onFitWidth:(0,f.unref)(wi),onResetZoom:ki,onToggleFullscreen:Ni,onToggleImmersive:Li,onClear:Wi,onValidate:la,onPreview:Ri,onSubmitData:Vi,onTogglePageDecorations:Zi,onToggleChrome:Ba},null,8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-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,f.createVNode)(re.default,{"variable-insert-popover-open":wt.value,"onUpdate:variableInsertPopoverOpen":t[2]||=e=>wt.value=e,"image-insert-popover-open":Tt.value,"onUpdate:imageInsertPopoverOpen":t[3]||=e=>Tt.value=e,"image-insert-url":Et.value,"onUpdate:imageInsertUrl":t[4]||=e=>Et.value=e,"image-insert-width":Dt.value,"onUpdate:imageInsertWidth":t[5]||=e=>Dt.value=e,"image-insert-height":Ot.value,"onUpdate:imageInsertHeight":t[6]||=e=>Ot.value=e,"table-insert-popover-open":M.value,"onUpdate:tableInsertPopoverOpen":t[7]||=e=>M.value=e,"table-actions-popover-open":N.value,"onUpdate:tableActionsPopoverOpen":t[8]||=e=>N.value=e,"table-insert-draft":Ut.value,"onUpdate:tableInsertDraft":t[9]||=e=>Ut.value=e,"toolbar-more-open":St.value,"onUpdate:toolbarMoreOpen":t[10]||=e=>St.value=e,readonly:B.value,"editor-state":G.value,"current-block-format":Zn.value,"block-format-options":xn,"font-family-select-options":yn.value,"current-editor-font-family":Qn.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"current-editor-text-color":er.value,"body-control-tool-items":kn.value,"page-limit-reached":jn.value,"normalized-max-pages":An.value,"image-processing":At.value,"image-insert-error":kt.value,onCommand:t[11]||=e=>X(e),onPatchBlockFormat:Sa,onPatchFontFamily:wa,onPatchFontSize:Ca,onPatchColor:Ta,onPatchTextAlign:xa,onInsertVariable:Jr,onOpenImageFile:Gr,onInsertImageUrl:qr,onAddPage:Ar,onInsertTable:no,onTableAction:co,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka},null,8,[`variable-insert-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`,`page-limit-reached`,`normalized-max-pages`,`image-processing`,`image-insert-error`])],512),[[f.vShow,!vt.value]]),vt.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(be.Tooltip),{key:0,title:`展开工具区`},{default:(0,f.withCtx)(()=>[(0,f.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:Je,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":qe,onClick:Ba},[(0,f.createVNode)((0,f.unref)(Se.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,f.createCommentVNode)(``,!0),yt.value&&!A.value?((0,f.openBlock)(),(0,f.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:bt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:Ii},[(0,f.createVNode)((0,f.unref)(Se.CompressOutlined),{"aria-hidden":`true`}),t[25]||=(0,f.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[26]||=(0,f.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,f.createCommentVNode)(``,!0),T.value?((0,f.openBlock)(),(0,f.createElementBlock)(`section`,Ce,[(0,f.createVNode)((0,f.unref)(be.Alert),{type:ln.value?`success`:`error`,message:un.value,"show-icon":``},null,8,[`type`,`message`]),E.value.length?((0,f.openBlock)(),(0,f.createElementBlock)(`div`,we,[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(E.value,e=>((0,f.openBlock)(),(0,f.createElementBlock)(`button`,{key:`${e.id}-${e.message}`,type:`button`,class:`gd-contract-template-designer__validation-item`,onClick:t=>ua(e)},[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(e.message),1),(0,f.createElementVNode)(`small`,null,(0,f.toDisplayString)(da(e)),1)],8,Te))),128))])):(0,f.createCommentVNode)(``,!0)])):(0,f.createCommentVNode)(``,!0),(0,f.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:He,class:`gd-contract-template-designer__canvas`},[((0,f.openBlock)(!0),(0,f.createElementBlock)(f.Fragment,null,(0,f.renderList)(x.value.pages,(e,n)=>((0,f.openBlock)(),(0,f.createBlock)(ee.default,{key:`${v.value}:${e.id}`,ref_for:!0,ref:t=>_r(e.id,t),page:e,"page-index":n,"page-size":Z(e),"page-decorations":x.value.pageDecorations,"total-pages":x.value.pages.length,variables:x.value.variables,"selected-variable-key":S.value,"signing-placements":m.showSigningPlacementTools?Sr(e.id):[],"selected-signing-placement-id":C.value,active:w.value===e.id,readonly:p.readonly,disabled:p.disabled,zoom:O.value,"process-image-file":Ur,onPageUpdate:xr,onVariableDrop:Xr,onVariableSelect:Zr,onSigningPlacementDrop:(0,f.unref)(Pn),onSigningPlacementSelect:wr,onSigningPlacementMove:(0,f.unref)(Ln),onSigningPlacementRemove:(0,f.unref)(Bn),onEditorFocus:t[12]||=e=>Yi(e,!1),onEditorStateChange:to,onEditorContextMenu:Ra,onVariableMoveBlocked:t[13]||=e=>R.value=`变量只能在当前页内移动,跨页移动尚未支持。`},null,8,[`page`,`page-index`,`page-size`,`page-decorations`,`total-pages`,`variables`,`selected-variable-key`,`signing-placements`,`selected-signing-placement-id`,`active`,`readonly`,`disabled`,`zoom`,`onSigningPlacementDrop`,`onSigningPlacementMove`,`onSigningPlacementRemove`]))),128))],512),(0,f.withDirectives)((0,f.createVNode)(_e.default,{ref_key:`pageDecorationsStudioElement`,ref:Ge,id:Ke,open:A.value,decorations:x.value.pageDecorations,variables:x.value.variables,"font-family-options":yn.value,readonly:p.readonly,disabled:p.disabled,"active-tab":xt.value,"onUpdate:activeTab":t[14]||=e=>xt.value=e,onChange:ti,onClose:Qi},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[f.vShow,A.value]])],512),(0,f.createVNode)(ge.default,{collapsed:_t.value,readonly:p.readonly,disabled:p.disabled,"show-signing-placement-tools":m.showSigningPlacementTools,"body-control-tool-items":kn.value,"signing-placement-tools":Dn.value,"signing-placements":H.value,"selected-signing-placement":an.value,"selected-signing-placement-page-size":sn.value,"selected-variable":V.value,variables:x.value.variables,"current-variable-font-family":tr.value,"font-family-select-options":yn.value,"text-align-options":(0,f.unref)(bn),"border-style-options":Sn,"object-fit-options":Cn,"selected-variable-width-max":Yn.value,"selected-variable-height-max":Xn.value,"min-font-size":Fe,"max-font-size":Ie,"default-multiline-rows":(0,f.unref)(3),"resolve-signing-placement-type-icon":(0,f.unref)(pe.resolveSigningPlacementTypeIcon),"signing-placement-type-labels":(0,f.unref)(r.SIGNING_PLACEMENT_TYPE_LABELS),onToggle:t[15]||=e=>_t.value=!_t.value,onVariableDragStart:bi,onInsertVariable:mi,onSigningPlacementDragStart:(0,f.unref)(In),onInsertSigningPlacement:(0,f.unref)(Fn),onPatchSigningPlacement:(0,f.unref)(Rn),onDuplicateSigningPlacement:t[16]||=e=>(0,f.unref)(zn)(),onRemoveSigningPlacement:t[17]||=e=>(0,f.unref)(Bn)(),onDuplicateVariable:fi,onRemoveVariable:ui,onPatchVariable:$r,onRenameVariable:ei,onPatchStyle:ai,onPatchMultiline:ci,onPatchRows:li,onPatchFontFamily:oi,onPatchFontSize:si,onPatchTextAlign:ni,onPatchBorderStyle:ri,onPatchObjectFit:ii},null,8,[`collapsed`,`readonly`,`disabled`,`show-signing-placement-tools`,`body-control-tool-items`,`signing-placement-tools`,`signing-placements`,`selected-signing-placement`,`selected-signing-placement-page-size`,`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`,`resolve-signing-placement-type-icon`,`signing-placement-type-labels`,`onSigningPlacementDragStart`,`onInsertSigningPlacement`,`onPatchSigningPlacement`])],2),((0,f.openBlock)(),(0,f.createBlock)(f.Teleport,{to:`body`},[I.value?((0,f.openBlock)(),(0,f.createBlock)(te.default,{key:0,ref_key:`tableContextMenuElement`,ref:zt,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,f.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:io,onKeydown:ao},null,8,[`capabilities`,`active-alignment`,`style`])):(0,f.createCommentVNode)(``,!0),L.value?((0,f.openBlock)(),(0,f.createBlock)(oe.default,{key:1,ref_key:`imageContextMenuElement`,ref:Bt,width:Vt.value,"onUpdate:width":t[18]||=e=>Vt.value=e,height:Ht.value,"onUpdate:height":t[19]||=e=>Ht.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:La,onApply:Ia,onKeydown:so},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,f.createCommentVNode)(``,!0),P.value?((0,f.openBlock)(),(0,f.createBlock)(ie.default,{key:2,ref_key:`textContextMenuElement`,ref:jt,"bind-open":Lt.value,"onUpdate:bindOpen":t[20]||=e=>Lt.value=e,"bind-keyword":Rt.value,"onUpdate:bindKeyword":t[21]||=e=>Rt.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":G.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"text-align-options":(0,f.unref)(bn),"current-editor-text-color":er.value,"body-control-tool-items":kn.value,"text-menu-bindable-variables":Jn.value,"page-limit-reached":jn.value,"table-insert-draft":Ut.value,"variables-count":x.value.variables.length,"resolve-bind-variable-type-label":vi,onCommand:vr,onClipboard:yr,onOpenImage:Gr,onAddPage:Yr,onInsertVariable:hi,onBindVariable:_i,onOpenBindPanel:yi,onKeydown:oo,onPatchFontSize:Ca,onPatchTextAlign:xa,onPatchColor:Ea,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka},null,8,[`bind-open`,`bind-keyword`,`x`,`y`,`has-selection`,`editor-state`,`font-size-preset-options`,`current-editor-font-size`,`editor-font-size-search-value`,`text-align-options`,`current-editor-text-color`,`body-control-tool-items`,`text-menu-bindable-variables`,`page-limit-reached`,`table-insert-draft`,`variables-count`])):(0,f.createCommentVNode)(``,!0),F.value?((0,f.openBlock)(),(0,f.createBlock)(ae.default,{key:3,ref_key:`textBubbleElement`,ref:Mt,x:F.value.x,y:F.value.y,"editor-state":G.value,"font-size-preset-options":nr.value,"current-editor-font-size":$n.value,"editor-font-size-search-value":j.value,"current-editor-text-color":er.value,"text-align-options":(0,f.unref)(bn),onCommand:X,onPatchFontSize:Ca,onPatchTextAlign:xa,onPatchColor:Ea,onFontSizeSearch:Da,onFontSizeCommit:Oa,onFontSizeDropdownChange:Aa,onFontSizeKeydown:ka,onMore:Ya},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,f.createCommentVNode)(``,!0)])),(0,f.createElementVNode)(`input`,{ref_key:`imageFileInputElement`,ref:Ye,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:Kr},null,544),(0,f.createElementVNode)(`span`,Ee,(0,f.toDisplayString)(R.value),1),(0,f.createVNode)(se.default,{open:ut.value,"onUpdate:open":t[22]||=e=>ut.value=e,"preview-pages":tn.value,"preview-file-groups":nn.value,"preview-active-group":rn.value,"preview-snapshot":dt.value,onCancel:zi,onSelectFile:t[23]||=e=>pt.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`]),(0,f.createVNode)(ce.default,{open:mt.value,"onUpdate:open":t[24]||=e=>mt.value=e,json:ht.value,onCancel:Hi},null,8,[`open`,`json`])],6))}});exports.default=p;
|
package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=require(`../
|
|
1
|
+
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/signing-placement.cjs`);var o=[{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`}],s={...o[4]},c={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},l=3,u=28,d=`contract-template-renderer-1.0.0`,f=`contract-render-css-1.0.0`,p=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,m=new Set([`pageNumber`,`totalPages`,`rendererVersion`]);function h(e,t,n){let r=typeof e==`string`?e.trim():``;return r?p.test(r)?m.has(r)?`${r} 是系统保留标识`:t.some(e=>e.id!==n&&e.key.trim()===r)?`变量标识 ${r} 已存在`:``:`变量标识需以字母开头,仅包含字母、数字和下划线,长度为 2~64 位`:`请输入变量标识`}function g(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var _=[{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}],v=0;function y(e){return v+=1,`${e}-${Date.now().toString(36)}-${v.toString(36)}`}function b(e){let t=JSON.parse(JSON.stringify(e));return Array.isArray(t.signingPlacements)&&(t.signingPlacements=t.signingPlacements.map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))),t}function x(e){return o.find(t=>t.format===e)}function S(e){if(e)return e.format&&e.format!==`Custom`?e.format:o.find(t=>t.width===e.width&&t.height===e.height)?.format}function C(e,t=s){let n=S(t)??t.format,r=e?.format??S(e)??n??`Custom`,i=r===`Custom`?void 0:x(r),a=D(i?.width??e?.width,t.width),o=D(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function w(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function T(e){let t=(Array.isArray(e)?e:o).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=x(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:S(e),a=i?x(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=w(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:o).map(e=>({...e}))}function E(e,t){let n=w(e);return t.find(e=>w(e)===n)}function ee(e,t){let n=T(t),r=n[0],i=C(e.pageSize,r),o=E(i,n)??r,s=new Map,c=e.pages.map(e=>{let t=C(e.pageSize,i),a=E(t,n)??r;return w(t)!==w(a)&&s.set(e.id,{source:t,target:a}),{...e,pageSize:{...a}}}),l=[],u=(e.signingPlacements??[]).map(e=>{let t=s.get(e.pageId);return t?(l.push(e.id),a.scaleSigningPlacementToPage(e,t.source,t.target)):e});return{value:{...e,pageSize:{...o},pages:c,signingPlacements:u},resizedSigningPlacementIds:l}}function D(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function O(e=1,t){return{id:y(`page`),title:`第 ${e} 页`,pageSize:t?C(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function k(e=1,t,n=`<p></p>`,r){return{id:y(`page`),title:`第 ${e} 页`,pageSize:t?C(t):void 0,contentHtml:n,contentJson:r}}function A(e=s){let t=C(e);return{pages:[O(1,t)],variables:[],pageSize:t,signingPlacements:[]}}function te(e=s){let t=C(e);return{pages:[k(1,t,`<p></p>`)],variables:[],pageSize:t,signingPlacements:[]}}function j(e,t=_){return t.find(t=>t.type===e)??_[0]}function M(e,t=_,n={}){let r=e.type===void 0?`text`:e.type,i=j(r,t),a=ne(r);return{id:e.id??y(`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??``,multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...c,...a.style,...n,...e.style}}}function ne(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}}:{style:{border:!1,underline:!0}}}function N(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function re(e,t=s){if(!e)return A(t);let n=C(e.pageSize,t),i=(e.pages?.length?e.pages:[O(1,n)]).map((e,t)=>({id:e.id||y(`page`),title:e.title||`第 ${t+1} 页`,pageSize:C(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),o=[],c=new Map,l=Object.fromEntries(i.map(e=>[e.id,C(e.pageSize,n)]));return(e.variables??[]).forEach(e=>{let t=M({...e,id:e.id||y(`variable`)});o.push(t),t.key&&c.set(t.key,t)}),i.forEach(e=>{G(e).forEach(e=>{if(!e.key)return;let t=c.get(e.key);if(!t){let t=M(e);o.push(t),c.set(e.key,t);return}if(N(e.type)){let n=M({...t,type:e.type});c.set(e.key,n);let r=o.findIndex(e=>e.id===t.id);r>=0&&(o[r]=n)}})}),{pages:i,variables:o,pageSize:n,signingPlacements:a.normalizeSigningPlacements(e.signingPlacements,l,n),...e.pageDecorations?{pageDecorations:r.normalizePageDecorations(e.pageDecorations)}:{}}}function ie(e){return e.pages.map((t,n)=>H(e,t,n,t.contentHtml,{})).join(`
|
|
2
2
|
`)}function P(e){return e.pages.map((t,n)=>H(e,t,n,ge(t.contentHtml))).join(`
|
|
3
|
-
`)}function F(e){return I(e).map(({page:t,contentHtml:n},
|
|
4
|
-
`)}function I(e){let t=new Map(e.variables.map(e=>[e.key,e])),n=Array.isArray(e.signingPlacements)?e.signingPlacements:[];return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:le(e.contentHtml,t),signingPlacements:n.filter(t=>t.pageId===e.id).map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))}))}var L=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function ae(e){let t=a.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new L(t);let n=b(e);return n.pageDecorations&&=a.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:d,styleVersion:f,html:P(n)}}function R(e,t={}){let r=[],i=new Set;typeof t.maxPages==`number`&&e.pages.length>t.maxPages&&r.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 n=h(t.key,e.variables,t.id),a=!!t.key?.trim()&&e.variables.some(e=>e.id!==t.id&&e.key.trim()===t.key.trim());n&&(!a||t.key!==t.key.trim())&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:t.key?.trim()?n:`${t.label||`变量`} 缺少变量标识`,code:t.key?.trim()?`VARIABLE_KEY_INVALID`:`VARIABLE_KEY_MISSING`}),t.key&&(i.has(t.key)&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:`变量标识 ${t.key} 重复`,code:`VARIABLE_KEY_DUPLICATED`}),i.add(t.key)),N(t.type)&&r.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let o=new Set(e.variables.map(e=>e.key).filter(Boolean)),s=new Set,c=a.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{z(e).forEach(t=>{s.add(t),o.has(t)||r.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!s.has(e.key)&&!c.has(e.key)&&r.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),r.push(...a.validatePageDecorations(e.pageDecorations,e.variables)),r.push(...n.validateSigningPlacements(e)),r}function z(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;oe(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 oe(e){return e===`templateVariable`||e===`templateField`}function B(e){let t=new Set;return e.pages.forEach(e=>{z(e).forEach(e=>t.add(e))}),t}function se(e){let t=B(e),n=a.collectPageDecorationVariableKeys(e.pageDecorations);return{...e,variables:e.variables.filter(r=>h(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function V(e,t,n){let r=e??[];if(r.length<=1||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{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function H(e,t,n,r,i){let o=a.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,i);return`<section ${U(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${r}</div></section>`}function U(e,n,r,i=1){let o=C(e.pageSize,n);return[`class="${a.buildPageDecorationClassNames(r,i)}"`,`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 W=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function G(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||N(e.type)&&!N(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(ce(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(K(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,W,e=>{r(K(t.createTagAttributeReader(e)))}),Array.from(n.values())}function K(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),a=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:a?a===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,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 ce(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`)??``,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 le(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return ue(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{de(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(pe(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?fe(i,n):e})}function ue(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`)&&J(r)){e.removeAttribute(t.name);return}n===`style`&&Y(r)&&e.removeAttribute(t.name)})})}function q(e,n){let r=e(`data-key`)??``,a=n.get(r),o=a?.type??e(`data-variable-type`)??`text`,s=he(o,a?.defaultValue??e(`data-default-value`)??``),c=i.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:me(a,e)});return{key:r,label:a?.label??e(`data-label`)??r,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function de(e,n){let{key:r,label:i,presentation:a,text:o}=q(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 fe(e,n){let{key:r,label:i,presentation:a,text:o}=q(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 pe(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)=>J(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>Y(n)?``:` style=${t}${n}${t}`)}function me(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 he(e,t){return e===`image`&&J(t)?``:t}function J(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 Y(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function ge(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 X(e){return e===`left`||e===`center`||e===`right`}function _e(e){return e===`solid`||e===`dashed`}function ve(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return X(e)?e:void 0}function Q(e){return _e(e)?e:void 0}function $(e){return ve(e)?e:void 0}function ye(e,t=[]){let n=[...t,...R(e)],r=new Set;return n.filter(e=>{let t=`${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return r.has(t)?!1:(r.add(t),!0)})}exports.CONTRACT_TEMPLATE_RENDERER_VERSION=d,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=m,exports.CONTRACT_TEMPLATE_STYLE_VERSION=f,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=p,exports.ContractTemplatePageDecorationValidationError=L,exports.DEFAULT_FIELD_STYLE=c,exports.DEFAULT_FIELD_TYPES=_,exports.DEFAULT_MULTILINE_LINE_HEIGHT=u,exports.DEFAULT_MULTILINE_ROWS=l,exports.DEFAULT_PAGE_SIZE=s,exports.PAGE_SIZE_OPTIONS=o,exports.buildTemplateExpressionHtml=P,exports.buildTemplateHtml=ie,exports.buildTemplatePreviewHtml=F,exports.buildTemplatePreviewPages=I,exports.cloneTemplateValue=b,exports.collectTemplateLocationRuleExportErrors=ye,exports.collectTemplateValueVariableKeys=B,exports.collectTemplateVariableKeys=z,exports.constrainTemplatePageSizes=ee,exports.createBlankPage=k,exports.createBlankTemplate=te,exports.createDefaultPage=O,exports.createDefaultTemplate=A,exports.createDesignerId=y,exports.createTemplateVariable=M,exports.exportTemplateValue=ae,exports.findPageSizeOption=E,exports.getFieldOption=j,exports.getPageSizeKey=w,exports.getPageSizeOption=x,exports.inferPageFormat=S,exports.normalizeContractTemplateMaxPages=g,exports.normalizePageSizeOptions=T,exports.normalizeTemplateValue=re,exports.resolvePageSize=C,exports.splitPageContentByMeasurements=V,exports.syncTemplateVariablesWithPages=se,exports.validateContractTemplateVariableKey=h,exports.validateTemplateValue=R;
|
|
3
|
+
`)}function F(e){return I(e).map(({page:t,contentHtml:n},i)=>{let a=C(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${U(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 I(e){let t=new Map(e.variables.map(e=>[e.key,e])),n=Array.isArray(e.signingPlacements)?e.signingPlacements:[];return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:le(e.contentHtml,t),signingPlacements:n.filter(t=>t.pageId===e.id).map(e=>({id:e.id,pageId:e.pageId,type:e.type,x:e.x,y:e.y,width:e.width,height:e.height,mustSign:e.mustSign,...e.sealTypes?.length?{sealTypes:[...e.sealTypes]}:{}}))}))}var L=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function ae(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new L(t);let n=b(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:d,styleVersion:f,html:P(n)}}function R(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=h(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)),N(t.type)&&n.push({type:`variable`,id:t.id,variableKey:t.key,message:`${t.label||t.key||`变量`} 不是正文填写变量`,code:`VARIABLE_TYPE_UNSUPPORTED`})});let o=new Set(e.variables.map(e=>e.key).filter(Boolean)),s=new Set,c=r.collectPageDecorationVariableKeys(e.pageDecorations);return e.pages.forEach(e=>{z(e).forEach(t=>{s.add(t),o.has(t)||n.push({type:`variable`,id:e.id,message:`正文模板变量 ${t} 没有对应变量配置`})})}),e.variables.forEach(e=>{e.key&&!s.has(e.key)&&!c.has(e.key)&&n.push({type:`variable`,id:e.id,message:`${e.label||e.key} 缺少对应正文变量节点`})}),n.push(...r.validatePageDecorations(e.pageDecorations,e.variables)),n.push(...a.validateSigningPlacements(e)),n}function z(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;oe(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 oe(e){return e===`templateVariable`||e===`templateField`}function B(e){let t=new Set;return e.pages.forEach(e=>{z(e).forEach(e=>t.add(e))}),t}function se(e){let t=B(e),n=r.collectPageDecorationVariableKeys(e.pageDecorations);return{...e,variables:e.variables.filter(r=>h(r.key,e.variables,r.id)?!0:t.has(r.key)||n.has(r.key))}}function V(e,t,n){let r=e??[];if(r.length<=1||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{splitIndex:a,currentContent:r.slice(0,a),overflowContent:r.slice(a)}}function H(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${U(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function U(e,n,i,a=1){let o=C(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 W=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function G(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||N(e.type)&&!N(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(ce(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(K(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,W,e=>{r(K(t.createTagAttributeReader(e)))}),Array.from(n.values())}function K(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),a=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:a?a===`true`:void 0,checkedText:e(`data-checked-text`)??``,uncheckedText:e(`data-unchecked-text`)??``,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 ce(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`)??``,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 le(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return ue(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{de(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(pe(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?fe(i,n):e})}function ue(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`)&&J(r)){e.removeAttribute(t.name);return}n===`style`&&Y(r)&&e.removeAttribute(t.name)})})}function q(e,r){let i=e(`data-key`)??``,a=r.get(i),o=a?.type??e(`data-variable-type`)??`text`,s=he(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:me(a,e)});return{key:i,label:a?.label??e(`data-label`)??i,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function de(e,n){let{key:r,label:i,presentation:a,text:o}=q(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 fe(e,n){let{key:r,label:i,presentation:a,text:o}=q(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 pe(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)=>J(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>Y(n)?``:` style=${t}${n}${t}`)}function me(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 he(e,t){return e===`image`&&J(t)?``:t}function J(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 Y(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function ge(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 X(e){return e===`left`||e===`center`||e===`right`}function _e(e){return e===`solid`||e===`dashed`}function ve(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return X(e)?e:void 0}function Q(e){return _e(e)?e:void 0}function $(e){return ve(e)?e:void 0}function ye(e,t=[]){let n=[...t,...R(e)],r=new Set;return n.filter(e=>{let t=`${e.code??``}|${e.id}|${e.pageId??``}|${e.message}`;return r.has(t)?!1:(r.add(t),!0)})}exports.CONTRACT_TEMPLATE_RENDERER_VERSION=d,exports.CONTRACT_TEMPLATE_RESERVED_VARIABLE_KEYS=m,exports.CONTRACT_TEMPLATE_STYLE_VERSION=f,exports.CONTRACT_TEMPLATE_VARIABLE_KEY_PATTERN=p,exports.ContractTemplatePageDecorationValidationError=L,exports.DEFAULT_FIELD_STYLE=c,exports.DEFAULT_FIELD_TYPES=_,exports.DEFAULT_MULTILINE_LINE_HEIGHT=u,exports.DEFAULT_MULTILINE_ROWS=l,exports.DEFAULT_PAGE_SIZE=s,exports.PAGE_SIZE_OPTIONS=o,exports.buildTemplateExpressionHtml=P,exports.buildTemplateHtml=ie,exports.buildTemplatePreviewHtml=F,exports.buildTemplatePreviewPages=I,exports.cloneTemplateValue=b,exports.collectTemplateLocationRuleExportErrors=ye,exports.collectTemplateValueVariableKeys=B,exports.collectTemplateVariableKeys=z,exports.constrainTemplatePageSizes=ee,exports.createBlankPage=k,exports.createBlankTemplate=te,exports.createDefaultPage=O,exports.createDefaultTemplate=A,exports.createDesignerId=y,exports.createTemplateVariable=M,exports.exportTemplateValue=ae,exports.findPageSizeOption=E,exports.getFieldOption=j,exports.getPageSizeKey=w,exports.getPageSizeOption=x,exports.inferPageFormat=S,exports.normalizeContractTemplateMaxPages=g,exports.normalizePageSizeOptions=T,exports.normalizeTemplateValue=re,exports.resolvePageSize=C,exports.splitPageContentByMeasurements=V,exports.syncTemplateVariablesWithPages=se,exports.validateContractTemplateVariableKey=h,exports.validateTemplateValue=R;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./html.cjs`),t=require(`../constants.cjs`),n=require(`./template-variable-render.cjs`);var r={top:54,right:64,bottom:54,left:64},i={sparse:{columns:2,rows:3},normal:{columns:3,rows:4},dense:{columns:4,rows:6}},a={header:{enabled:!1,text:``,textAlign:`center`,slots:{left:``,center:``,right:``},showOnFirstPage:!0,fontFamily:t.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},footer:{enabled:!1,text:`第 {pageNumber} / {totalPages} 页`,textAlign:`center`,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``},showOnFirstPage:!0,fontFamily:t.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},watermark:{enabled:!1,text:``,fontSize:36,color:`#7a818b`,opacity:.14,rotation:-30,showOnFirstPage:!0,layout:`single`,density:`normal`},pageNumbering:{countFirstPage:!0}},o=/^#[\da-f]{6}$/i,s=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,c=/\$\{\{[\s\S]*?\}\}|\$\{\{|\$\{[^{}]*\}|\{[A-Za-z][A-Za-z0-9]*\}/g;function l(e){return{header:E(e?.header,a.header),footer:E(e?.footer,a.footer),watermark:D(e?.watermark),pageNumbering:{countFirstPage:e?.pageNumbering?.countFirstPage!==!1}}}function u(e){let t=l();return e===`none`?t:(t.footer=E({...t.footer,enabled:!0,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``}},a.footer),(e===`internal-review`||e===`draft`)&&(t.watermark=D({...t.watermark,enabled:!0,text:e===`internal-review`?`内部审阅`:`草稿`,layout:`tiled`,density:`normal`})),t)}function d(e){let t=JSON.stringify(l(e));return[`none`,`page-number`,`internal-review`,`draft`].find(e=>JSON.stringify(u(e))===t)??`custom`}function f(e,t=1){let n=l(e).header;return F(n,t)}function p(e,t=1){let n=l(e).footer;return F(n,t)}function m(e,t=1){let n=l(e).watermark;return n.enabled&&!!n.text.trim()&&(t!==1||n.showOnFirstPage)}function h(e,t,n=!0){let r=Math.max(1,Math.floor(e||1)),i=Math.max(0,Math.floor(t||0));return{pageNumber:n?String(r):r===1?``:String(r-1),totalPages:String(n?i:Math.max(0,i-1))}}function g(e,t=[],n=!1){let r=[],i=[],a=new Map(t.map(e=>[e.key,e])),o=0;c.lastIndex=0;let l=c.exec(e);for(;l;){l.index>o&&r.push({type:`text`,value:e.slice(o,l.index)});let t=l[0];if(t===`{pageNumber}`)r.push({type:`pageNumber`});else if(t===`{totalPages}`)r.push({type:`totalPages`});else if(t.startsWith("${{")&&t.endsWith(`}}`)){let e=t.slice(3,-2),o=e.trim();if(e!==o||!s.test(o))i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰变量令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});else{let e=a.get(o);n&&!e?i.push({code:`DECORATION_VARIABLE_UNKNOWN`,message:`页面装饰引用了未知变量 ${o}`,token:t,offset:l.index}):e?.type===`image`&&i.push({code:`DECORATION_VARIABLE_IMAGE_UNSUPPORTED`,message:`图片变量 ${o} 不能用于页面装饰`,token:t,offset:l.index}),r.push({type:`variable`,key:o,raw:t})}}else i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});o=l.index+t.length,l=c.exec(e)}return o<e.length&&r.push({type:`text`,value:e.slice(o)}),{tokens:r,issues:i}}function _(e){let t=l(e),n=new Set;return N(t,e=>{g(e).tokens.forEach(e=>{e.type===`variable`&&n.add(e.key)}),L(e).forEach(e=>n.add(e.key))}),n}function v(e,t){let n=l(e),r=[];return N(n,(e,n)=>{g(e,t,!0).issues.forEach((e,t)=>{r.push({type:`variable`,id:`${n}-${e.offset}-${t}`,variableKey:e.code===`DECORATION_VARIABLE_UNKNOWN`?e.token.slice(3,-2).trim():void 0,code:e.code,message:`${P(n)}:${e.message}`})})}),r}function y(e){if(!e.code?.startsWith(`DECORATION_`))return;let t=e.id.replace(/-\d+-\d+$/,``);if(/^(?:header|footer)\.slots\.(?:left|center|right)$/.test(t)||t===`watermark.text`)return t}function b(e,t,n){let r=l(e),i=e=>R(e,t,n);return r.header.slots=I(r.header.slots,i),r.footer.slots=I(r.footer.slots,i),r.watermark.text=i(r.watermark.text),r.header=E(r.header,a.header),r.footer=E(r.footer,a.footer),r}function x(e,t,n,r,i,a){if(e.type===`text`)return e.value;let o=h(r,i,a);if(e.type===`pageNumber`)return o.pageNumber;if(e.type===`totalPages`)return o.totalPages;let s=t.find(t=>t.key===e.key);return!s||s.type===`image`?e.raw:M(s,n?.[e.key])}function S(e){return i[e]??i.normal}function C(e){let t=E(e,a.header);return Math.max(80,t.offset+Math.ceil(t.fontSize*1.5)+20)}function w(e,t=1){return[`gd-contract-template-page`,f(e,t)?`has-contract-header`:``,p(e,t)?`has-contract-footer`:``].filter(Boolean).join(` `)}function T(e,t,n,r=[],i){let a=l(e),o=[];return m(a,t)&&o.push(A(a.watermark,r,i,t,n,a.pageNumbering.countFirstPage)),f(a,t)&&o.push(k(`header`,a.header,r,i,t,n,a.pageNumbering.countFirstPage)),p(a,t)&&o.push(k(`footer`,a.footer,r,i,t,n,a.pageNumbering.countFirstPage)),o.join(``)}function E(e,t){let n=z(e?.textAlign,t.textAlign),r=O(e,t,n),i=r[n].trim()?n:r.center.trim()?`center`:r.left.trim()?`left`:r.right.trim()?`right`:n;return{enabled:!!e?.enabled,text:r[i],textAlign:i,slots:r,showOnFirstPage:e?.showOnFirstPage!==!1,fontFamily:H(e?.fontFamily,t.fontFamily),fontSize:U(e?.fontSize,10,24,t.fontSize),fontWeight:e?.fontWeight===600?600:400,color:V(e?.color,t.color),offset:U(e?.offset,12,48,t.offset),divider:{enabled:!!e?.divider?.enabled,color:V(e?.divider?.color,t.divider.color)}}}function D(e){let t=a.watermark;return{enabled:!!e?.enabled,text:B(e?.text,t.text),fontSize:U(e?.fontSize,12,72,t.fontSize),color:V(e?.color,t.color),opacity:U(e?.opacity,.04,.5,t.opacity),rotation:U(e?.rotation,-90,90,t.rotation),showOnFirstPage:e?.showOnFirstPage!==!1,layout:e?.layout===`tiled`?`tiled`:`single`,density:e?.density===`sparse`||e?.density===`dense`?e.density:`normal`}}function O(e,t,n){if(e?.slots&&typeof e.slots==`object`)return{left:B(e.slots.left,``),center:B(e.slots.center,``),right:B(e.slots.right,``)};let r={left:``,center:``,right:``};return r[n]=B(e?.text,t.text),r}function k(t,n,r,i,a,o,s){let c=C(n),l=n.divider.enabled?`;border-${t===`header`?`bottom`:`top`}:1px solid ${e.escapeHtmlAttribute(n.divider.color)}`:``,u=`color:${e.escapeHtmlAttribute(n.color)};font-family:${e.escapeHtmlAttribute(n.fontFamily)};font-size:${n.fontSize}px;font-weight:${n.fontWeight};${t===`header`?`top`:`bottom`}:${n.offset}px${l}`,d=[`left`,`center`,`right`].map(e=>`<div class="gd-contract-template-page__decoration-slot is-${e}">${j(n.slots[e],r,i,a,o,s)}</div>`).join(``);return`<div class="gd-contract-template-page__${t}" data-decoration-offset="${n.offset}" data-decoration-font-size="${n.fontSize}" data-decoration-safe-padding="${c}" style="${u}">${d}</div>`}function A(t,n,r,i,a,o){let s=S(t.density),c=t.layout===`tiled`?s.columns*s.rows:1,l=j(t.text,n,r,i,a,o),u=Array.from({length:c},()=>`<div class="gd-contract-template-page__watermark-item" style="color:${e.escapeHtmlAttribute(t.color)};font-size:${t.fontSize}px;opacity:${t.opacity};transform:rotate(${t.rotation}deg)">${l}</div>`).join(``),d=t.layout===`tiled`?`--gd-watermark-columns:${s.columns};--gd-watermark-rows:${s.rows}`:``;return`<div class="gd-contract-template-page__watermark is-${t.layout} density-${t.density}" data-watermark-layout="${t.layout}" data-watermark-density="${t.density}" aria-hidden="true" style="${d}">${u}</div>`}function j(t,n,r,i,a,o){let s=h(i,a,o),c=new Map(n.map(e=>[e.key,e]));return g(t).tokens.map(t=>{if(t.type===`text`)return e.escapeHtmlText(t.value);if(t.type===`pageNumber`)return e.escapeHtmlText(s.pageNumber);if(t.type===`totalPages`)return e.escapeHtmlText(s.totalPages);let n=c.get(t.key);return r!==void 0&&n&&n.type!==`image`?e.escapeHtmlText(M(n,r[t.key])):`<span class="gd-contract-template-page__variable" data-template-variable="true" data-key="${e.escapeHtmlAttribute(t.key)}" data-label="${e.escapeHtmlAttribute(n?.label??t.key)}" data-variable-type="${e.escapeHtmlAttribute(n?.type??`text`)}">\${{${e.escapeHtmlText(t.key)}}}</span>`}).join(``)}function M(e,t){let r=t==null?e.defaultValue??``:String(t);return n.resolveTemplateVariablePresentation({type:e.type,defaultValue:r,placeholder:e.placeholder,format:e.format,precision:e.precision,useGrouping:e.useGrouping,checkedText:e.checkedText,uncheckedText:e.uncheckedText,style:e.style}).displayText||e.placeholder||e.label||e.key}function N(e,t){[`left`,`center`,`right`].forEach(n=>{t(e.header.slots[n],`header.slots.${n}`),t(e.footer.slots[n],`footer.slots.${n}`)}),t(e.watermark.text,`watermark.text`)}function P(e){return{"header.slots.left":`页眉左栏`,"header.slots.center":`页眉中栏`,"header.slots.right":`页眉右栏`,"footer.slots.left":`页脚左栏`,"footer.slots.center":`页脚中栏`,"footer.slots.right":`页脚右栏`,"watermark.text":`水印内容`}[e]??`页面装饰`}function F(e,t){return e.enabled&&Object.values(e.slots).some(e=>e.trim())&&(t!==1||e.showOnFirstPage)}function I(e,t){return{left:t(e.left),center:t(e.center),right:t(e.right)}}function L(e){let t=[],n=/\$\{\{([\s\S]*?)\}\}|\$\{\{\s*([A-Za-z][A-Za-z0-9_]{1,63})(?![A-Za-z0-9_])/g,r=n.exec(e);for(;r;){let i=(r[1]??r[2]??``).trim();i&&t.push({key:i,raw:r[0],start:r.index,end:r.index+r[0].length}),r=n.exec(e)}return t}function R(e,t,n){let r=L(e);if(!r.length)return e;let i=``,a=0;return r.forEach(r=>{i+=e.slice(a,r.start),i+=r.key===t?n?`\${{${n}}}`:``:r.raw,a=r.end}),i+e.slice(a)}function z(e,t){return e===`left`||e===`right`||e===`center`?e:t}function B(e,t){return(typeof e==`string`?e:t).slice(0,240)}function V(e,t){return typeof e==`string`&&o.test(e)?e:t}function H(e,t){return typeof e==`string`&&e.replace(/[";{}<>]/g,``).trim().slice(0,120)||t}function U(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}exports.CONTRACT_PAGE_BASE_PADDING=r,exports.buildPageDecorationClassNames=w,exports.buildPageDecorationsHtml=T,exports.collectPageDecorationVariableKeys=_,exports.createPageDecorationPreset=u,exports.getPageDecorationSafePadding=C,exports.getWatermarkDensityGrid=S,exports.hasEnabledPageFooter=p,exports.hasEnabledPageHeader=f,exports.hasEnabledPageWatermark=m,exports.normalizePageDecorations=l,exports.parsePageDecorationText=g,exports.resolvePageDecorationPreset=d,exports.resolvePageDecorationTokenText=x,exports.resolvePageDecorationValidationPath=y,exports.rewritePageDecorationVariableTokens=b,exports.validatePageDecorations=v;
|
|
1
|
+
const e=require(`../constants.cjs`),t=require(`./html.cjs`),n=require(`./template-variable-render.cjs`);var r={top:54,right:64,bottom:54,left:64},i={sparse:{columns:2,rows:3},normal:{columns:3,rows:4},dense:{columns:4,rows:6}},a={header:{enabled:!1,text:``,textAlign:`center`,slots:{left:``,center:``,right:``},showOnFirstPage:!0,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},footer:{enabled:!1,text:`第 {pageNumber} / {totalPages} 页`,textAlign:`center`,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``},showOnFirstPage:!0,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,fontSize:12,fontWeight:400,color:`#565b66`,offset:24,divider:{enabled:!1,color:`#d8dadd`}},watermark:{enabled:!1,text:``,fontSize:36,color:`#7a818b`,opacity:.14,rotation:-30,showOnFirstPage:!0,layout:`single`,density:`normal`},pageNumbering:{countFirstPage:!0}},o=/^#[\da-f]{6}$/i,s=/^[A-Za-z][A-Za-z0-9_]{1,63}$/,c=/\$\{\{[\s\S]*?\}\}|\$\{\{|\$\{[^{}]*\}|\{[A-Za-z][A-Za-z0-9]*\}/g;function l(e){return{header:E(e?.header,a.header),footer:E(e?.footer,a.footer),watermark:D(e?.watermark),pageNumbering:{countFirstPage:e?.pageNumbering?.countFirstPage!==!1}}}function u(e){let t=l();return e===`none`?t:(t.footer=E({...t.footer,enabled:!0,slots:{left:``,center:`第 {pageNumber} / {totalPages} 页`,right:``}},a.footer),(e===`internal-review`||e===`draft`)&&(t.watermark=D({...t.watermark,enabled:!0,text:e===`internal-review`?`内部审阅`:`草稿`,layout:`tiled`,density:`normal`})),t)}function d(e){let t=JSON.stringify(l(e));return[`none`,`page-number`,`internal-review`,`draft`].find(e=>JSON.stringify(u(e))===t)??`custom`}function f(e,t=1){let n=l(e).header;return F(n,t)}function p(e,t=1){let n=l(e).footer;return F(n,t)}function m(e,t=1){let n=l(e).watermark;return n.enabled&&!!n.text.trim()&&(t!==1||n.showOnFirstPage)}function h(e,t,n=!0){let r=Math.max(1,Math.floor(e||1)),i=Math.max(0,Math.floor(t||0));return{pageNumber:n?String(r):r===1?``:String(r-1),totalPages:String(n?i:Math.max(0,i-1))}}function g(e,t=[],n=!1){let r=[],i=[],a=new Map(t.map(e=>[e.key,e])),o=0;c.lastIndex=0;let l=c.exec(e);for(;l;){l.index>o&&r.push({type:`text`,value:e.slice(o,l.index)});let t=l[0];if(t===`{pageNumber}`)r.push({type:`pageNumber`});else if(t===`{totalPages}`)r.push({type:`totalPages`});else if(t.startsWith("${{")&&t.endsWith(`}}`)){let e=t.slice(3,-2),o=e.trim();if(e!==o||!s.test(o))i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰变量令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});else{let e=a.get(o);n&&!e?i.push({code:`DECORATION_VARIABLE_UNKNOWN`,message:`页面装饰引用了未知变量 ${o}`,token:t,offset:l.index}):e?.type===`image`&&i.push({code:`DECORATION_VARIABLE_IMAGE_UNSUPPORTED`,message:`图片变量 ${o} 不能用于页面装饰`,token:t,offset:l.index}),r.push({type:`variable`,key:o,raw:t})}}else i.push({code:`DECORATION_TOKEN_MALFORMED`,message:`页面装饰令牌 ${t} 格式错误`,token:t,offset:l.index}),r.push({type:`text`,value:t});o=l.index+t.length,l=c.exec(e)}return o<e.length&&r.push({type:`text`,value:e.slice(o)}),{tokens:r,issues:i}}function _(e){let t=l(e),n=new Set;return N(t,e=>{g(e).tokens.forEach(e=>{e.type===`variable`&&n.add(e.key)}),L(e).forEach(e=>n.add(e.key))}),n}function v(e,t){let n=l(e),r=[];return N(n,(e,n)=>{g(e,t,!0).issues.forEach((e,t)=>{r.push({type:`variable`,id:`${n}-${e.offset}-${t}`,variableKey:e.code===`DECORATION_VARIABLE_UNKNOWN`?e.token.slice(3,-2).trim():void 0,code:e.code,message:`${P(n)}:${e.message}`})})}),r}function y(e){if(!e.code?.startsWith(`DECORATION_`))return;let t=e.id.replace(/-\d+-\d+$/,``);if(/^(?:header|footer)\.slots\.(?:left|center|right)$/.test(t)||t===`watermark.text`)return t}function b(e,t,n){let r=l(e),i=e=>R(e,t,n);return r.header.slots=I(r.header.slots,i),r.footer.slots=I(r.footer.slots,i),r.watermark.text=i(r.watermark.text),r.header=E(r.header,a.header),r.footer=E(r.footer,a.footer),r}function x(e,t,n,r,i,a){if(e.type===`text`)return e.value;let o=h(r,i,a);if(e.type===`pageNumber`)return o.pageNumber;if(e.type===`totalPages`)return o.totalPages;let s=t.find(t=>t.key===e.key);return!s||s.type===`image`?e.raw:M(s,n?.[e.key])}function S(e){return i[e]??i.normal}function C(e){let t=E(e,a.header);return Math.max(80,t.offset+Math.ceil(t.fontSize*1.5)+20)}function w(e,t=1){return[`gd-contract-template-page`,f(e,t)?`has-contract-header`:``,p(e,t)?`has-contract-footer`:``].filter(Boolean).join(` `)}function T(e,t,n,r=[],i){let a=l(e),o=[];return m(a,t)&&o.push(A(a.watermark,r,i,t,n,a.pageNumbering.countFirstPage)),f(a,t)&&o.push(k(`header`,a.header,r,i,t,n,a.pageNumbering.countFirstPage)),p(a,t)&&o.push(k(`footer`,a.footer,r,i,t,n,a.pageNumbering.countFirstPage)),o.join(``)}function E(e,t){let n=z(e?.textAlign,t.textAlign),r=O(e,t,n),i=r[n].trim()?n:r.center.trim()?`center`:r.left.trim()?`left`:r.right.trim()?`right`:n;return{enabled:!!e?.enabled,text:r[i],textAlign:i,slots:r,showOnFirstPage:e?.showOnFirstPage!==!1,fontFamily:H(e?.fontFamily,t.fontFamily),fontSize:U(e?.fontSize,10,24,t.fontSize),fontWeight:e?.fontWeight===600?600:400,color:V(e?.color,t.color),offset:U(e?.offset,12,48,t.offset),divider:{enabled:!!e?.divider?.enabled,color:V(e?.divider?.color,t.divider.color)}}}function D(e){let t=a.watermark;return{enabled:!!e?.enabled,text:B(e?.text,t.text),fontSize:U(e?.fontSize,12,72,t.fontSize),color:V(e?.color,t.color),opacity:U(e?.opacity,.04,.5,t.opacity),rotation:U(e?.rotation,-90,90,t.rotation),showOnFirstPage:e?.showOnFirstPage!==!1,layout:e?.layout===`tiled`?`tiled`:`single`,density:e?.density===`sparse`||e?.density===`dense`?e.density:`normal`}}function O(e,t,n){if(e?.slots&&typeof e.slots==`object`)return{left:B(e.slots.left,``),center:B(e.slots.center,``),right:B(e.slots.right,``)};let r={left:``,center:``,right:``};return r[n]=B(e?.text,t.text),r}function k(e,n,r,i,a,o,s){let c=C(n),l=n.divider.enabled?`;border-${e===`header`?`bottom`:`top`}:1px solid ${t.escapeHtmlAttribute(n.divider.color)}`:``,u=`color:${t.escapeHtmlAttribute(n.color)};font-family:${t.escapeHtmlAttribute(n.fontFamily)};font-size:${n.fontSize}px;font-weight:${n.fontWeight};${e===`header`?`top`:`bottom`}:${n.offset}px${l}`,d=[`left`,`center`,`right`].map(e=>`<div class="gd-contract-template-page__decoration-slot is-${e}">${j(n.slots[e],r,i,a,o,s)}</div>`).join(``);return`<div class="gd-contract-template-page__${e}" data-decoration-offset="${n.offset}" data-decoration-font-size="${n.fontSize}" data-decoration-safe-padding="${c}" style="${u}">${d}</div>`}function A(e,n,r,i,a,o){let s=S(e.density),c=e.layout===`tiled`?s.columns*s.rows:1,l=j(e.text,n,r,i,a,o),u=Array.from({length:c},()=>`<div class="gd-contract-template-page__watermark-item" style="color:${t.escapeHtmlAttribute(e.color)};font-size:${e.fontSize}px;opacity:${e.opacity};transform:rotate(${e.rotation}deg)">${l}</div>`).join(``),d=e.layout===`tiled`?`--gd-watermark-columns:${s.columns};--gd-watermark-rows:${s.rows}`:``;return`<div class="gd-contract-template-page__watermark is-${e.layout} density-${e.density}" data-watermark-layout="${e.layout}" data-watermark-density="${e.density}" aria-hidden="true" style="${d}">${u}</div>`}function j(e,n,r,i,a,o){let s=h(i,a,o),c=new Map(n.map(e=>[e.key,e]));return g(e).tokens.map(e=>{if(e.type===`text`)return t.escapeHtmlText(e.value);if(e.type===`pageNumber`)return t.escapeHtmlText(s.pageNumber);if(e.type===`totalPages`)return t.escapeHtmlText(s.totalPages);let n=c.get(e.key);return r!==void 0&&n&&n.type!==`image`?t.escapeHtmlText(M(n,r[e.key])):`<span class="gd-contract-template-page__variable" data-template-variable="true" data-key="${t.escapeHtmlAttribute(e.key)}" data-label="${t.escapeHtmlAttribute(n?.label??e.key)}" data-variable-type="${t.escapeHtmlAttribute(n?.type??`text`)}">\${{${t.escapeHtmlText(e.key)}}}</span>`}).join(``)}function M(e,t){let r=t==null?e.defaultValue??``:String(t);return n.resolveTemplateVariablePresentation({type:e.type,defaultValue:r,placeholder:e.placeholder,format:e.format,precision:e.precision,useGrouping:e.useGrouping,checkedText:e.checkedText,uncheckedText:e.uncheckedText,style:e.style}).displayText||e.placeholder||e.label||e.key}function N(e,t){[`left`,`center`,`right`].forEach(n=>{t(e.header.slots[n],`header.slots.${n}`),t(e.footer.slots[n],`footer.slots.${n}`)}),t(e.watermark.text,`watermark.text`)}function P(e){return{"header.slots.left":`页眉左栏`,"header.slots.center":`页眉中栏`,"header.slots.right":`页眉右栏`,"footer.slots.left":`页脚左栏`,"footer.slots.center":`页脚中栏`,"footer.slots.right":`页脚右栏`,"watermark.text":`水印内容`}[e]??`页面装饰`}function F(e,t){return e.enabled&&Object.values(e.slots).some(e=>e.trim())&&(t!==1||e.showOnFirstPage)}function I(e,t){return{left:t(e.left),center:t(e.center),right:t(e.right)}}function L(e){let t=[],n=/\$\{\{([\s\S]*?)\}\}|\$\{\{\s*([A-Za-z][A-Za-z0-9_]{1,63})(?![A-Za-z0-9_])/g,r=n.exec(e);for(;r;){let i=(r[1]??r[2]??``).trim();i&&t.push({key:i,raw:r[0],start:r.index,end:r.index+r[0].length}),r=n.exec(e)}return t}function R(e,t,n){let r=L(e);if(!r.length)return e;let i=``,a=0;return r.forEach(r=>{i+=e.slice(a,r.start),i+=r.key===t?n?`\${{${n}}}`:``:r.raw,a=r.end}),i+e.slice(a)}function z(e,t){return e===`left`||e===`right`||e===`center`?e:t}function B(e,t){return(typeof e==`string`?e:t).slice(0,240)}function V(e,t){return typeof e==`string`&&o.test(e)?e:t}function H(e,t){return typeof e==`string`&&e.replace(/[";{}<>]/g,``).trim().slice(0,120)||t}function U(e,t,n,r){let i=Number(e);return Number.isFinite(i)?Math.min(n,Math.max(t,i)):r}exports.CONTRACT_PAGE_BASE_PADDING=r,exports.buildPageDecorationClassNames=w,exports.buildPageDecorationsHtml=T,exports.collectPageDecorationVariableKeys=_,exports.createPageDecorationPreset=u,exports.getPageDecorationSafePadding=C,exports.getWatermarkDensityGrid=S,exports.hasEnabledPageFooter=p,exports.hasEnabledPageHeader=f,exports.hasEnabledPageWatermark=m,exports.normalizePageDecorations=l,exports.parsePageDecorationText=g,exports.resolvePageDecorationPreset=d,exports.resolvePageDecorationTokenText=x,exports.resolvePageDecorationValidationPath=y,exports.rewritePageDecorationVariableTokens=b,exports.validatePageDecorations=v;
|