@guodun/antdv 1.4.4 → 1.4.6
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/ContractSigningLocation.vue.mjs +85 -85
- package/dist/es/components/contract-signing-location/src/template-source.mjs +63 -4
- package/dist/es/components/dept-selector/src/dept.mjs +170 -142
- package/dist/es/components/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/index.mjs +1 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.mjs +372 -185
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.mjs +59 -42
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.mjs +218 -85
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.mjs +5 -0
- package/dist/es/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.vue.mjs +97 -0
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.mjs +914 -853
- package/dist/es/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.mjs +550 -245
- package/dist/es/components/pro-contract-template-designer/src/composables/use-template-designer.mjs +214 -139
- package/dist/es/components/pro-contract-template-designer/src/extensions/template-variable.mjs +53 -35
- package/dist/es/components/pro-contract-template-designer/src/types.mjs +15 -2
- package/dist/es/components/pro-contract-template-designer/src/utils/advanced-controls.mjs +91 -0
- package/dist/es/components/pro-contract-template-designer/src/utils/template-renderer.mjs +96 -65
- package/dist/es/components/pro-contract-template-designer/src/utils/template-tool-icons.mjs +23 -16
- package/dist/es/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/es/components/pro-selector/src/components/org-tree.mjs +130 -89
- package/dist/es/components/pro-selector/src/components/user.mjs +34 -26
- package/dist/es/components/pro-selector/src/pro-user.mjs +86 -72
- package/dist/es/components/pro-selector/src/types.mjs +4 -1
- package/dist/es/components/pro-selector/src/utils/orgTree.mjs +5 -2
- package/dist/es/components/pro-selector-group/src/compoents/dept-tree.vue.mjs +92 -65
- package/dist/es/components/pro-selector-group/src/compoents/dept.vue.mjs +3 -3
- package/dist/es/components/pro-selector-group/src/compoents/role.vue.mjs +98 -73
- package/dist/es/components/pro-selector-group/src/compoents/select-box.vue.mjs +12 -9
- package/dist/es/components/pro-selector-group/src/compoents/user.vue.mjs +101 -72
- package/dist/es/components/pro-selector-group/src/hooks/useApi.mjs +39 -22
- package/dist/es/components/pro-selector-group/src/index.vue.mjs +105 -83
- package/dist/es/components/pro-selector-group/src/utils/index.mjs +36 -0
- package/dist/es/components/role-selector/src/role.mjs +134 -120
- package/dist/es/index.mjs +50 -49
- package/dist/lib/components/contract-signing-location/src/ContractSigningLocation.vue.cjs +1 -1
- package/dist/lib/components/contract-signing-location/src/template-source.cjs +1 -1
- package/dist/lib/components/dept-selector/src/dept.cjs +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/ContractTemplateDesignerInspector.vue.cjs +2 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.vue.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs +4 -4
- package/dist/lib/components/pro-contract-template-designer/src/extensions/template-variable.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/types.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/src/utils/advanced-controls.cjs +1 -0
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-renderer.cjs +3 -3
- package/dist/lib/components/pro-contract-template-designer/src/utils/template-tool-icons.cjs +1 -1
- package/dist/lib/components/pro-contract-template-designer/style/index.css +1 -1
- package/dist/lib/components/pro-selector/src/components/org-tree.cjs +1 -1
- package/dist/lib/components/pro-selector/src/components/user.cjs +1 -1
- package/dist/lib/components/pro-selector/src/pro-user.cjs +1 -1
- package/dist/lib/components/pro-selector/src/types.cjs +1 -1
- package/dist/lib/components/pro-selector/src/utils/orgTree.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/compoents/dept-tree.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/compoents/dept.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/compoents/role.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/compoents/select-box.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/compoents/user.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/hooks/useApi.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/index.vue.cjs +1 -1
- package/dist/lib/components/pro-selector-group/src/utils/index.cjs +1 -0
- package/dist/lib/components/role-selector/src/role.cjs +1 -1
- package/dist/lib/index.cjs +1 -1
- package/dist/theme/dept-selector.css +1 -1
- package/dist/theme/icon.css +1 -1
- package/dist/theme/index.css +1 -1
- package/dist/theme/pro-selector-group.css +1 -1
- package/dist/theme/pro-selector.css +1 -1
- package/dist/theme/role-selector.css +1 -1
- package/dist/types/components/contract-signing-location/src/ContractSigningLocation.vue.d.ts +3 -3
- package/dist/types/components/pro-contract-template-designer/index.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerInspector.vue.d.ts +1 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateDesignerWorkspaceHeader.vue.d.ts +3 -0
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.d.ts +7 -1
- package/dist/types/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.vue.d.ts +14 -0
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.d.ts +13 -1
- package/dist/types/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.d.ts +11 -1
- package/dist/types/components/pro-contract-template-designer/src/composables/use-template-designer.d.ts +4 -0
- package/dist/types/components/pro-contract-template-designer/src/extensions/template-variable.d.ts +11 -1
- package/dist/types/components/pro-contract-template-designer/src/types.d.ts +131 -2
- package/dist/types/components/pro-contract-template-designer/src/utils/advanced-controls.d.ts +15 -0
- package/dist/types/components/pro-contract-template-designer/src/utils/template-renderer.d.ts +10 -2
- package/dist/types/components/pro-selector/index.d.ts +9 -0
- package/dist/types/components/pro-selector/src/components/user.d.ts +9 -0
- package/dist/types/components/pro-selector/src/types.d.ts +2 -0
- package/dist/types/components/pro-selector/src/utils/orgTree.d.ts +4 -1
- package/dist/types/components/pro-selector-group/src/compoents/select-box.vue.d.ts +4 -4
- package/dist/types/components/pro-selector-group/src/hooks/useApi.d.ts +6 -1
- package/dist/types/components/pro-selector-group/src/utils/index.d.ts +8 -0
- package/package.json +5 -3
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateRendererField.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./composables/use-template-designer.cjs`),n=require(`./utils/image-url.cjs`),r=require(`./utils/template-tool-icons.cjs`);let i=require(`vue`),a=require(`ant-design-vue`),o=require(`@ant-design/icons-vue`);var s={class:`gd-contract-template-renderer__field-head`},c={class:`gd-contract-template-renderer__field-title`},l={class:`gd-contract-template-renderer__field-type-icon`,"aria-hidden":`true`},u={class:`gd-contract-template-renderer__field-title-text`},d={key:0,class:`gd-contract-template-renderer__field-required`,"aria-label":`必填`},f={key:4,class:`gd-contract-template-renderer__field-checkbox`},p={key:5,class:`gd-contract-template-renderer__image-field`},m={key:0,class:`gd-contract-template-renderer__image-preview`},h={key:7,class:`gd-contract-template-renderer__field-errors`},g=(0,i.defineComponent)({name:`ContractTemplateRendererField`,__name:`ContractTemplateRendererField`,props:{variable:{},value:{type:[String,Number,Boolean]},errors:{},active:{type:Boolean},readonly:{type:Boolean},disabled:{type:Boolean}},emits:[`updateValue`,`focusVariable`],setup(g,{emit:_}){let v=g,y=_,b=(0,i.computed)(()=>v.readonly||v.disabled),x=(0,i.computed)(()=>v.value===void 0||v.value===null?``:String(v.value)),S=(0,i.computed)(()=>{if(v.value===void 0||v.value===null||v.value===``)return;let e=Number(v.value);return Number.isFinite(e)?e:void 0}),C=(0,i.computed)(()=>v.value===!0||v.value===`true`||v.value===`1`||v.value===`是`||v.value===`已选`),w=(0,i.computed)(()=>v.errors.length>0),T=(0,i.computed)(()=>x.value&&n.isSafeContractImageUrl(x.value)?x.value:``),E=(0,i.computed)(()=>e.isContractTemplateFieldType(v.variable.type)?v.variable.type:`text`),D=(0,i.computed)(()=>r.resolveFieldTypeIcon(E.value)),O=(0,i.computed)(()=>t.getFieldOption(E.value).label);function k(e){y(`updateValue`,e)}function A(e){if(e===null||e===``){y(`updateValue`,void 0);return}let t=Number(e);y(`updateValue`,Number.isFinite(t)?t:void 0)}function j(e){y(`updateValue`,e)}function M(e){y(`updateValue`,typeof e==`string`?e:``)}return(e,t)=>((0,i.openBlock)(),(0,i.createElementBlock)(`section`,{class:(0,i.normalizeClass)([`gd-contract-template-renderer__field`,{"is-active":g.active,"has-error":w.value}]),onClick:t[1]||=e=>y(`focusVariable`),onFocusin:t[2]||=e=>y(`focusVariable`)},[(0,i.createElementVNode)(`div`,s,[(0,i.createElementVNode)(`strong`,null,[(0,i.createElementVNode)(`span`,c,[(0,i.createVNode)((0,i.unref)(a.Tooltip),{title:O.value},{default:(0,i.withCtx)(()=>[(0,i.createElementVNode)(`span`,l,[((0,i.openBlock)(),(0,i.createBlock)((0,i.resolveDynamicComponent)(D.value)))])]),_:1},8,[`title`]),(0,i.createElementVNode)(`span`,u,[(0,i.createTextVNode)((0,i.toDisplayString)(g.variable.label||g.variable.key)+` `,1),g.variable.required?((0,i.openBlock)(),(0,i.createElementBlock)(`span`,d,`*`)):(0,i.createCommentVNode)(``,!0)])])]),(0,i.createElementVNode)(`small`,null,(0,i.toDisplayString)(g.variable.key),1)]),g.variable.type===`text`&&g.variable.multiline?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.Input).TextArea,{key:0,value:x.value,rows:g.variable.rows||3,placeholder:g.variable.placeholder||``,disabled:b.value,"onUpdate:value":k},null,8,[`value`,`rows`,`placeholder`,`disabled`])):!g.variable.type||g.variable.type===`text`?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.Input),{key:1,value:x.value,placeholder:g.variable.placeholder||``,disabled:b.value,"onUpdate:value":k},null,8,[`value`,`placeholder`,`disabled`])):g.variable.type===`date`?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.DatePicker),{key:2,"value-format":`YYYY-MM-DD`,value:x.value,placeholder:g.variable.placeholder||``,disabled:b.value,"onUpdate:value":M},null,8,[`value`,`placeholder`,`disabled`])):g.variable.type===`number`?((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.InputNumber),{key:3,value:S.value,precision:g.variable.precision,placeholder:g.variable.placeholder||``,disabled:b.value,"onUpdate:value":A},null,8,[`value`,`precision`,`placeholder`,`disabled`])):g.variable.type===`checkbox`?((0,i.openBlock)(),(0,i.createElementBlock)(`label`,f,[(0,i.createVNode)((0,i.unref)(a.Checkbox),{checked:C.value,disabled:b.value,"onUpdate:checked":j},null,8,[`checked`,`disabled`]),(0,i.createElementVNode)(`span`,null,(0,i.toDisplayString)(C.value?g.variable.checkedText||`已选`:g.variable.uncheckedText||`未选`),1)])):g.variable.type===`image`?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,p,[(0,i.createVNode)((0,i.unref)(a.Input),{value:x.value,placeholder:g.variable.placeholder||`请输入图片 URL`,disabled:b.value,"onUpdate:value":k},null,8,[`value`,`placeholder`,`disabled`]),(0,i.createVNode)((0,i.unref)(a.Tooltip),{title:`清除图片地址`},{default:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(a.Button),{"aria-label":`清除图片地址`,disabled:b.value||!x.value,onClick:t[0]||=(0,i.withModifiers)(e=>k(``),[`stop`])},{icon:(0,i.withCtx)(()=>[(0,i.createVNode)((0,i.unref)(o.DeleteOutlined))]),_:1},8,[`disabled`])]),_:1}),T.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,m,[(0,i.createVNode)((0,i.unref)(a.Image),{src:T.value,alt:g.variable.label||g.variable.key},null,8,[`src`,`alt`]),(0,i.createElementVNode)(`span`,null,[(0,i.createVNode)((0,i.unref)(o.EyeOutlined)),t[3]||=(0,i.createTextVNode)(` 点击图片预览`,-1)])])):(0,i.createCommentVNode)(``,!0)])):((0,i.openBlock)(),(0,i.createBlock)((0,i.unref)(a.Input),{key:6,value:x.value,placeholder:g.variable.placeholder||``,disabled:b.value,"onUpdate:value":k},null,8,[`value`,`placeholder`,`disabled`])),w.value?((0,i.openBlock)(),(0,i.createElementBlock)(`div`,h,[((0,i.openBlock)(!0),(0,i.createElementBlock)(i.Fragment,null,(0,i.renderList)(g.errors,e=>((0,i.openBlock)(),(0,i.createElementBlock)(`span`,{key:`${e.id}-${e.message}`},(0,i.toDisplayString)(e.message),1))),128))])):(0,i.createCommentVNode)(``,!0)],34))}});exports.default=g;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../pro-selector-group/index.cjs`),t=require(`./types.cjs`),n=require(`./utils/advanced-controls.cjs`),r=require(`./composables/use-template-designer.cjs`),i=require(`./utils/image-url.cjs`),a=require(`./utils/template-tool-icons.cjs`);let o=require(`vue`),s=require(`ant-design-vue`),c=require(`@ant-design/icons-vue`);var l={class:`gd-contract-template-renderer__field-head`},u={class:`gd-contract-template-renderer__field-title`},d={class:`gd-contract-template-renderer__field-type-icon`,"aria-hidden":`true`},f={class:`gd-contract-template-renderer__field-title-text`},p={key:0,class:`gd-contract-template-renderer__field-required`,"aria-label":`必填`},m={key:4,class:`gd-contract-template-renderer__selector-field`},h={key:1,class:`gd-contract-template-renderer__selector-placeholder`,role:`status`},g={key:9,class:`gd-contract-template-renderer__field-checkbox`},_={key:10,class:`gd-contract-template-renderer__image-field`},v={key:0,class:`gd-contract-template-renderer__image-preview`},y={key:12,class:`gd-contract-template-renderer__field-errors`},b=(0,o.defineComponent)({name:`ContractTemplateRendererField`,__name:`ContractTemplateRendererField`,props:{variable:{},value:{type:[String,Number,Boolean,Object,Array,null]},errors:{},active:{type:Boolean},readonly:{type:Boolean},disabled:{type:Boolean},options:{},loading:{type:Boolean},loadError:{},registration:{},selectorHttp:{},selectorUrlPrefix:{}},emits:[`updateValue`,`focusVariable`],setup(b,{emit:x}){let S=b,C=x,w=(0,o.computed)(()=>S.readonly||S.disabled),T=(0,o.computed)(()=>S.value===void 0||S.value===null?``:String(S.value)),E=(0,o.computed)(()=>n.formatContractTemplateRenderValue(S.value)),D=(0,o.computed)(()=>{if(S.value===void 0||S.value===null||S.value===``)return;let e=Number(S.value);return Number.isFinite(e)?e:void 0}),O=(0,o.computed)(()=>S.value===!0||S.value===`true`||S.value===`1`||S.value===`是`||S.value===`已选`),k=(0,o.computed)(()=>S.errors.length>0),A=(0,o.computed)(()=>T.value&&i.isSafeContractImageUrl(T.value)?T.value:``),j=(0,o.computed)(()=>t.isContractTemplateFieldType(S.variable.type)?S.variable.type:`text`),M=(0,o.computed)(()=>a.resolveFieldTypeIcon(j.value)),N=(0,o.computed)(()=>r.getFieldOption(j.value).label),P=(0,o.ref)(!1),F=(0,o.computed)(()=>S.variable.type===`user-selector`?`user`:S.variable.type===`role-selector`?`role`:`dept`),I=(0,o.computed)(()=>(Array.isArray(S.value)?S.value:S.value?[S.value]:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return[{value:String(t.value),label:t.label,type:F.value}]})),L=(0,o.computed)(()=>(S.options??S.variable.options??[]).map(e=>({...e,value:e.value,label:e.label}))),R=(0,o.computed)(()=>{if(Array.isArray(S.value))return S.value.map(e=>e.value);if(S.value&&typeof S.value==`object`)return S.value.value}),z=(0,o.computed)(()=>({modelValue:S.value,variable:S.variable,config:n.normalizeContractTemplateJsonObject(S.variable.componentConfig),readonly:S.readonly,disabled:w.value,options:L.value,loading:!!S.loading,error:S.loadError,...S.registration?.resolveProps?.({variable:S.variable,config:n.normalizeContractTemplateJsonObject(S.variable.componentConfig)})??{}}));function B(e){C(`updateValue`,e)}function V(e){if(e===null||e===``){C(`updateValue`,void 0);return}let t=Number(e);C(`updateValue`,Number.isFinite(t)?t:void 0)}function H(e){C(`updateValue`,e)}function U(e){let t=(e==null?[]:Array.isArray(e)?e:[e]).flatMap(e=>{let t=e&&typeof e==`object`&&`value`in e?e.value:e,n=L.value.find(e=>e.value===t);return n?[{value:n.value,label:n.label,type:n.type||j.value}]:[]});C(`updateValue`,S.variable.multiple&&j.value===`select`?t:t[0])}function W(e){C(`updateValue`,n.normalizeContractTemplateSelectionValues(e,j.value,!!S.variable.multiple))}function G(e){let t={variable:S.variable,config:n.normalizeContractTemplateJsonObject(S.variable.componentConfig)};C(`updateValue`,S.registration?.normalizeValue?S.registration.normalizeValue(e,t):e)}function K(e){C(`updateValue`,typeof e==`string`?e:``)}return(t,n)=>((0,o.openBlock)(),(0,o.createElementBlock)(`section`,{class:(0,o.normalizeClass)([`gd-contract-template-renderer__field`,{"is-active":b.active,"has-error":k.value}]),onClick:n[3]||=e=>C(`focusVariable`),onFocusin:n[4]||=e=>C(`focusVariable`)},[(0,o.createElementVNode)(`div`,l,[(0,o.createElementVNode)(`strong`,null,[(0,o.createElementVNode)(`span`,u,[(0,o.createVNode)((0,o.unref)(s.Tooltip),{title:N.value},{default:(0,o.withCtx)(()=>[(0,o.createElementVNode)(`span`,d,[((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(M.value)))])]),_:1},8,[`title`]),(0,o.createElementVNode)(`span`,f,[(0,o.createTextVNode)((0,o.toDisplayString)(b.variable.label||b.variable.key)+` `,1),b.variable.required?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,p,`*`)):(0,o.createCommentVNode)(``,!0)])])]),(0,o.createElementVNode)(`small`,null,(0,o.toDisplayString)(b.variable.key),1)]),b.variable.type===`text`&&b.variable.multiline?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Input).TextArea,{key:0,value:T.value,rows:b.variable.rows||3,placeholder:b.variable.placeholder||``,disabled:w.value,"onUpdate:value":B},null,8,[`value`,`rows`,`placeholder`,`disabled`])):!b.variable.type||b.variable.type===`text`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Input),{key:1,value:T.value,placeholder:b.variable.placeholder||``,disabled:w.value,"onUpdate:value":B},null,8,[`value`,`placeholder`,`disabled`])):b.variable.type===`select`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Select),{key:2,value:R.value,options:L.value,mode:b.variable.multiple?`multiple`:void 0,placeholder:b.variable.placeholder||`请选择`,disabled:w.value,loading:b.loading,"allow-clear":``,"onUpdate:value":U},null,8,[`value`,`options`,`mode`,`placeholder`,`disabled`,`loading`])):b.variable.type===`radio`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.RadioGroup),{key:3,value:R.value,disabled:w.value,"onUpdate:value":U},{default:(0,o.withCtx)(()=>[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(L.value,e=>((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Radio),{key:e.value,value:e.value,disabled:e.disabled},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(e.label),1)]),_:2},1032,[`value`,`disabled`]))),128))]),_:1},8,[`value`,`disabled`])):b.variable.type===`user-selector`||b.variable.type===`dept-selector`||b.variable.type===`role-selector`||b.variable.type===`org-selector`?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,m,[b.registration?((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(b.registration?.component),(0,o.mergeProps)({key:0},z.value,{"onUpdate:modelValue":G}),null,16)):b.variable.type===`org-selector`?((0,o.openBlock)(),(0,o.createElementBlock)(`span`,h,(0,o.toDisplayString)(E.value||b.variable.placeholder||`组织架构占位(由宿主提供组件)`),1)):((0,o.openBlock)(),(0,o.createElementBlock)(o.Fragment,{key:2},[(0,o.createVNode)((0,o.unref)(s.Button),{disabled:w.value||!b.selectorHttp,title:b.selectorHttp?void 0:`请注入 selectorHttp 后使用内置选择器`,onClick:n[0]||=(0,o.withModifiers)(e=>P.value=!0,[`stop`])},{default:(0,o.withCtx)(()=>[(0,o.createTextVNode)((0,o.toDisplayString)(E.value||b.variable.placeholder||`请选择`),1)]),_:1},8,[`disabled`,`title`]),(0,o.createVNode)((0,o.unref)(e.default),{"model-value":I.value,visible:P.value,"onUpdate:visible":n[1]||=e=>P.value=e,http:b.selectorHttp,"url-prefix":b.selectorUrlPrefix,type:F.value,"is-single":!0,"hide-slot":``,"onUpdate:modelValue":W},null,8,[`model-value`,`visible`,`http`,`url-prefix`,`type`])],64))])):b.variable.type===`custom`&&b.registration?((0,o.openBlock)(),(0,o.createBlock)((0,o.resolveDynamicComponent)(b.registration?.component),(0,o.mergeProps)({key:5},z.value,{"onUpdate:modelValue":G}),null,16)):b.variable.type===`custom`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Alert),{key:6,type:`warning`,"show-icon":``,message:`未注册自定义控件 ${b.variable.componentKey||`(空)`}`},null,8,[`message`])):b.variable.type===`date`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.DatePicker),{key:7,"value-format":`YYYY-MM-DD`,value:T.value,placeholder:b.variable.placeholder||``,disabled:w.value,"onUpdate:value":K},null,8,[`value`,`placeholder`,`disabled`])):b.variable.type===`number`?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.InputNumber),{key:8,value:D.value,precision:b.variable.precision,placeholder:b.variable.placeholder||``,disabled:w.value,"onUpdate:value":V},null,8,[`value`,`precision`,`placeholder`,`disabled`])):b.variable.type===`checkbox`?((0,o.openBlock)(),(0,o.createElementBlock)(`label`,g,[(0,o.createVNode)((0,o.unref)(s.Checkbox),{checked:O.value,disabled:w.value,"onUpdate:checked":H},null,8,[`checked`,`disabled`]),(0,o.createElementVNode)(`span`,null,(0,o.toDisplayString)(O.value?b.variable.checkedText||`已选`:b.variable.uncheckedText||`未选`),1)])):b.variable.type===`image`?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,_,[(0,o.createVNode)((0,o.unref)(s.Input),{value:T.value,placeholder:b.variable.placeholder||`请输入图片 URL`,disabled:w.value,"onUpdate:value":B},null,8,[`value`,`placeholder`,`disabled`]),(0,o.createVNode)((0,o.unref)(s.Tooltip),{title:`清除图片地址`},{default:(0,o.withCtx)(()=>[(0,o.createVNode)((0,o.unref)(s.Button),{"aria-label":`清除图片地址`,disabled:w.value||!T.value,onClick:n[2]||=(0,o.withModifiers)(e=>B(``),[`stop`])},{icon:(0,o.withCtx)(()=>[(0,o.createVNode)((0,o.unref)(c.DeleteOutlined))]),_:1},8,[`disabled`])]),_:1}),A.value?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,v,[(0,o.createVNode)((0,o.unref)(s.Image),{src:A.value,alt:b.variable.label||b.variable.key},null,8,[`src`,`alt`]),(0,o.createElementVNode)(`span`,null,[(0,o.createVNode)((0,o.unref)(c.EyeOutlined)),n[5]||=(0,o.createTextVNode)(` 点击图片预览`,-1)])])):(0,o.createCommentVNode)(``,!0)])):((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Input),{key:11,value:T.value,placeholder:b.variable.placeholder||``,disabled:w.value,"onUpdate:value":B},null,8,[`value`,`placeholder`,`disabled`])),k.value?((0,o.openBlock)(),(0,o.createElementBlock)(`div`,y,[((0,o.openBlock)(!0),(0,o.createElementBlock)(o.Fragment,null,(0,o.renderList)(b.errors,e=>((0,o.openBlock)(),(0,o.createElementBlock)(`span`,{key:`${e.id}-${e.message}`},(0,o.toDisplayString)(e.message),1))),128))])):(0,o.createCommentVNode)(``,!0),b.loadError?((0,o.openBlock)(),(0,o.createBlock)((0,o.unref)(s.Alert),{key:13,type:`warning`,"show-icon":``,message:b.loadError},null,8,[`message`])):(0,o.createCommentVNode)(``,!0)],34))}});exports.default=b;
|
package/dist/lib/components/pro-contract-template-designer/src/ContractTemplateVariableDataModal.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=require(`./ContractTemplateVariableDataModal.vue.cjs`).default;exports.default=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`vue`),t=require(`ant-design-vue`),n=require(`@ant-design/icons-vue`);var r={class:`gd-contract-template-designer__variable-data-grid`},i={class:`gd-contract-template-designer__variable-data-section`},a={class:`gd-contract-template-designer__variable-data-section-head`},o={class:`gd-contract-template-designer__variable-data-code`},s={key:0,class:`gd-contract-template-designer__variable-data-error`},c={class:`gd-contract-template-designer__variable-data-section`},l={class:`gd-contract-template-designer__variable-data-section-head`},u={class:`gd-contract-template-designer__variable-data-code`},d={key:0,class:`gd-contract-template-designer__variable-data-error`},f=(0,e.defineComponent)({__name:`ContractTemplateVariableDataModal`,props:{open:{type:Boolean},data:{},fileName:{}},emits:[`update:open`,`cancel`],setup(f,{emit:p}){let m=f,h=p,g=(0,e.ref)(),_=(0,e.ref)(),v=(0,e.ref)(``),y=(0,e.ref)(),b=(0,e.computed)(()=>JSON.stringify(m.data.values,null,2)),x=(0,e.computed)(()=>JSON.stringify(m.data.variables,null,2));(0,e.watch)(()=>m.open,e=>{e||(g.value=void 0,_.value=void 0,v.value=``,y.value=void 0)});async function S(e){let n=e===`values`?b.value:x.value;g.value=e,_.value=void 0,v.value=``,y.value=void 0;try{if(typeof navigator>`u`||!navigator.clipboard?.writeText)throw Error(`当前浏览器未授权剪贴板操作`);await navigator.clipboard.writeText(n),_.value=e,t.message.success(e===`values`?`控件值对象已复制`:`控件变量定义已复制`)}catch(n){let r=n instanceof Error?n.message:`未知错误`;v.value=`复制失败:${r}`,y.value=e,t.message.error(`复制失败:${r}`)}finally{g.value=void 0}}return(p,m)=>((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.Modal),{open:f.open,title:f.fileName?`控件变量 · ${f.fileName}`:`控件变量`,width:`min(1100px, calc(100vw - 48px))`,centered:``,footer:null,"wrap-class-name":`gd-contract-template-designer__variable-data-modal`,"onUpdate:open":m[2]||=e=>h(`update:open`,e),onCancel:m[3]||=e=>h(`cancel`)},{default:(0,e.withCtx)(()=>[(0,e.createElementVNode)(`div`,r,[(0,e.createElementVNode)(`section`,i,[(0,e.createElementVNode)(`div`,a,[m[4]||=(0,e.createElementVNode)(`div`,null,[(0,e.createElementVNode)(`strong`,null,`接口请求值`),(0,e.createElementVNode)(`small`,null,`按控件 key 生成,可直接作为请求 body`)],-1),(0,e.createVNode)((0,e.unref)(t.Tooltip),{title:`复制接口请求值`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(t.Button),{size:`small`,class:`gd-contract-template-designer__icon-button`,loading:g.value===`values`,"aria-label":`复制接口请求值`,onClick:m[0]||=e=>S(`values`)},{default:(0,e.withCtx)(()=>[_.value===`values`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.CheckOutlined),{key:1,"aria-hidden":`true`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.CopyOutlined),{key:0,"aria-hidden":`true`}))]),_:1},8,[`loading`])]),_:1})]),(0,e.createElementVNode)(`pre`,o,(0,e.toDisplayString)(b.value),1),v.value&&y.value===`values`?((0,e.openBlock)(),(0,e.createElementBlock)(`small`,s,(0,e.toDisplayString)(v.value),1)):(0,e.createCommentVNode)(``,!0)]),(0,e.createElementVNode)(`section`,c,[(0,e.createElementVNode)(`div`,l,[m[5]||=(0,e.createElementVNode)(`div`,null,[(0,e.createElementVNode)(`strong`,null,`控件变量定义`),(0,e.createElementVNode)(`small`,null,`当前文件完整 variables 数组`)],-1),(0,e.createVNode)((0,e.unref)(t.Tooltip),{title:`复制控件变量定义`},{default:(0,e.withCtx)(()=>[(0,e.createVNode)((0,e.unref)(t.Button),{size:`small`,class:`gd-contract-template-designer__icon-button`,loading:g.value===`variables`,"aria-label":`复制控件变量定义`,onClick:m[1]||=e=>S(`variables`)},{default:(0,e.withCtx)(()=>[_.value===`variables`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.CheckOutlined),{key:1,"aria-hidden":`true`})):((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(n.CopyOutlined),{key:0,"aria-hidden":`true`}))]),_:1},8,[`loading`])]),_:1})]),(0,e.createElementVNode)(`pre`,u,(0,e.toDisplayString)(x.value),1),v.value&&y.value===`variables`?((0,e.openBlock)(),(0,e.createElementBlock)(`small`,d,(0,e.toDisplayString)(v.value),1)):(0,e.createCommentVNode)(``,!0)])])]),_:1},8,[`open`,`title`]))}});exports.default=f;
|
package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateDesigner.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./constants.cjs`),t=require(`./utils/page-decorations.cjs`),n=require(`./types.cjs`),r=require(`./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;
|
|
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(`./utils/template-renderer.cjs`),s=require(`./composables/use-fit-width-zoom.cjs`),c=require(`./utils/content-image.cjs`),ee=require(`./utils/context-variable.cjs`),te=require(`./DesignerPage.cjs`),ne=require(`./TableContextMenu.cjs`),re=require(`./ContractTemplateDesignerWorkspaceHeader.cjs`),ie=require(`./ContractTemplateDesignerToolbar.cjs`),ae=require(`./ContractTemplateTextContextMenu.cjs`),oe=require(`./ContractTemplateTextBubbleMenu.cjs`),se=require(`./ContractTemplateImageContextMenu.cjs`),ce=require(`./ContractTemplatePreviewModal.cjs`),le=require(`./ContractTemplateSubmitDataModal.cjs`),ue=require(`./ContractTemplateVariableDataModal.cjs`),de=require(`./composables/use-template-draft-cache.cjs`),fe=require(`./composables/use-auto-pagination.cjs`),pe=require(`./composables/use-designer-files.cjs`),l=require(`./composables/use-template-files.cjs`),me=require(`./composables/use-draft-cache-session.cjs`),u=require(`./composables/use-signing-placement-editor.cjs`),he=require(`./utils/template-tool-icons.cjs`),ge=require(`./ContractTemplateFileBar.cjs`),_e=require(`./ContractTemplateDesignerSidebar.cjs`),ve=require(`./ContractTemplateDesignerInspector.cjs`),ye=require(`./ContractTemplatePageDecorationsStudio.cjs`),d=require(`./utils/serialize-fingerprint.cjs`),be=require(`./utils/editor-state.cjs`),xe=require(`./utils/context-menu-viewport.cjs`);let f=require(`vue`),Se=require(`ant-design-vue`),Ce=require(`@vueuse/core`),we=require(`@ant-design/icons-vue`);var Te={key:2,class:`gd-contract-template-designer__validation`},Ee={key:0,class:`gd-contract-template-designer__validation-list`},De=[`onClick`],Oe={class:`gd-contract-template-designer__sr-status`,"aria-live":`polite`},ke=.5,Ae=1.5,je=.1,Me=120,Ne=128,Pe=108,Fe=48,Ie=24,Le=10,Re=48,ze=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},showAdvancedChoiceControls:{type:Boolean,default:!1},showBuiltinSelectorControls:{type:Boolean,default:!1},showCustomControls:{type:Boolean,default:!1},defaultVariableStyle:{default:()=>i.DEFAULT_FIELD_STYLE},fontFamilies:{default:void 0},fontFamilyMode:{default:`append`},showSubmitDataViewer:{type:Boolean,default:!0},showVariableDataViewer:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},showSigningPlacementTools:{type:Boolean,default:!1},enableDraftCache:{type:Boolean,default:!0},draftCacheKey:{default:de.DEFAULT_DRAFT_CACHE_KEY},draftCacheInterval:{default:de.DEFAULT_DRAFT_CACHE_INTERVAL},draftCacheMaxBytes:{default:de.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:Be,emit:Ve}){let m=p,h=Ve,He=(0,f.computed)(()=>({height:typeof m.height==`number`?`${m.height}px`:m.height})),Ue=(0,f.ref)(),We=(0,f.ref)(),Ge=(0,f.ref)(),Ke=(0,f.ref)(),qe=(0,f.ref)(),Je=`gd-contract-template-page-decorations-studio-${(0,f.useId)()}`,Ye=`gd-contract-template-workspace-chrome-${(0,f.useId)()}`,Xe=(0,f.ref)(),Ze=(0,f.ref)();function Qe(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 $e(e,t){return Object.fromEntries(e.map((e,n)=>[e.id,Qe(t?.[n]?.template??e.template)]))}let et=``,tt=``,nt=(0,f.ref)(!1),g=(0,f.computed)(()=>nt.value||Array.isArray(m.files)),rt=l.normalizeContractTemplateFiles(m.files,m.modelValue,m.pageSize),it=l.constrainContractTemplateFiles(rt,m.pageSizeOptions),at=g.value?it.files:rt,ot=l.resolveContractTemplateActiveFileId(at,m.activeFileId),_=(0,f.ref)(at),v=(0,f.ref)(ot),st=at.find(e=>e.id===ot)??at[0],y=(0,f.ref)($e(at,Array.isArray(m.files)?m.files:m.modelValue?[{template:m.modelValue}]:void 0)),b=(0,f.ref)(y.value[ot]??Qe(st?.template)),ct=i.normalizeTemplateValue(st?.template??m.modelValue,m.pageSize),lt=i.constrainTemplatePageSizes(ct,m.pageSizeOptions),x=(0,f.ref)(lt.value);if(g.value){if(_.value=l.replaceContractTemplateFile(_.value,v.value,lt.value),d.serializeFingerprint(_.value)!==d.serializeFingerprint(rt)){let e=l.cloneContractTemplateFiles(_.value);et=d.serializeFingerprint(e),h(`update:files`,e),h(`files-change`,l.cloneContractTemplateFiles(e))}}else m.modelValue&&d.serializeFingerprint(lt.value)!==d.serializeFingerprint(ct)&&(tt=d.serializeFingerprint(lt.value),h(`update:modelValue`,i.cloneTemplateValue(lt.value)),h(`change`,i.cloneTemplateValue(lt.value)),Dr(lt.resizedSigningPlacementIds,lt.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,ut=(0,f.ref)(!1),dt=(0,f.ref)(``),ft=(0,f.ref)(!1),pt=(0,f.ref)(),mt=(0,f.ref)(),ht=(0,f.ref)(``),gt=(0,f.ref)(!1),_t=(0,f.ref)(``),vt=(0,f.ref)(!1),yt=(0,f.ref)({values:{},variables:[]}),O=(0,f.ref)(1),k=(0,f.ref)(!1),bt=(0,f.ref)(!1),xt=(0,f.ref)(!1),St=(0,f.ref)(!1),Ct=(0,f.ref)(!1),wt=(0,f.ref)(),A=(0,f.ref)(!1),Tt=(0,f.ref)(`header`),Et=(0,f.ref)(!1),Dt=(0,f.ref)({}),j=(0,f.ref)(``),M=(0,f.ref)(!1),N=(0,f.ref)(!1),Ot=(0,f.ref)(!1),kt=(0,f.ref)(!1),At=(0,f.ref)(``),jt=(0,f.ref)(),Mt=(0,f.ref)(),Nt=(0,f.ref)(``),Pt=(0,f.ref)(!1),P=(0,f.ref)(),Ft=(0,f.ref)(),F=(0,f.ref)(),It=(0,f.ref)(),Lt=(0,f.ref)(!1),Rt,zt=(0,f.ref)(!1),Bt,Vt=(0,f.ref)(!1),Ht=(0,f.ref)(``),I=(0,f.ref)(),Ut=(0,f.ref)(),L=(0,f.ref)(),Wt=(0,f.ref)(),Gt=(0,f.ref)(),Kt=(0,f.ref)(),R=(0,f.ref)(``),z=(0,f.ref)(de.createDraftCacheStatus(`idle`,`暂无本地草稿`)),qt=(0,f.ref)({rows:3,cols:3,withHeaderRow:!0}),Jt=new WeakSet,Yt=[`.gd-contract-template-designer__page-decorations-select-popup`,`.gd-contract-template-designer__page-decorations-dropdown-popup`].join(`,`),Xt,Zt,Qt=!1,$t=!1,en,B=(0,f.computed)(()=>m.readonly||m.disabled),tn=(0,f.computed)(()=>!!(P.value||I.value||L.value||M.value||N.value||Et.value||Ot.value||kt.value)),nn=(0,f.computed)(()=>!!m.enableDraftCache&&!B.value),rn=(0,f.computed)(()=>_.value.find(e=>e.id===v.value)??_.value[0]),an=(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??[]),on=(0,f.computed)(()=>pt.value?i.buildTemplatePreviewPages(pt.value):[]),sn=(0,f.computed)(()=>(mt.value??[]).map(e=>({file:e,pages:i.buildTemplatePreviewPages(e.template)}))),cn=(0,f.computed)(()=>sn.value.find(e=>e.file.id===ht.value)??sn.value[0]),ln=(0,f.computed)(()=>H.value.find(e=>e.id===C.value)),un=(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} 页`}})),dn=(0,f.computed)(()=>{let e=ln.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]),fn=(0,f.computed)(()=>i.resolvePageSize(U.value?.pageSize,x.value.pageSize)),pn=(0,f.computed)(()=>T.value&&E.value.length===0),mn=(0,f.computed)(()=>T.value?pn.value?`校验通过,正文变量与变量配置一致`:`发现 ${E.value.length} 个校验问题`:``),hn=(0,f.computed)(()=>{let e=U.value?.title||`合同正文`;return`${g.value&&rn.value?`${rn.value.name} · `:``}${e} · ${fn.value.label} · 共 ${x.value.pages.length} 页`}),gn=(0,f.computed)(()=>({none:`无装饰`,"page-number":`标准页码`,"internal-review":`内部审阅`,draft:`草稿`,custom:`自定义`})[t.resolvePageDecorationPreset(x.value.pageDecorations)]),_n=(0,f.computed)(()=>{let e=t.normalizePageDecorations(x.value.pageDecorations);return{header:e.header.enabled,footer:e.footer.enabled,watermark:e.watermark.enabled}}),vn=(0,f.computed)(()=>Object.values(_n.value).filter(Boolean).length),yn=(0,f.computed)(()=>{switch(z.value.type){case`saved`:return`草稿已缓存 ${de.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``}}),bn=(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`})),xn=(0,f.computed)(()=>`${Math.round(O.value*100)}%`),Sn=(0,f.computed)(()=>e.resolveFontFamilyOptions(m.fontFamilies,m.fontFamilyMode)),Cn=(0,f.computed)(()=>Sn.value.map(e=>({label:e.label,value:e.value}))),wn=e.DEFAULT_TEXT_ALIGN_OPTIONS,Tn=[...e.CONTRACT_BLOCK_STYLES.map(e=>({label:e.label,value:e.format}))],En=[{label:`实线`,value:`solid`},{label:`虚线`,value:`dashed`}],Dn=[{label:`完整显示`,value:`contain`},{label:`铺满裁剪`,value:`cover`},{label:`拉伸填充`,value:`fill`}],On=(0,f.computed)(()=>i.normalizePageSizeOptions(m.pageSizeOptions)),kn=(0,f.computed)(()=>On.value.map(e=>({label:`${e.label} · ${e.width} × ${e.height}`,value:i.getPageSizeKey(e)}))),An=(0,f.computed)(()=>i.getPageSizeKey(fn.value)),jn=(0,f.computed)(()=>r.resolveSigningPlacementToolItems({showSigningPlacementTools:m.showSigningPlacementTools})),Mn=(0,f.computed)(()=>{let e=[...m.variableTypes,...m.showAdvancedChoiceControls?i.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES:[],...m.showBuiltinSelectorControls?i.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES:[],...m.showCustomControls?i.DEFAULT_CUSTOM_FIELD_TYPES:[]].filter(e=>n.isContractTemplateFieldType(e?.type));return Array.from(new Map(e.map(e=>[e.type,e])).values())}),Nn=(0,f.computed)(()=>Mn.value.map(e=>({...e,icon:he.resolveFieldTypeIcon(e.type),group:e.type===`select`||e.type===`radio`?`advanced-choice`:e.type.endsWith(`-selector`)?`builtin-selector`:e.type===`custom`?`custom`:`basic`}))),Pn=(0,f.computed)(()=>i.normalizeContractTemplateMaxPages(m.maxPages)),Fn=(0,f.computed)(()=>x.value.pages.length>=Pn.value),In=(0,f.computed)(()=>{let e=i.collectTemplateValueVariableKeys(x.value);return Array.from(t.collectPageDecorationVariableKeys(x.value.pageDecorations)).filter(t=>!e.has(t))}),{scheduleAutoPaginate:W}=fe.useAutoPagination({templateValue:x,readonlyState:B,isAutoPaginating:ut,pendingPaginationPageId:dt,activePageId:w,normalizedMaxPages:Pn,pageRefs:D,syncPageEditors:K,commitBodyChange:wr,getPageSize:Z,notifyPageLimit:Nr}),{insertSigningPlacement:Ln,handleSigningPlacementDrop:Rn,insertSigningPlacementTool:zn,handleSigningPlacementDragStart:Bn,updateSigningPlacement:Vn,patchSelectedSigningPlacement:Hn,duplicateSigningPlacement:Un,removeSigningPlacement:Wn}=u.useSigningPlacementEditor({templateValue:x,signingPlacements:H,selectedSigningPlacement:ln,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:jr,selectSigningPlacement:Q,emitAdd:e=>h(`signing-placement-add`,e),emitChange:e=>h(`signing-placement-change`,e),emitRemove:e=>h(`signing-placement-remove`,e)}),{saveDraftCache:Gn,loadDraftCache:Kn,clearDraftCache:qn,restoreDraftCacheIfNeeded:Jn,stopDraftCacheTimer:Yn,restartDraftCacheTimer:Xn,resetDraftFingerprint:Zn}=me.useDraftCacheSession({draftCacheWritable:nn,multipleFilesMode:g,filesValue:_,activeFileIdValue:v,templateValue:x,draftCacheKey:an,draftCacheInterval:()=>m.draftCacheInterval,draftCacheMaxBytes:()=>m.draftCacheMaxBytes,pageSize:()=>m.pageSize,pageSizeOptions:()=>m.pageSizeOptions,syncActiveFileSnapshot:q,syncPageEditors:K,setActiveFileId:vr,emitFilesChange:J,commit:Y,setSigningPlacementInputErrorsByFile:e=>{y.value=e},buildSigningPlacementInputErrorsByFile:$e,updateDraftCacheStatus:yr,scheduleAutoPaginate:W,activePageId:w,selectedVariableKey:S}),Qn=(0,f.computed)(()=>{let e=Ht.value.trim().toLowerCase(),t=x.value.variables;return e?t.filter(t=>t.label.toLowerCase().includes(e)||t.key.toLowerCase().includes(e)):t}),$n=(0,f.computed)(()=>Math.max(Fe,fn.value.width-Ne)),er=(0,f.computed)(()=>Math.max(Ie,fn.value.height-Pe)),G=(0,f.computed)(()=>Dt.value[w.value]??cr()),tr=(0,f.computed)(()=>G.value.hasMixedBlockFormats?void 0:G.value.currentHeadingLevel??`paragraph`),nr=(0,f.computed)(()=>G.value.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),rr=(0,f.computed)(()=>G.value.fontSize??i.DEFAULT_FIELD_STYLE.fontSize??14),ir=(0,f.computed)(()=>G.value.textColor||i.DEFAULT_FIELD_STYLE.color||`#1f2937`),ar=(0,f.computed)(()=>V.value?.style?.fontFamily||i.DEFAULT_FIELD_STYLE.fontFamily||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`),or=(0,f.computed)(()=>{let t=e.DEFAULT_FONT_SIZE_PRESETS.map(e=>({label:`${e}px`,value:e})),n=fr(rr.value),r=fr(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===tt;s&&(tt=``),(a||!s)&&(b.value=Qe(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)&&(tt=o,h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r)),Dr(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===et;a||(y.value=$e(n,e)),a&&(et=``);let o=l.resolveContractTemplateActiveFileId(n,m.activeFileId||v.value);if(r===i?o!==v.value&&vr(o,{syncCurrent:!1,shouldEmit:!1}):(_.value=n,vr(o,{syncCurrent:!1,shouldEmit:!1,forceRefresh:!0,persistCurrentErrors:!1})),r!==d.serializeFingerprint(t)){let e=l.cloneContractTemplateFiles(n);et=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||vr(e,{syncCurrent:!0,shouldEmit:!1})});function sr(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&&Dr(ee,c.template),s}(0,f.watch)([()=>m.pageSize,()=>m.pageSizeOptions],([e,t])=>{if(g.value){sr(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)(Pn,()=>{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)([tn,A,ft],()=>{Ya()}),(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,an.value,m.draftCacheInterval,B.value],()=>{Zn(),Xn()}),(0,f.watch)(k,e=>{if(!(typeof document>`u`)){if(e){Xt=document.body.style.overflow,document.body.style.overflow=`hidden`;return}document.body.style.overflow=Xt??``,Xt=void 0}}),(0,f.onMounted)(()=>{Jn(),Xn(),W(w.value),window.addEventListener(`pointerdown`,ro,!0),window.addEventListener(`pointerup`,eo),window.addEventListener(`keydown`,oo,!0),window.addEventListener(`keydown`,so),window.addEventListener(`resize`,to),window.addEventListener(`scroll`,io,!0)}),(0,f.onBeforeUnmount)(()=>{mr(),Qt=!0,k.value&&typeof document<`u`&&(document.body.style.overflow=Xt??``),window.removeEventListener(`pointerdown`,ro,!0),window.removeEventListener(`pointerup`,eo),window.removeEventListener(`keydown`,oo,!0),window.removeEventListener(`keydown`,so),window.removeEventListener(`resize`,to),window.removeEventListener(`scroll`,io,!0),Bt!==void 0&&cancelAnimationFrame(Bt),Yn()});function cr(){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 lr(e){return e===`left`||e===`center`||e===`right`}function ur(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1&&e<=6}function dr(e,t=rr.value){let n=Number(e);return Number.isFinite(n)?Math.min(Re,Math.max(Le,Math.round(n))):t}function fr(e){let t=String(e||``).trim().match(/(\d+(\.\d+)?)/);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return Math.min(Re,Math.max(Le,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 pr(){$t=!1,en&&=(clearTimeout(en),void 0)}function mr(){let e=$t;pr(),e&&_r()}function hr(){$t=!0,en&&clearTimeout(en),en=setTimeout(()=>{en=void 0,!(!$t||Qt)&&($t=!1,_r())},Me)}function gr(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 _r(){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){mr();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,et=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 vr(e,t={}){let{syncCurrent:n,shouldEmit:r,forceRefresh:a,persistCurrentErrors:o}=pe.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):pr(),!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??``,Dt.value={},D.clear(),dt.value=``,T.value=!1,E.value=[],ft.value=!1,pt.value=void 0,mt.value=void 0,Zn(),r&&c&&h(`update:activeFileId`,s),n&&c&&nn.value&&Gn(),(0,f.nextTick)(()=>{W(w.value)}))}function Y(e){pr();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),tt=d.serializeFingerprint(r),h(`update:modelValue`,i.cloneTemplateValue(r)),h(`change`,i.cloneTemplateValue(r))),Dr(n.resizedSigningPlacementIds,r),r}function yr(e,t=e.type!==`unchanged`){z.value=e,t&&h(`draft-cache-change`,{...e})}function br(){return{...z.value}}function xr(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 Sr(e){X(e),$()}function Cr(e){let t=P.value?.pageId;t&&(D.get(t)?.focus(),R.value=typeof document<`u`&&document.execCommand(e)?`${e===`copy`?`已复制`:e===`cut`?`已剪切`:`已粘贴`}`:`浏览器未授权剪贴板操作,请使用系统快捷键。`,$())}function wr(e){let t=Y(i.syncTemplateVariablesWithPages(e));return S.value&&!t.variables.some(e=>e.key===S.value)&&(S.value=``),t}function Tr(e){gr(e),hr(),W(e.id)}function Z(e){return i.resolvePageSize(e?.pageSize,x.value.pageSize)}function Er(e){return H.value.filter(t=>t.pageId===e)}function Dr(e,t=x.value){let n=new Set(e);n.size&&(kr(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 Or(e){Q(e.id)}function kr(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 Ar(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 jr(e,t=[]){return kr(t),Y({...x.value,signingPlacements:e})}function Mr(e){if(B.value||!U.value)return;let t=On.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);kr(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 Nr(e){let t=Pn.value;R.value=`合同最多支持 ${t} 页`,h(`page-limit`,t,e)}function Pr(){if(B.value)return;if(Fn.value){Nr(`add`);return}let e=i.createDefaultPage(x.value.pages.length+1,fn.value);Y({...x.value,pages:[...x.value.pages,e]}),w.value=e.id}function Fr(e){if(B.value)return;if(Fn.value){Nr(`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=Er(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 Ir(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=Er(e.id);Ar(e.id);let r=x.value.pages.filter(t=>t.id!==e.id),i=wr({...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 Lr(e){if(B.value||x.value.pages.length<=1)return;let t=Er(e.id).length;if(!t){Ir(e);return}Se.Modal.confirm({title:`删除合同页面`,content:`此页包含 ${t} 个签署位置,删除页面会同时移除这些位置,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{Ir(e)}})}function Rr(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 zr(e){let t=e.type??`text`;return i.createTemplateVariable({...e,type:t,key:e.key||Rr(t),label:e.label||i.getFieldOption(t,Mn.value).label},Mn.value,m.defaultVariableStyle)}function Br(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 Vr(e){let{width:t,height:n,...r}=e,i=c.normalizeContractImageDimension(t),a=c.normalizeContractImageDimension(n);return{...r,...i===void 0?{}:{width:i},...a===void 0?{}:{height:a}}}function Hr(e={}){let t=c.normalizeContractImageDimension(jt.value),n=c.normalizeContractImageDimension(Mt.value);return{...e,...t===void 0?{}:{width:t},...n===void 0?{}:{height:n}}}function Ur(){At.value=``,jt.value=void 0,Mt.value=void 0,Nt.value=``}function Wr(e,t=U.value?.id??x.value.pages[0]?.id,n){let r=Vr({...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 Gr(e){return e instanceof Error?e:Error(`图片处理失败`)}async function Kr(e,t){t===`toolbar`&&(Pt.value=!0,Nt.value=``);try{let n=await c.processContractImageFile(e,{source:t,compression:m.imageCompression,upload:m.imageUpload});return Qt?void 0:n.src}catch(e){let n=Gr(e);t===`toolbar`&&(Nt.value=n.message),R.value=n.message,h(`image-error`,n,t);return}finally{t===`toolbar`&&(Pt.value=!1)}}async function qr(e){return await Kr(e,`paste`)??null}async function Jr(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 Kr(e,`toolbar`);if(Qt)return;if(!i||!a.isSafeContractImageUrl(i)){typeof e==`string`&&(Nt.value=`请输入安全的图片 URL`);return}if(n&&!D.has(n))return;let o=Wr({...t,src:i},n,r);return o&&(kt.value=!1,Ur(),R.value=`已插入图片`),o}function Yr(){B.value||Pt.value||($(),Nt.value=``,Ze.value&&(Ze.value.value=``),Ze.value?.click())}async function Xr(e){let t=e.target.files?.[0];t&&await Jr(t,Hr({alt:t.name}))}async function Zr(){let e=At.value;await Jr(e,Hr())}function Qr(e){vi(e),Ot.value=!1}function $r(){$(),Pr()}function ei(e,t,n,r){$(),Br(zr({type:t}),e,{left:n,top:r})}function ti(e){$(),S.value=e,Q()}function ni(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 ri(e){V.value&&ni({...V.value,...e,style:{...V.value.style,...e.style}})}function ii(e){B.value||!V.value||ri({key:e})}function ai(e){B.value||(Y({...x.value,pageDecorations:t.normalizePageDecorations(e)}),W(x.value.pages[0]?.id))}function oi(e){(e===`left`||e===`center`||e===`right`)&&ri({style:{textAlign:e}})}function si(e){(e===`solid`||e===`dashed`)&&ri({style:{borderStyle:e}})}function ci(e){(e===`contain`||e===`cover`||e===`fill`)&&ri({style:{objectFit:e}})}function li(e){ri({style:e})}function ui(e){li({fontFamily:String(e||``).trim()||`Noto Serif SC, Source Han Serif SC, Songti SC, STSong, SimSun, serif`})}function di(e){li({fontSize:dr(e,V.value?.style?.fontSize??14)})}function fi(e){V.value&&ri({multiline:e,rows:V.value.rows||3,lineHeight:V.value.lineHeight||28,style:e?{underline:!0}:void 0})}function pi(e){V.value&&ri({rows:Number(e||3),lineHeight:V.value.lineHeight||28})}function mi(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 hi(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 gi(e){B.value||Br(i.createTemplateVariable({...e,id:void 0,key:hi(`${e.key||e.type}_copy`),label:`${e.label}副本`,style:{...e.style}},Mn.value,m.defaultVariableStyle))}function _i(e){return B.value?void 0:Br(x.value.variables.find(t=>t.key===e.key)??i.createTemplateVariable(e,Mn.value,m.defaultVariableStyle))}function vi(e){if(!B.value)return Br(zr({type:e}))}function yi(e){if(B.value||!n.isContractTemplateFieldType(e))return;let t=P.value,r=Mn.value.find(t=>t.type===e);if(!t||!r)return;let i=ee.inferContextVariableLabel(t.leadingText)||r.label,a=ee.resolveContextVariableWidth(t.selectionWidth,Fe,$n.value),o=bi();Br(zr({type:e,label:i,...a?{width:a}:{},...o?{style:o}:{}}),t.pageId),R.value=t.hasSelection?`已将选中内容替换为${r.label}控件`:`已插入${r.label}控件`,$()}function bi(){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 xi(e){if(B.value)return;let t=P.value;t&&(Br(e,t.pageId),R.value=`已绑定到${e.label},沿用原控件尺寸`,$())}function Si(e){let t=e.type&&n.isContractTemplateFieldType(e.type)?e.type:`text`;return i.getFieldOption(t,Mn.value).label}function Ci(){x.value.variables.length&&(Vt.value=!0,(0,f.nextTick)(()=>{za(),Ft.value?.focusBindSearch()}))}function wi(e,t){e.dataTransfer?.setData(`application/x-gd-contract-variable`,t),e.dataTransfer&&(e.dataTransfer.effectAllowed=`copy`)}function Ti(e){return O.value=Math.round(Math.min(Ae,Math.max(ke,Number.isFinite(e)?e:1))*100)/100,O.value}let{width:Ei}=(0,Ce.useElementSize)(We),Di=(0,f.computed)(()=>Math.max(...x.value.pages.map(e=>Z(e).width),i.DEFAULT_PAGE_SIZE.width)+10),{fitWidth:Oi,applyAutoFit:ki,markUserAdjusted:Ai,userAdjusted:ji}=s.useFitWidthZoom({viewportWidth:Ei,widestPageWidth:Di,padding:48,minZoom:ke,maxZoom:Ae,getZoom:()=>O.value,applyZoom:Ti});function Mi(e){return Ai(),Ti(e)}function Ni(){return ki()}function Pi(){return O.value}function Fi(){Mi(O.value+je)}function Ii(){Mi(O.value-je)}function Li(){$(),M.value=!1,N.value=!1,Et.value=!1,k.value=!k.value}(0,f.watch)(Ei,e=>{Ct.value&&!ji.value&&e>0&&Oi()});function Ri(e){St.value?Xe.value?.focus():e()}function zi(){$(),Ka(),A.value=!1,Zt={fullscreen:k.value,sidebar:bt.value,inspector:xt.value,chrome:St.value,zoom:O.value,userAdjusted:ji.value},k.value=!0,bt.value=!0,xt.value=!0,St.value=!0,Ct.value=!0,(0,f.nextTick)(()=>{B.value?wt.value?.focus():D.get(w.value)?.focus()})}function Bi(){let e=Zt;Ct.value=!1,Zt=void 0,e&&(k.value=e.fullscreen,bt.value=e.sidebar,xt.value=e.inspector,St.value=e.chrome,e.userAdjusted?Mi(e.zoom):ki(),(0,f.nextTick)(()=>Ri(()=>Ke.value?.focusImmersive())))}function Vi(){Ct.value?Bi():zi()}function Hi(){$(),F.value=void 0;let e=q(!1);g.value?(mt.value=l.cloneContractTemplateFiles(_.value),pt.value=void 0,ht.value=v.value||_.value[0]?.id||``):(pt.value=i.cloneTemplateValue(e),mt.value=void 0,ht.value=``),ft.value=!0}function Ui(){ft.value=!1,pt.value=void 0,mt.value=void 0,ht.value=``}function Wi(){return ya()}function Gi(){$();let e=Wi();return _t.value=JSON.stringify(e,null,2),gt.value=!0,e}function Ki(){gt.value=!1}function qi(){return o.buildTemplateVariableData(q(!1))}function Ji(){$();let e=qi();return yt.value=e,vt.value=!0,e}function Yi(){vt.value=!1}function Xi(){$(),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=``,ft.value=!1,pt.value=void 0,mt.value=void 0,gt.value=!1,_t.value=``,vt.value=!1,yt.value={values:{},variables:[]},Dt.value={},dt.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 Zi(){B.value||($(),Se.Modal.confirm({title:`清空合同内容`,content:`将清空全部合同正文、页面、模板变量和签署位置,仅保留一个空白 A4 合同页。此操作不可撤销。`,okText:`确认清空`,okType:`danger`,cancelText:`取消`,onOk:()=>{Xi()}}))}function Qi(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 $i(e){$(),S.value=e.key,Q();let t=Qi(e);t&&(w.value=t.id,(0,f.nextTick)(()=>{D.get(t.id)?.scrollIntoVariable(e.key)}))}function ea(e){let t=x.value.variables.find(t=>t.key===e||t.id===e);t&&$i(t)}function ta(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 na(e,t=!0){$(),w.value=e,t&&(0,f.nextTick)(()=>{D.get(e)?.scrollIntoPage()})}function ra(e){x.value.pages.some(t=>t.id===e)&&na(e)}function ia(){if(A.value){aa();return}A.value=!0}function aa(){A.value=!1,(0,f.nextTick)(()=>Ri(()=>Ke.value?.focusPageDecorations()))}function oa(){return mr(),i.cloneTemplateValue(K())}function sa(e){b.value=Qe(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 ca(){let e=q(!1);return g.value?l.cloneContractTemplateFiles(_.value):l.cloneContractTemplateFiles(l.replaceContractTemplateFile(_.value,v.value,e))}function la(e,t){let n=l.normalizeContractTemplateFiles(e,void 0,m.pageSize),r=l.constrainContractTemplateFiles(n,m.pageSizeOptions),i=_.value;nt.value=!0,q(!1),_.value=r.files,y.value=$e(r.files,e),vr(l.resolveContractTemplateActiveFileId(_.value,t??v.value),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),d.serializeFingerprint(i)!==d.serializeFingerprint(_.value)&&J(_.value,``)}function ua(e){if(B.value)return;nt.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]),vr(t.id,{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0}),l.cloneContractTemplateFiles([t])[0]}function da(e){!g.value&&!_.value.some(t=>t.id===e)||(nt.value=!0,vr(e))}function fa(e,t){if(B.value)return;nt.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 pa(e){if(B.value||_.value.length<=1)return;nt.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&&vr(l.resolveContractTemplateActiveFileId(n,n[0]?.id),{syncCurrent:!1,shouldEmit:!0,forceRefresh:!0,persistCurrentErrors:!1}),l.cloneContractTemplateFiles([t])[0]}function ma(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;Se.Modal.confirm({title:`删除合同文件`,content:n?`“${t.name}”包含 ${n} 个签署位置,删除后文件内正文、变量和签署位置都会移除,是否继续?`:`删除“${t.name}”后,其正文和变量将无法恢复,是否继续?`,okText:`确认删除`,okType:`danger`,cancelText:`取消`,onOk:()=>{pa(e)}})}function ha(e,t){if(B.value)return;nt.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 ga(){q(!1);let e=wa(g.value?_.value.flatMap(e=>{let t=i.validateTemplateValue(e.template,{maxPages:Pn.value});return[...y.value[e.id]??[],...t].map(t=>({...t,fileId:e.id}))}):[...b.value,...i.validateTemplateValue(K(),{maxPages:Pn.value})]);return E.value=e,T.value=!0,h(`validate`,e),e}function _a(e){if(e.fileId&&e.fileId!==v.value){da(e.fileId),(0,f.nextTick)(()=>_a({...e,fileId:void 0}));return}let n=t.resolvePageDecorationValidationPath(e);if(n){A.value=!0,(0,f.nextTick)(()=>qe.value?.focusField(n));return}if(e.type===`signing-placement`){let t=H.value.find(t=>t.id===e.id);if(t){na(t.pageId),Q(t.id);return}}if(e.variableKey){ea(e.variableKey);return}if(e.pageId){ra(e.pageId);return}let r=x.value.variables.find(t=>t.id===e.id||t.key===e.id);if(r){$i(r);return}x.value.pages.some(t=>t.id===e.id)&&na(e.id)}function va(e){return t.resolvePageDecorationValidationPath(e)?`页面装饰`:e.type===`signing-placement`?`签署位置`:e.type===`variable`?`变量`:`字段`}function ya(){return mr(),i.exportTemplateValue(K())}function ba(){let e=q(!1),t=g.value?_.value:l.replaceContractTemplateFile(_.value,v.value,e);return l.exportContractTemplateFiles(t)}function xa(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 Sa(e){return xa(t=>r.buildSigningPlacementLocationRules(t,e))}function Ca(e){return xa(t=>r.buildContractLocationRules(t,e))}function wa(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 Ta(e){E.value=[...e],T.value=!0}function Ea(){E.value=[],T.value=!1}function Da(){D.get(U.value?.id??w.value)?.focus()}function Oa(e){lr(e)&&X({type:`set-text-align`,value:e})}function ka(e){(e===`paragraph`||ur(e))&&X({type:`apply-block-style`,format:e})}function Aa(e){let t=fr(e);t&&(X({type:`set-font-size`,value:t}),j.value=``)}function ja(e){let t=String(e||``).trim();if(!t){X({type:`unset-font-family`});return}X({type:`set-font-family`,value:t})}function Ma(e){Na(e.target?.value??``)}function Na(e){let t=e.trim();t&&X({type:`set-color`,value:t})}function Pa(e){j.value=e}function Fa(){j.value.trim()&&Aa(j.value)}function Ia(e){e.key===`Enter`&&(e.preventDefault(),Fa())}function La(e){e||(Fa(),j.value=``)}function Ra(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``;let t=xe.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)(()=>{za(),Ft.value?.focusFirstButton()})}function za(){let e=Ft.value?.getMenuElement(),t=P.value;if(!e||!t)return;let n=xe.clampContextMenuToElement(t.x,t.y,e);P.value={...t,x:n.x,y:n.y}}function Ba(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=xe.clampContextMenuPosition(e.clientX,e.clientY,248,400);I.value={...e,x:t.x,y:t.y},(0,f.nextTick)(()=>{let e=Ut.value?.getMenuElement(),t=I.value;if(e&&t){let n=xe.clampContextMenuToElement(t.x,t.y,e);I.value={...t,x:n.x,y:n.y}}Ut.value?.focusFirstItem()})}function Va(e){if(B.value)return;w.value=e.pageId,M.value=!1,N.value=!1,P.value=void 0,I.value=void 0,Gt.value=e.image.width,Kt.value=e.image.height,S.value=``,C.value&&Q();let t=xe.clampContextMenuPosition(e.clientX,e.clientY,288,196);L.value={pageId:e.pageId,image:e.image,x:t.x,y:t.y},(0,f.nextTick)(()=>{Ha(),Wt.value?.getMenuElement()?.querySelector(`input, button:not(:disabled)`)?.focus()})}function Ha(){let e=Wt.value?.getMenuElement(),t=L.value;if(!e||!t)return;let n=xe.clampContextMenuToElement(t.x,t.y,e);L.value={...t,x:n.x,y:n.y}}function Ua(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:c.normalizeContractImageDimension(Gt.value),height:c.normalizeContractImageDimension(Kt.value)})&&(R.value=`已更新图片尺寸`),$())}function Wa(){let e=L.value;!e||B.value||(D.get(e.pageId)?.updateSelectedContentImage({width:void 0,height:void 0})&&(R.value=`已恢复图片自然尺寸`),$())}function Ga(e){e.type===`table`?Ba(e):e.type===`image`?Va(e):Ra(e)}function $(){P.value=void 0,I.value=void 0,L.value=void 0,Vt.value=!1,Ht.value=``}function Ka(){M.value=!1,N.value=!1,Et.value=!1,Ot.value=!1,kt.value=!1}function qa(){Ka(),St.value=!St.value,(0,f.nextTick)(()=>Ri(()=>Ke.value?.focusChromeToggle()))}let Ja=[`.gd-contract-template-designer__context-menu`,`.gd-contract-template-designer__bubble-menu`,`.gd-contract-template-designer__bubble-menu-popup`].join(`,`);function Ya(){let e=B.value||zt.value||Lt.value||tn.value||A.value||ft.value,t=w.value,n=e?void 0:D.get(t)?.getSelectionViewportRect();if(!n){F.value=void 0;return}let r=n.top-40-ze,i=r>=12?r:n.bottom+ze,a=(n.left+n.right)/2-380/2,o=xe.clampContextMenuPosition(a,i,380,40);F.value={pageId:t,x:o.x,y:o.y},(0,f.nextTick)(()=>Xa(n))}function Xa(e){let t=It.value?.getMenuElement(),n=F.value;if(!t||!n)return;let r=t.getBoundingClientRect(),i=e.top-r.height-ze,a=i>=12?i:e.bottom+ze,o=(e.left+e.right)/2-r.width/2,s=xe.clampContextMenuToElement(o,a,t);F.value={...n,x:s.x,y:s.y}}function Za(){let e=F.value?.pageId??w.value,t=D.get(e)?.getSelectionRange();Rt=t?{pageId:e,...t}:void 0,Lt.value=!0,F.value=void 0}function Qa(e){if(!Lt.value)return;let t=Rt,n=D.get(e)?.getSelectionRange();t&&n&&t.pageId===e&&t.from===n.from&&t.to===n.to||(Lt.value=!1,Rt=void 0)}function $a(){!F.value||Bt!==void 0||(Bt=requestAnimationFrame(()=>{Bt=void 0,Ya()}))}function eo(){zt.value&&(zt.value=!1,Ya())}function to(){$(),$a()}function no(e,t){D.get(F.value?.pageId??w.value)?.requestTextContextMenu(e,t)}function ro(e){let t=e.target instanceof HTMLElement?e.target:null;t?.closest(`.ProseMirror`)&&(zt.value=!0,F.value=void 0),!(!P.value&&!I.value&&!L.value&&!F.value)&&(t?.closest(Ja)||($(),F.value&&Za()))}function io(e){(e.target instanceof Element?e.target:null)?.closest(Ja)||($(),$a())}function ao(e){let t=Ue.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 oo(e){if(e.key!==`Escape`||!A.value||typeof document>`u`)return;let t=Ue.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(Yt)||r?.closest(Yt)),a=!!(n&&t.contains(n)||r&&t.contains(r)),o=!!t.querySelector(`.ant-select-open, .ant-dropdown-open`);if(i||a&&o){Jt.add(e);return}!tn.value&&(a||e.target===document)&&(e.preventDefault(),e.stopPropagation(),aa())}function so(e){if((e.ctrlKey||e.metaKey)&&!e.altKey&&e.key.toLowerCase()===`s`){if(!nn.value||!ao(e))return;e.preventDefault(),Gn();return}if(e.key===`Escape`){if(Jt.has(e)){Jt.delete(e);return}let t=tn.value,n=t||A.value;if(!t&&A.value&&aa(),$(),Ka(),n&&e.stopPropagation(),!n){if(F.value){Za(),e.stopPropagation();return}Ct.value?Bi():k.value=!1}}}function co(e,t){e===w.value&&t.selectedContentImage&&(S.value=``,C.value&&Q()),e===w.value&&(Qa(e),Ya());let n=Dt.value[e];n&&be.isSameEditorState(n,t)||(Dt.value={...Dt.value,[e]:t})}function lo(e=qt.value.rows,t=qt.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:!!qt.value.withHeaderRow}}),M.value=!1,$()}let uo={"delete-table-row":{label:`删除当前行`,countKey:`deleteRow`},"delete-table-column":{label:`删除当前列`,countKey:`deleteColumn`},"delete-table":{label:`删除表格`,countKey:`deleteTable`}};function fo(e){let t=I.value;if(!t)return;let n=()=>{X(e,t.pageId),$()},r=uo[e.type];if(!r){n();return}let i=t.affectedVariableCounts[r.countKey];$(),Se.Modal.confirm({title:r.label,content:i?`此操作将移除 ${i} 个正文变量节点,是否继续?`:`此操作将修改表格结构,是否继续?`,okText:`确认`,okType:`danger`,cancelText:`取消`,onOk:n,onCancel:()=>D.get(t.pageId)?.focus()})}function po(e){let t=Ut.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 mo(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=P.value?.pageId;$(),D.get(t??``)?.focus()}function ho(e){if(e.key!==`Escape`)return;e.preventDefault(),e.stopPropagation();let t=L.value?.pageId;$(),D.get(t??``)?.focus()}function go(e){X({type:e}),N.value=!1,$()}return Be({getValue:oa,setValue:sa,getFiles:ca,setFiles:la,addFile:ua,selectFile:da,renameFile:fa,removeFile:pa,moveFile:ha,validate:ga,exportTemplate:ya,exportFiles:ba,getSubmitData:Wi,clearTemplate:Xi,saveDraftCache:Gn,loadDraftCache:Kn,clearDraftCache:qn,getDraftCacheStatus:br,insertVariable:_i,insertImage:Jr,focus:Da,openPreview:Hi,closePreview:Ui,openSubmitDataViewer:Gi,closeSubmitDataViewer:Ki,getVariableData:qi,openVariableDataViewer:Ji,closeVariableDataViewer:Yi,setServerValidationErrors:Ta,clearValidationErrors:Ea,scrollToVariable:ea,scrollToSigningPlacement:ta,scrollToPage:ra,setZoom:Mi,resetZoom:Ni,getZoom:Pi,fitWidth:Oi,insertSigningPlacement:Ln,selectSigningPlacement:Q,buildLocationRules:Sa,buildContractLocationRules:Ca}),(e,t)=>((0,f.openBlock)(),(0,f.createElementBlock)(`div`,{ref_key:`designerElement`,ref:Ue,class:(0,f.normalizeClass)([`gd-contract-template-designer`,{"is-disabled":p.disabled,"is-readonly":B.value,"is-fullscreen":k.value,"is-immersive":Ct.value}]),style:(0,f.normalizeStyle)(He.value)},[g.value?((0,f.openBlock)(),(0,f.createBlock)(ge.default,{key:0,files:_.value,"active-file-id":v.value,readonly:B.value,onSelect:da,onAdd:t[0]||=e=>ua(),onRename:fa,onRemove:ma,onMove:ha},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":bt.value,"is-inspector-collapsed":xt.value}])},[(0,f.createVNode)(_e.default,{collapsed:bt.value,pages:x.value.pages,variables:x.value.variables,"decoration-variable-keys":In.value,"signing-placement-navigation-items":un.value,"active-page-id":w.value,"selected-variable-key":S.value,"selected-signing-placement-id":C.value,"normalized-max-pages":Pn.value,"page-limit-reached":Fn.value,"selected-page":U.value,"selected-page-size":fn.value,"normalized-page-size-options":On.value,"page-size-options":kn.value,"selected-page-size-option-value":An.value,"show-signing-placement-tools":m.showSigningPlacementTools,readonly:B.value,"get-page-size":Z,"get-page-signing-placements":Er,onToggle:t[1]||=e=>bt.value=!bt.value,onAddPage:Pr,onActivatePage:na,onDuplicatePage:Fr,onRemovePage:Lr,onPatchPageFormat:Mr,onScrollToVariable:$i,onScrollToSigningPlacement:ta},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:Ge,class:`gd-contract-template-designer__workspace`},[(0,f.withDirectives)((0,f.createElementVNode)(`div`,{id:Ye,class:`gd-contract-template-designer__workspace-chrome`},[(0,f.createVNode)(re.default,{ref_key:`workspaceHeaderElement`,ref:Ke,summary:hn.value,"draft-cache-status-text":yn.value,"draft-cache-status-class":bn.value,"show-draft-cache-status":p.showDraftCacheStatus,"show-clear-button":p.showClearButton,"show-submit-data-viewer":p.showSubmitDataViewer,"show-variable-data-viewer":p.showVariableDataViewer,readonly:B.value,"zoom-percent":xn.value,"zoom-out-disabled":O.value<=ke,"zoom-in-disabled":O.value>=Ae,"is-fullscreen":k.value,immersive:Ct.value,"page-decorations-open":A.value,"page-decorations-studio-id":Je,"page-decorations-preset-label":gn.value,"page-decorations-enabled-count":vn.value,"page-decorations-enabled-states":_n.value,"chrome-controls-id":Ye,onZoomOut:Ii,onZoomIn:Fi,onFitWidth:(0,f.unref)(Oi),onResetZoom:Ni,onToggleFullscreen:Li,onToggleImmersive:Vi,onClear:Zi,onValidate:ga,onPreview:Hi,onSubmitData:Gi,onVariableData:Ji,onTogglePageDecorations:ia,onToggleChrome:qa},null,8,[`summary`,`draft-cache-status-text`,`draft-cache-status-class`,`show-draft-cache-status`,`show-clear-button`,`show-submit-data-viewer`,`show-variable-data-viewer`,`readonly`,`zoom-percent`,`zoom-out-disabled`,`zoom-in-disabled`,`is-fullscreen`,`immersive`,`page-decorations-open`,`page-decorations-preset-label`,`page-decorations-enabled-count`,`page-decorations-enabled-states`,`onFitWidth`]),(0,f.createVNode)(ie.default,{"variable-insert-popover-open":Ot.value,"onUpdate:variableInsertPopoverOpen":t[2]||=e=>Ot.value=e,"image-insert-popover-open":kt.value,"onUpdate:imageInsertPopoverOpen":t[3]||=e=>kt.value=e,"image-insert-url":At.value,"onUpdate:imageInsertUrl":t[4]||=e=>At.value=e,"image-insert-width":jt.value,"onUpdate:imageInsertWidth":t[5]||=e=>jt.value=e,"image-insert-height":Mt.value,"onUpdate:imageInsertHeight":t[6]||=e=>Mt.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":qt.value,"onUpdate:tableInsertDraft":t[9]||=e=>qt.value=e,"toolbar-more-open":Et.value,"onUpdate:toolbarMoreOpen":t[10]||=e=>Et.value=e,readonly:B.value,"editor-state":G.value,"current-block-format":tr.value,"block-format-options":Tn,"font-family-select-options":Cn.value,"current-editor-font-family":nr.value,"font-size-preset-options":or.value,"current-editor-font-size":rr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":ir.value,"body-control-tool-items":Nn.value,"page-limit-reached":Fn.value,"normalized-max-pages":Pn.value,"image-processing":Pt.value,"image-insert-error":Nt.value,onCommand:t[11]||=e=>X(e),onPatchBlockFormat:ka,onPatchFontFamily:ja,onPatchFontSize:Aa,onPatchColor:Ma,onPatchTextAlign:Oa,onInsertVariable:Qr,onOpenImageFile:Yr,onInsertImageUrl:Zr,onAddPage:Pr,onInsertTable:lo,onTableAction:go,onFontSizeSearch:Pa,onFontSizeCommit:Fa,onFontSizeDropdownChange:La,onFontSizeKeydown:Ia},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,!St.value]]),St.value?((0,f.openBlock)(),(0,f.createBlock)((0,f.unref)(Se.Tooltip),{key:0,title:`展开工具区`},{default:(0,f.withCtx)(()=>[(0,f.createElementVNode)(`button`,{ref_key:`workspaceChromeHandleElement`,ref:Xe,type:`button`,class:`gd-contract-template-designer__workspace-chrome-handle`,"aria-label":`展开工具区`,"aria-expanded":!1,"aria-controls":Ye,onClick:qa},[(0,f.createVNode)((0,f.unref)(we.DownOutlined),{"aria-hidden":`true`})],512)]),_:1})):(0,f.createCommentVNode)(``,!0),Ct.value&&!A.value?((0,f.openBlock)(),(0,f.createElementBlock)(`button`,{key:1,ref_key:`immersiveExitElement`,ref:wt,type:`button`,class:`gd-contract-template-designer__immersive-exit`,"aria-label":`退出沉浸写作`,onClick:Bi},[(0,f.createVNode)((0,f.unref)(we.CompressOutlined),{"aria-hidden":`true`}),t[26]||=(0,f.createElementVNode)(`span`,{class:`gd-contract-template-designer__immersive-exit-label`},`退出沉浸`,-1),t[27]||=(0,f.createElementVNode)(`kbd`,null,`Esc`,-1)],512)):(0,f.createCommentVNode)(``,!0),T.value?((0,f.openBlock)(),(0,f.createElementBlock)(`section`,Te,[(0,f.createVNode)((0,f.unref)(Se.Alert),{type:pn.value?`success`:`error`,message:mn.value,"show-icon":``},null,8,[`type`,`message`]),E.value.length?((0,f.openBlock)(),(0,f.createElementBlock)(`div`,Ee,[((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=>_a(e)},[(0,f.createElementVNode)(`span`,null,(0,f.toDisplayString)(e.message),1),(0,f.createElementVNode)(`small`,null,(0,f.toDisplayString)(va(e)),1)],8,De))),128))])):(0,f.createCommentVNode)(``,!0)])):(0,f.createCommentVNode)(``,!0),(0,f.createElementVNode)(`div`,{ref_key:`canvasElement`,ref:We,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)(te.default,{key:`${v.value}:${e.id}`,ref_for:!0,ref:t=>xr(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?Er(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":qr,onPageUpdate:Tr,onVariableDrop:ei,onVariableSelect:ti,onSigningPlacementDrop:(0,f.unref)(Rn),onSigningPlacementSelect:Or,onSigningPlacementMove:(0,f.unref)(Vn),onSigningPlacementRemove:(0,f.unref)(Wn),onEditorFocus:t[12]||=e=>na(e,!1),onEditorStateChange:co,onEditorContextMenu:Ga,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)(ye.default,{ref_key:`pageDecorationsStudioElement`,ref:qe,id:Je,open:A.value,decorations:x.value.pageDecorations,variables:x.value.variables,"font-family-options":Cn.value,readonly:p.readonly,disabled:p.disabled,"active-tab":Tt.value,"onUpdate:activeTab":t[14]||=e=>Tt.value=e,onChange:ai,onClose:aa},null,8,[`open`,`decorations`,`variables`,`font-family-options`,`readonly`,`disabled`,`active-tab`]),[[f.vShow,A.value]])],512),(0,f.createVNode)(ve.default,{collapsed:xt.value,readonly:p.readonly,disabled:p.disabled,"show-signing-placement-tools":m.showSigningPlacementTools,"body-control-tool-items":Nn.value,"signing-placement-tools":jn.value,"signing-placements":H.value,"selected-signing-placement":ln.value,"selected-signing-placement-page-size":dn.value,"selected-variable":V.value,variables:x.value.variables,"current-variable-font-family":ar.value,"font-family-select-options":Cn.value,"text-align-options":(0,f.unref)(wn),"border-style-options":En,"object-fit-options":Dn,"selected-variable-width-max":$n.value,"selected-variable-height-max":er.value,"min-font-size":Le,"max-font-size":Re,"default-multiline-rows":(0,f.unref)(3),"resolve-signing-placement-type-icon":(0,f.unref)(he.resolveSigningPlacementTypeIcon),"signing-placement-type-labels":(0,f.unref)(r.SIGNING_PLACEMENT_TYPE_LABELS),onToggle:t[15]||=e=>xt.value=!xt.value,onVariableDragStart:wi,onInsertVariable:vi,onSigningPlacementDragStart:(0,f.unref)(Bn),onInsertSigningPlacement:(0,f.unref)(zn),onPatchSigningPlacement:(0,f.unref)(Hn),onDuplicateSigningPlacement:t[16]||=e=>(0,f.unref)(Un)(),onRemoveSigningPlacement:t[17]||=e=>(0,f.unref)(Wn)(),onDuplicateVariable:gi,onRemoveVariable:mi,onPatchVariable:ri,onRenameVariable:ii,onPatchStyle:li,onPatchMultiline:fi,onPatchRows:pi,onPatchFontFamily:ui,onPatchFontSize:di,onPatchTextAlign:oi,onPatchBorderStyle:si,onPatchObjectFit:ci},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)(ne.default,{key:0,ref_key:`tableContextMenuElement`,ref:Ut,capabilities:I.value.capabilities,"active-alignment":I.value.activeAlignment,style:(0,f.normalizeStyle)({left:`${I.value.x}px`,top:`${I.value.y}px`}),onExecute:fo,onKeydown:po},null,8,[`capabilities`,`active-alignment`,`style`])):(0,f.createCommentVNode)(``,!0),L.value?((0,f.openBlock)(),(0,f.createBlock)(se.default,{key:1,ref_key:`imageContextMenuElement`,ref:Wt,width:Gt.value,"onUpdate:width":t[18]||=e=>Gt.value=e,height:Kt.value,"onUpdate:height":t[19]||=e=>Kt.value=e,x:L.value.x,y:L.value.y,readonly:B.value,onRestore:Wa,onApply:Ua,onKeydown:ho},null,8,[`width`,`height`,`x`,`y`,`readonly`])):(0,f.createCommentVNode)(``,!0),P.value?((0,f.openBlock)(),(0,f.createBlock)(ae.default,{key:2,ref_key:`textContextMenuElement`,ref:Ft,"bind-open":Vt.value,"onUpdate:bindOpen":t[20]||=e=>Vt.value=e,"bind-keyword":Ht.value,"onUpdate:bindKeyword":t[21]||=e=>Ht.value=e,x:P.value.x,y:P.value.y,"has-selection":P.value.hasSelection,"editor-state":G.value,"font-size-preset-options":or.value,"current-editor-font-size":rr.value,"editor-font-size-search-value":j.value,"text-align-options":(0,f.unref)(wn),"current-editor-text-color":ir.value,"body-control-tool-items":Nn.value,"text-menu-bindable-variables":Qn.value,"page-limit-reached":Fn.value,"table-insert-draft":qt.value,"variables-count":x.value.variables.length,"resolve-bind-variable-type-label":Si,onCommand:Sr,onClipboard:Cr,onOpenImage:Yr,onAddPage:$r,onInsertVariable:yi,onBindVariable:xi,onOpenBindPanel:Ci,onKeydown:mo,onPatchFontSize:Aa,onPatchTextAlign:Oa,onPatchColor:Na,onFontSizeSearch:Pa,onFontSizeCommit:Fa,onFontSizeDropdownChange:La,onFontSizeKeydown:Ia},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)(oe.default,{key:3,ref_key:`textBubbleElement`,ref:It,x:F.value.x,y:F.value.y,"editor-state":G.value,"font-size-preset-options":or.value,"current-editor-font-size":rr.value,"editor-font-size-search-value":j.value,"current-editor-text-color":ir.value,"text-align-options":(0,f.unref)(wn),onCommand:X,onPatchFontSize:Aa,onPatchTextAlign:Oa,onPatchColor:Na,onFontSizeSearch:Pa,onFontSizeCommit:Fa,onFontSizeDropdownChange:La,onFontSizeKeydown:Ia,onMore:no},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:Ze,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:Xr},null,544),(0,f.createElementVNode)(`span`,Oe,(0,f.toDisplayString)(R.value),1),(0,f.createVNode)(ce.default,{open:ft.value,"onUpdate:open":t[22]||=e=>ft.value=e,"preview-pages":on.value,"preview-file-groups":sn.value,"preview-active-group":cn.value,"preview-snapshot":pt.value,onCancel:Ui,onSelectFile:t[23]||=e=>ht.value=e},null,8,[`open`,`preview-pages`,`preview-file-groups`,`preview-active-group`,`preview-snapshot`]),(0,f.createVNode)(le.default,{open:gt.value,"onUpdate:open":t[24]||=e=>gt.value=e,json:_t.value,onCancel:Ki},null,8,[`open`,`json`]),(0,f.createVNode)(ue.default,{open:vt.value,"onUpdate:open":t[25]||=e=>vt.value=e,data:yt.value,"file-name":rn.value?.name,onCancel:Yi},null,8,[`open`,`data`,`file-name`])],6))}});exports.default=p;
|
package/dist/lib/components/pro-contract-template-designer/src/ProContractTemplateRenderer.vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/template-renderer.cjs`),n=require(`./ContractTemplateRendererField.cjs`),r=require(`./ContractTemplateRendererHeader.cjs`),i=require(`./ContractTemplateRendererPage.cjs`),ee=require(`./ContractTemplateRendererValidation.cjs`);let a=require(`vue`),o=require(`ant-design-vue`),te=require(`@vueuse/core`),ne=require(`@ant-design/icons-vue`);var re={key:2,class:`gd-contract-template-renderer__empty`},ie=[`data-highlighted-variable-key`],ae={class:`gd-contract-template-renderer__pages`},oe=[`aria-label`,`aria-expanded`],se={class:`gd-contract-template-renderer__panel-clip`},ce={class:`gd-contract-template-renderer__panel`},le={class:`gd-contract-template-renderer__panel-head`},ue={class:`gd-contract-template-renderer__panel-head-row`},de={class:`gd-contract-template-renderer__panel-head-actions`},fe=[`data-field-key`],s=.5,c=1.5,l=.1,pe=3e3,u=(0,a.defineComponent)({name:`ProContractTemplateRenderer`,__name:`ProContractTemplateRenderer`,props:{template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1}},emits:[`update:values`,`change`,`validate`,`submit`,`update:zoom`],setup(u,{expose:me,emit:he}){let d=u,f=he,ge=(0,a.ref)(),p=(0,a.ref)(),m=(0,a.ref)(),h=(0,a.ref)(t.normalizeRenderValues(d.template,d.values)),g=(0,a.ref)({...h.value}),_=(0,a.ref)(!1),v=(0,a.ref)([]),y=(0,a.ref)(!1),b=(0,a.ref)(!1),x=(0,a.ref)(``),S=(0,a.ref)(``),C=(0,a.ref)(``),w=(0,a.ref)(X(d.zoom)),T=(0,a.ref)(!1),E=(0,a.ref)(!1),{width:_e}=(0,te.useElementSize)(p),ve=(0,a.computed)(()=>d.readonly||d.disabled),D=(0,a.computed)(()=>t.validateTemplateRenderStructure(d.template)),O=(0,a.computed)(()=>_.value?v.value:D.value),k=(0,a.computed)(()=>(Array.isArray(d.template?.variables)?d.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),A=(0,a.computed)(()=>T.value?k.value.filter(e=>t.isEmptyRenderValue(h.value[e.key])):k.value),ye=(0,a.computed)(()=>k.value.filter(e=>t.isEmptyRenderValue(h.value[e.key])).length),be=(0,a.computed)(()=>{let e=new Map;return O.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),j=(0,a.computed)(()=>{let e=d.interactionMode===`panel`;return t.buildTemplateRenderPages(d.template,e?h.value:g.value,{readonly:d.readonly,disabled:d.disabled,mode:e?`display`:`control`,activeKey:e?S.value:``})}),M=(0,a.computed)(()=>j.value.length>0),N=(0,a.computed)(()=>k.value.filter(e=>!t.isEmptyRenderValue(h.value[e.key])).length),P=(0,a.computed)(()=>k.value.filter(e=>e.required&&t.isEmptyRenderValue(h.value[e.key])).length),xe=(0,a.computed)(()=>k.value.length?Math.round(N.value/k.value.length*100):0),F=(0,a.computed)(()=>_.value&&v.value.length===0),Se=(0,a.computed)(()=>_.value?F.value?`校验通过,模板与填写值均符合规则`:`发现 ${v.value.length} 个模板或填写问题`:D.value.length?`模板存在 ${D.value.length} 个问题,已安全降级展示`:``),Ce=(0,a.computed)(()=>_.value?O.value.length>0||b.value:D.value.length>0);(0,a.watch)(()=>d.template,e=>{I(t.normalizeRenderValues(e,d.values),!1),U();let n=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];n.includes(C.value)||(C.value=n.find(Boolean)??``),S.value&&!k.value.some(e=>e.key===S.value)&&Ae()},{deep:!0}),(0,a.watch)(()=>d.values,e=>{let n=t.normalizeRenderValues(d.template,e);Be(n,h.value)||(I(n,!1),U())},{deep:!0}),(0,a.watch)(()=>d.interactionMode,e=>{e===`inline`&&(g.value={...h.value})}),(0,a.watch)(()=>d.collapsiblePanel,e=>{e||(E.value=!1)}),(0,a.watch)(()=>d.zoom,e=>w.value=X(e)),(0,a.watch)(j,e=>{!C.value&&e.length&&(C.value=e[0].id)},{immediate:!0});function I(e,t=!0,n={}){h.value={...e},n.refreshInlineHtml!==!1&&(g.value={...e}),t&&(f(`update:values`,{...h.value}),f(`change`,{...h.value}))}function L(e,t){!e||ve.value||(I({...h.value,[e]:t},!0,{refreshInlineHtml:d.interactionMode!==`inline`}),_.value&&B())}function R(e){if(d.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?L(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?L(n,t.value===``?void 0:t.valueAsNumber):L(n,t.value))}function we(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(C.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&q(r)}function Te(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),q(t.dataset.key))}function z(){return{...h.value}}function Ee(e){I(t.normalizeRenderValues(d.template,e))}function B(){let e=t.validateTemplateRenderValues(d.template,h.value);return De(e),f(`validate`,e),e}function V(){let e=t.resolveTemplateRenderSubmitErrors(d.template,h.value,d.validateOnSubmit);if((d.validateOnSubmit||e.length)&&(De(e),f(`validate`,e)),e.length)return Me(e[0]),!1;let n=z();return f(`submit`,n),n}function H(){return I(t.buildInitialRenderValues(d.template)),U(),z()}function U(){_.value=!1,v.value=[],y.value=!1,b.value=!1,G()}function De(e){if(v.value=e,_.value=!0,y.value=!1,e.length){b.value=!1,G();return}Oe()}let W;function G(){W&&=(clearTimeout(W),void 0)}function Oe(){G(),b.value=!0,W=setTimeout(()=>{b.value=!1,W=void 0},pe)}function K(e){q(e,!0)}function ke(e){d.interactionMode===`panel`&&(E.value&&=!1,T.value&&k.value.some(t=>t.key===e)&&!A.value.some(t=>t.key===e)&&(T.value=!1))}function q(e,t=!1){e&&(ke(e),S.value=e,x.value=e,(0,a.nextTick)(()=>{je(e);let n=p.value?.querySelector(`[data-key="${Z(e)}"]`),r=n?.closest(`[data-render-page-id]`);r?.dataset.renderPageId&&(C.value=r.dataset.renderPageId),t&&n?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),d.interactionMode===`panel`&&m.value?.querySelector(`[data-field-key="${Z(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})}))}function Ae(){S.value=``,x.value=``,je(``)}function je(e){p.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function Me(e){e.variableKey?K(e.variableKey):e.pageId&&Y(e.pageId)}function Ne(e){return be.value.get(e)??[]}function Pe(e){return{variable:e,value:h.value[e.key],errors:Ne(e.key),active:S.value===e.key,readonly:d.readonly,disabled:d.disabled,updateValue:t=>L(e.key,t),focusVariable:()=>K(e.key)}}function Fe(){let e=k.value;if(!e.length)return;let n=e.findIndex(e=>e.key===S.value),r=n<0?0:n+1;for(let n=0;n<e.length;n+=1){let i=e[(r+n)%e.length];if(t.isEmptyRenderValue(h.value[i.key])){K(i.key);return}}}function Ie(){!d.collapsiblePanel||d.interactionMode!==`panel`||(E.value=!E.value)}function J(e){let t=X(e);return w.value=t,f(`update:zoom`,t),t}function Le(){return J(1)}function Re(){return w.value}function ze(){let e=Math.max(...j.value.map(e=>e.width),1);return J(Math.max(0,_e.value-48)/e)}function Y(e){e&&(C.value=e,(0,a.nextTick)(()=>{p.value?.querySelector(`[data-render-page-id="${Z(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function X(e){let t=Number(e);return Number.isFinite(t)?Math.min(c,Math.max(s,Math.round(t*100)/100)):1}function Z(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function Be(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function Ve(e){!(e.ctrlKey||e.metaKey)||!M.value||(e.preventDefault(),J(e.deltaY>0?w.value-l:w.value+l))}let Q;function $(){Q?.removeEventListener(`wheel`,Ve),Q=void 0}function He(e){$(),e&&(e.addEventListener(`wheel`,Ve,{passive:!1}),Q=e)}return(0,a.watch)(p,e=>{He(e)},{immediate:!0}),(0,a.onBeforeUnmount)(()=>{$(),G()}),me({getValues:z,setValues:Ee,validate:B,submit:V,resetValues:H,scrollToVariable:K,setZoom:J,resetZoom:Le,getZoom:Re,fitWidth:ze,scrollToPage:Y}),(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ge,class:(0,a.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":u.disabled,"is-readonly":u.readonly,"is-panel":u.interactionMode===`panel`,"is-inline":u.interactionMode===`inline`}]),onClick:we,onKeydown:Te,onInput:R,onChange:R},[M.value?((0,a.openBlock)(),(0,a.createBlock)(r.default,{key:0,title:u.title,"filled-count":N.value,"total-count":k.value.length,"required-missing-count":P.value,zoom:w.value,pages:j.value,"active-page-id":C.value,"min-zoom":s,"max-zoom":c,"show-toolbar":u.showToolbar,"show-validate-button":u.showValidateButton,"show-reset-button":u.showResetButton,"show-submit-button":u.showSubmitButton,"show-panel-toggle":u.interactionMode===`panel`&&u.collapsiblePanel,"panel-collapsed":E.value,readonly:u.readonly,disabled:u.disabled,onZoomIn:t[0]||=e=>J(w.value+l),onZoomOut:t[1]||=e=>J(w.value-l),onResetZoom:Le,onFitWidth:ze,onSelectPage:Y,onValidate:B,onReset:H,onSubmit:V,onTogglePanel:Ie},{extra:(0,a.withCtx)(()=>[(0,a.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,a.createCommentVNode)(``,!0),Ce.value?((0,a.openBlock)(),(0,a.createBlock)(ee.default,{key:1,passed:F.value,summary:Se.value,errors:O.value,expanded:y.value,onToggle:t[2]||=e=>y.value=!y.value,onFocusError:Me},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,a.createCommentVNode)(``,!0),M.value?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:3,class:(0,a.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":u.interactionMode===`inline`}])},[(0,a.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:p,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":x.value},[(0,a.createElementVNode)(`div`,ae,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(j.value,(e,t)=>((0,a.openBlock)(),(0,a.createBlock)(i.default,{key:e.id,page:e,index:t,total:j.value.length,zoom:w.value,"show-meta":u.showPageMeta},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`]))),128))])],8,ie),u.interactionMode===`panel`?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:0,class:(0,a.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":E.value&&u.collapsiblePanel}])},[u.collapsiblePanel?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Tooltip),{key:0,title:E.value?`展开填写面板`:`收起填写面板`},{default:(0,a.withCtx)(()=>[(0,a.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":E.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!E.value,onClick:t[3]||=e=>E.value=!E.value},[E.value?((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(ne.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(ne.RightOutlined),{key:1,"aria-hidden":`true`}))],8,oe)]),_:1},8,[`title`])):(0,a.createCommentVNode)(``,!0),(0,a.createElementVNode)(`div`,se,[(0,a.createElementVNode)(`aside`,ce,[(0,a.createElementVNode)(`div`,le,[(0,a.createElementVNode)(`div`,ue,[(0,a.createElementVNode)(`div`,null,[t[5]||=(0,a.createElementVNode)(`strong`,null,`填写项`,-1),(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(N.value)+` / `+(0,a.toDisplayString)(k.value.length)+` 已填写`,1)]),(0,a.createElementVNode)(`span`,null,(0,a.toDisplayString)(P.value?`${P.value} 项必填未完成`:`必填项已完成`),1)]),(0,a.createElementVNode)(`div`,de,[(0,a.createVNode)((0,a.unref)(o.Button),{size:`small`,type:T.value?`primary`:`default`,onClick:t[4]||=e=>T.value=!T.value},{default:(0,a.withCtx)(()=>[...t[6]||=[(0,a.createTextVNode)(` 仅看未填 `,-1)]]),_:1},8,[`type`]),(0,a.createVNode)((0,a.unref)(o.Button),{size:`small`,disabled:!ye.value,onClick:Fe},{default:(0,a.withCtx)(()=>[...t[7]||=[(0,a.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,a.createVNode)((0,a.unref)(o.Progress),{percent:xe.value,size:`small`,"show-info":!1},null,8,[`percent`])]),A.value.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:m,class:`gd-contract-template-renderer__field-list`},[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(A.value,t=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,a.renderSlot)(e.$slots,`field`,(0,a.mergeProps)({ref_for:!0},Pe(t)),()=>[(0,a.createVNode)(n.default,{variable:t,value:h.value[t.key],errors:Ne(t.key),active:S.value===t.key,readonly:u.readonly,disabled:u.disabled,onUpdateValue:e=>L(t.key,e),onFocusVariable:e=>K(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`onUpdateValue`,`onFocusVariable`])])],8,fe))),128))],512)):((0,a.openBlock)(),(0,a.createBlock)((0,a.unref)(o.Empty),{key:0,description:k.value.length?`暂无未填项`:`暂无填写项`,image:(0,a.unref)(o.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`description`,`image`]))])])],2)):(0,a.createCommentVNode)(``,!0)],2)):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,re,[(0,a.createVNode)((0,a.unref)(o.Empty),{description:`暂无可渲染的合同页面`,image:(0,a.unref)(o.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=u;
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`./types.cjs`),t=require(`./utils/advanced-controls.cjs`),n=require(`./utils/template-renderer.cjs`),r=require(`./ContractTemplateRendererField.cjs`),i=require(`./ContractTemplateRendererHeader.cjs`),a=require(`./ContractTemplateRendererPage.cjs`),o=require(`./ContractTemplateRendererValidation.cjs`);let s=require(`vue`),c=require(`ant-design-vue`),l=require(`@vueuse/core`),u=require(`@ant-design/icons-vue`);var ee={key:2,class:`gd-contract-template-renderer__empty`},te=[`data-highlighted-variable-key`],ne={class:`gd-contract-template-renderer__pages`},re=[`aria-label`,`aria-expanded`],ie={class:`gd-contract-template-renderer__panel-clip`},ae={class:`gd-contract-template-renderer__panel`},oe={class:`gd-contract-template-renderer__panel-head`},se={class:`gd-contract-template-renderer__panel-head-row`},ce={class:`gd-contract-template-renderer__panel-head-actions`},le={class:`gd-contract-template-renderer__field-group-head`},ue={class:`gd-contract-template-renderer__field-group-items`},de=[`data-field-key`],fe=.5,pe=1.5,d=.1,me=3e3,f=(0,s.defineComponent)({name:`ProContractTemplateRenderer`,__name:`ProContractTemplateRenderer`,props:{template:{default:void 0},values:{default:void 0},interactionMode:{default:`panel`},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},title:{default:`合同填写`},showSubmitButton:{type:Boolean,default:!0},validateOnSubmit:{type:Boolean,default:!0},showValidateButton:{type:Boolean,default:!0},showResetButton:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},showPageMeta:{type:Boolean,default:!0},collapsiblePanel:{type:Boolean,default:!0},zoom:{default:1},controlRegistry:{default:()=>({})},optionResolver:{type:Function,default:void 0},requester:{type:Function,default:void 0},allowedRemoteOrigins:{default:()=>[]},remoteRequestTimeoutMs:{default:1e4},remoteOptionsCacheTtlMs:{default:3e4},selectorHttp:{default:void 0},selectorUrlPrefix:{default:``}},emits:[`update:values`,`change`,`validate`,`submit`,`update:zoom`,`control-warning`],setup(f,{expose:he,emit:ge}){let p=f,m=ge,_e=[{label:`全部`,value:`all`},{label:`未填写`,value:`unfilled`},{label:`有错误`,value:`error`}],ve=(0,s.ref)(),h=(0,s.ref)(),g=(0,s.ref)(),_=(0,s.ref)(n.normalizeRenderValues(p.template,p.values)),ye=(0,s.ref)({..._.value}),v=(0,s.ref)(!1),y=(0,s.ref)([]),b=(0,s.ref)(!1),x=(0,s.ref)(!1),S=(0,s.ref)(``),C=(0,s.ref)(``),w=(0,s.ref)(``),T=(0,s.ref)(ft(p.zoom)),E=(0,s.ref)(``),D=(0,s.ref)(`all`),O=(0,s.ref)(!1),k=(0,s.ref)(new Map),A=new Map,j=new Map,M=new Map,N=new Set,{width:be}=(0,l.useElementSize)(h),xe=(0,s.computed)(()=>p.readonly||p.disabled),P=(0,s.computed)(()=>n.validateTemplateRenderStructure(p.template)),F=(0,s.computed)(()=>v.value?y.value:P.value),I=(0,s.computed)(()=>(Array.isArray(p.template?.variables)?p.template.variables:[]).filter(t=>!!t?.key&&e.isContractTemplateFieldType(t.type??`text`))),Se=(0,s.computed)(()=>{let e={..._.value};return I.value.forEach(n=>{let r=Ke(n);if(r?.toDisplayText)try{e[n.key]=r.toDisplayText(e[n.key],{variable:n,config:t.normalizeContractTemplateJsonObject(n.componentConfig)})}catch{}}),e}),Ce=(0,s.computed)(()=>I.value.filter(e=>n.isEmptyRenderValue(_.value[e.key])).length),we=(0,s.computed)(()=>{let e=new Map;return F.value.forEach(t=>{t.variableKey&&e.set(t.variableKey,[...e.get(t.variableKey)??[],t])}),e}),L=(0,s.computed)(()=>{let e=p.interactionMode===`panel`;return n.buildTemplateRenderPages(p.template,e?Se.value:ye.value,{readonly:p.readonly,disabled:p.disabled,mode:e?`display`:`control`,activeKey:e?C.value:``})}),Te=(0,s.computed)(()=>{let e=new Map,t=new Set(I.value.map(e=>e.key));return L.value.forEach(n=>{ot(n.contentHtml).forEach(r=>{t.has(r)&&!e.has(r)&&e.set(r,n.id)})}),e}),R=(0,s.computed)(()=>I.value.filter(tt)),Ee=(0,s.computed)(()=>{let e=L.value.map((e,t)=>({id:`page:${e.id}`,pageId:e.id,title:`第 ${t+1} 页${e.title?` · ${e.title}`:``}`,allVariables:[],variables:[]})),t=new Map(e.map(e=>[e.pageId,e])),n={id:`unlocated`,title:`未定位字段`,allVariables:[],variables:[]};return I.value.forEach(e=>{let r=t.get(Te.value.get(e.key)??``)??n;r.allVariables.push(e),tt(e)&&r.variables.push(e)}),[...e,n].filter(e=>e.variables.length>0).map(e=>({id:e.id,title:e.title,totalCount:e.allVariables.length,variables:e.variables}))}),z=(0,s.computed)(()=>L.value.length>0),B=(0,s.computed)(()=>I.value.filter(e=>!n.isEmptyRenderValue(_.value[e.key])).length),V=(0,s.computed)(()=>I.value.filter(e=>e.required&&n.isEmptyRenderValue(_.value[e.key])).length),De=(0,s.computed)(()=>I.value.length?Math.round(B.value/I.value.length*100):0),Oe=(0,s.computed)(()=>v.value&&y.value.length===0),ke=(0,s.computed)(()=>v.value?Oe.value?`校验通过,模板与填写值均符合规则`:`发现 ${y.value.length} 个模板或填写问题`:P.value.length?`模板存在 ${P.value.length} 个问题,已安全降级展示`:``),Ae=(0,s.computed)(()=>v.value?F.value.length>0||x.value:P.value.length>0);(0,s.watch)(()=>p.template,e=>{H(n.normalizeRenderValues(e,p.values),!1),G();let t=Array.isArray(e?.pages)?e.pages.map(e=>e?.id):[];t.includes(w.value)||(w.value=t.find(Boolean)??``),C.value&&!I.value.some(e=>e.key===C.value)&&He()},{deep:!0}),(0,s.watch)(()=>[p.template?.variables,p.optionResolver,p.requester,p.allowedRemoteOrigins,p.remoteRequestTimeoutMs,p.remoteOptionsCacheTtlMs],()=>{Je()},{deep:!0,immediate:!0}),(0,s.watch)(()=>p.values,e=>{let t=n.normalizeRenderValues(p.template,e);pt(t,_.value)||(H(t,!1),G())},{deep:!0}),(0,s.watch)(()=>p.interactionMode,e=>{e===`inline`&&(ye.value={..._.value})}),(0,s.watch)(()=>p.collapsiblePanel,e=>{e||(O.value=!1)}),(0,s.watch)(()=>p.zoom,e=>T.value=ft(e)),(0,s.watch)(L,e=>{!w.value&&e.length&&(w.value=e[0].id)},{immediate:!0});function H(e,t=!0,n={}){_.value={...e},n.refreshInlineHtml!==!1&&(ye.value={...e}),t&&(m(`update:values`,{..._.value}),m(`change`,{..._.value}))}function U(e,t){!e||xe.value||(H({..._.value,[e]:t},!0,{refreshInlineHtml:p.interactionMode!==`inline`}),v.value&&W())}function je(e){if(p.interactionMode!==`inline`)return;let t=e.target;if(!(t instanceof HTMLInputElement)&&!(t instanceof HTMLTextAreaElement))return;let n=t.dataset.key||``;n&&(t instanceof HTMLInputElement&&t.type===`checkbox`?U(n,t.checked):t instanceof HTMLInputElement&&t.type===`number`?U(n,t.value===``?void 0:t.valueAsNumber):U(n,t.value))}function Me(e){let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-render-page-id]`);n?.dataset.renderPageId&&(w.value=n.dataset.renderPageId);let r=t.closest(`[data-contract-render-wrapper], [data-contract-render-control]`)?.dataset.key||``;r&&Y(r)}function Ne(e){if(e.key!==`Enter`&&e.key!==` `)return;let t=e.target;!(t instanceof HTMLElement)||!t.dataset.key||(e.preventDefault(),Y(t.dataset.key))}function Pe(){return{..._.value}}function Fe(e){H(n.normalizeRenderValues(p.template,e))}function W(){let e=n.validateTemplateRenderValues(p.template,_.value);return ze(e),m(`validate`,e),e}function Ie(){let e=n.resolveTemplateRenderSubmitErrors(p.template,_.value,p.validateOnSubmit);if((p.validateOnSubmit||e.length)&&(ze(e),m(`validate`,e)),e.length)return We(e[0]),!1;let t=Pe();return m(`submit`,t),t}function Le(){return H(n.buildInitialRenderValues(p.template)),G(),Pe()}function Re(){xe.value||c.Modal.confirm({title:`重置填写内容?`,content:`将恢复模板中的默认值,当前未提交的填写内容会被覆盖。`,okText:`确认重置`,cancelText:`取消`,onOk:()=>Le()})}function G(){v.value=!1,y.value=[],b.value=!1,x.value=!1,q()}function ze(e){if(y.value=e,v.value=!0,b.value=!1,e.length){x.value=!1,q();return}Be()}let K;function q(){K&&=(clearTimeout(K),void 0)}function Be(){q(),x.value=!0,K=setTimeout(()=>{x.value=!1,K=void 0},me)}function J(e){Y(e,!0)}function Ve(e){p.interactionMode===`panel`&&(O.value&&=!1,I.value.some(t=>t.key===e)&&!R.value.some(t=>t.key===e)&&nt())}function Y(e,t=!1){e&&(Ve(e),C.value=e,S.value=e,(0,s.nextTick)(()=>{Ue(e);let n=h.value?.querySelector(`[data-key="${$(e)}"]`),r=n?.closest(`[data-render-page-id]`);r?.dataset.renderPageId&&(w.value=r.dataset.renderPageId),t&&n?.scrollIntoView({behavior:`smooth`,block:`center`,inline:`center`}),p.interactionMode===`panel`&&g.value?.querySelector(`[data-field-key="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`nearest`})}))}function He(){C.value=``,S.value=``,Ue(``)}function Ue(e){h.value?.querySelectorAll(`[data-contract-render-wrapper], [data-contract-render-control]`).forEach(t=>t.classList.toggle(`is-active`,!!e&&t.dataset.key===e))}function We(e){e.variableKey?J(e.variableKey):e.pageId&&dt(e.pageId)}function Ge(e){return we.value.get(e)??[]}function X(e){return k.value.get(e.key)??{options:e.options??[],loading:!1}}function Ke(e){let t=e.componentKey||e.type||``;return t?p.controlRegistry?.[t]:void 0}function Z(e,t){let n=new Map(k.value);n.set(e,t),k.value=n}function qe(e){m(`control-warning`,e)}async function Je(){A.forEach(e=>e.abort()),A.clear(),j.clear(),N.clear();let e=Array.isArray(p.template?.variables)?p.template.variables:[];await Promise.all(e.map(async e=>{if(!e?.key)return;let t=Array.isArray(e.options)?e.options.map(e=>({...e})):[];if(e.dataSource?await Ye(e,t):Z(e.key,{options:t,loading:!1}),e.type===`custom`&&!Ke(e)){let t=e.componentKey||``,n=`${e.key}:${t}`;N.has(n)||(N.add(n),qe({code:`CONTROL_COMPONENT_MISSING`,variableKey:e.key,componentKey:t,message:`${e.label||e.key} 未注册自定义控件 ${t||`(空)`}`}))}}))}async function Ye(e,n){let r=e.dataSource;if(!r)return;let i=new AbortController;A.set(e.key,i),Z(e.key,{options:n,loading:!0});let a=Xe(e),o=Date.now(),s=j.get(a);if(s&&s.expiresAt>o){Z(e.key,{options:s.options,loading:!1}),A.delete(e.key);return}let c=`CONTROL_OPTIONS_LOAD_FAILED`;try{r.kind===`url`&&!t.isAllowedContractTemplateRemoteUrl(r.url,p.allowedRemoteOrigins)&&(c=`CONTROL_REMOTE_URL_BLOCKED`);let o=M.get(a);o||(o=Ze(e,r,c,i),M.set(a,o),o.finally(()=>{M.get(a)===o&&M.delete(a)}).catch(()=>void 0));let s=await o;if(i.signal.aborted)return;let l=Math.max(0,Number(p.remoteOptionsCacheTtlMs)||0);l>0&&j.set(a,{options:s,expiresAt:Date.now()+l}),Z(e.key,{options:s.length?s:n,loading:!1})}catch(t){let r=t instanceof Error&&t.message.startsWith(`高级控件请求超时`);if(i.signal.aborted&&!r)return;let a=t instanceof Error?t.message:`高级控件选项加载失败`;Z(e.key,{options:n,loading:!1,error:a}),qe({code:c,variableKey:e.key,message:`${e.label||e.key}:${a}`,cause:t})}finally{A.get(e.key)===i&&A.delete(e.key)}}function Xe(e){try{return JSON.stringify([e.type,e.dataSource])}catch{return`${e.key}:${e.type}`}}async function Ze(e,n,r,i){let a;if(n.kind===`resolver`){if(!p.optionResolver)throw Error(`缺少 resolver ${n.resolverKey} 的宿主实现`);a=await p.optionResolver({resolverKey:n.resolverKey,params:n.params,variable:e,signal:i.signal})}else{if(!t.isAllowedContractTemplateRemoteUrl(n.url,p.allowedRemoteOrigins))throw Error(`远程地址未在 allowlist 中:${n.url}`);if(!p.requester)throw Error(`缺少宿主 requester,组件库不会直接发起网络请求`);let r=t.normalizeContractTemplateRequestTimeout(n.timeoutMs,p.remoteRequestTimeoutMs);a=await Qe(p.requester({url:n.url,method:n.method||`GET`,params:n.params,headers:n.headers,timeoutMs:r,signal:i.signal,variable:e}),i,r)}return t.normalizeContractTemplateControlOptions(a,n.kind===`url`?n:void 0,e.type||`select`)}function Qe(e,t,n){return new Promise((r,i)=>{let a=()=>{clearTimeout(c),t.signal.removeEventListener(`abort`,s)},o=e=>{a(),e()},s=()=>o(()=>i(Error(`高级控件请求已取消`))),c=setTimeout(()=>{o(()=>i(Error(`高级控件请求超时(${n}ms)`))),t.abort()},n);t.signal.addEventListener(`abort`,s,{once:!0}),e.then(e=>o(()=>r(e)),e=>o(()=>i(e)))})}function $e(e){let t=X(e);return{variable:e,value:_.value[e.key],errors:Ge(e.key),active:C.value===e.key,readonly:p.readonly,disabled:p.disabled,options:t.options,loading:t.loading,loadError:t.error,updateValue:t=>U(e.key,t),focusVariable:()=>J(e.key)}}function et(){let e=I.value;if(!e.length)return;let t=e.findIndex(e=>e.key===C.value),r=t<0?0:t+1;for(let t=0;t<e.length;t+=1){let i=e[(r+t)%e.length];if(n.isEmptyRenderValue(_.value[i.key])){J(i.key);return}}}function tt(e){let t=E.value.trim().toLocaleLowerCase();return!t||e.key.toLocaleLowerCase().includes(t)||(e.label??``).toLocaleLowerCase().includes(t)?D.value===`unfilled`?n.isEmptyRenderValue(_.value[e.key]):D.value===`error`?Ge(e.key).length>0:!0:!1}function nt(){E.value=``,D.value=`all`}function rt(e,t){let n=R.value;if(!n.length)return;let r=n.findIndex(t=>t.key===e),i=n[r<0?0:(r+t+n.length)%n.length]?.key;i&&(J(i),(0,s.nextTick)(()=>it(i)))}function it(e){(g.value?.querySelector(`[data-field-key="${$(e)}"]`))?.querySelector(`input:not([disabled]), textarea:not([disabled]), button:not([disabled])`)?.focus()}function at(e){if(e.key!==`Enter`||e.target instanceof HTMLTextAreaElement)return;let t=e.target;if(!(t instanceof Element))return;let n=t.closest(`[data-field-key]`)?.dataset.fieldKey;n&&(e.preventDefault(),rt(n,e.shiftKey?-1:1))}function ot(e){let t=new Set;if(typeof DOMParser<`u`)return new DOMParser().parseFromString(e,`text/html`).querySelectorAll(`[data-key]`).forEach(e=>{let n=e.getAttribute(`data-key`)?.trim();n&&t.add(n)}),t;let n=/\bdata-key\s*=\s*(?:"([^"]+)"|'([^']+)'|([^\s>]+))/gi,r;for(;r=n.exec(e);){let e=(r[1]??r[2]??r[3]??``).trim();e&&t.add(e)}return t}function st(){!p.collapsiblePanel||p.interactionMode!==`panel`||(O.value=!O.value)}function Q(e){let t=ft(e);return T.value=t,m(`update:zoom`,t),t}function ct(){return Q(1)}function lt(){return T.value}function ut(){let e=Math.max(...L.value.map(e=>e.width),1);return Q(Math.max(0,be.value-48)/e)}function dt(e){e&&(w.value=e,(0,s.nextTick)(()=>{h.value?.querySelector(`[data-render-page-id="${$(e)}"]`)?.scrollIntoView({behavior:`smooth`,block:`start`,inline:`center`})}))}function ft(e){let t=Number(e);return Number.isFinite(t)?Math.min(pe,Math.max(fe,Math.round(t*100)/100)):1}function $(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`)}function pt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return Array.from(n).every(n=>e[n]===t[n])}function mt(e){!(e.ctrlKey||e.metaKey)||!z.value||(e.preventDefault(),Q(e.deltaY>0?T.value-d:T.value+d))}let ht;function gt(){ht?.removeEventListener(`wheel`,mt),ht=void 0}function _t(e){gt(),e&&(e.addEventListener(`wheel`,mt,{passive:!1}),ht=e)}return(0,s.watch)(h,e=>{_t(e)},{immediate:!0}),(0,s.onBeforeUnmount)(()=>{gt(),q(),A.forEach(e=>e.abort()),A.clear()}),he({getValues:Pe,setValues:Fe,validate:W,submit:Ie,resetValues:Le,scrollToVariable:J,setZoom:Q,resetZoom:ct,getZoom:lt,fitWidth:ut,scrollToPage:dt}),(e,t)=>((0,s.openBlock)(),(0,s.createElementBlock)(`section`,{ref_key:`rendererElement`,ref:ve,class:(0,s.normalizeClass)([`gd-contract-template-renderer`,{"is-disabled":f.disabled,"is-readonly":f.readonly,"is-panel":f.interactionMode===`panel`,"is-inline":f.interactionMode===`inline`}]),onClick:Me,onKeydown:Ne,onInput:je,onChange:je},[z.value?((0,s.openBlock)(),(0,s.createBlock)(i.default,{key:0,title:f.title,"filled-count":B.value,"total-count":I.value.length,"required-missing-count":V.value,zoom:T.value,pages:L.value,"active-page-id":w.value,"min-zoom":fe,"max-zoom":pe,"show-toolbar":f.showToolbar,"show-validate-button":f.showValidateButton,"show-reset-button":f.showResetButton,"show-submit-button":f.showSubmitButton,"show-panel-toggle":f.interactionMode===`panel`&&f.collapsiblePanel,"panel-collapsed":O.value,readonly:f.readonly,disabled:f.disabled,onZoomIn:t[0]||=e=>Q(T.value+d),onZoomOut:t[1]||=e=>Q(T.value-d),onResetZoom:ct,onFitWidth:ut,onSelectPage:dt,onValidate:W,onReset:Re,onSubmit:Ie,onTogglePanel:st},{extra:(0,s.withCtx)(()=>[(0,s.renderSlot)(e.$slots,`headerExtra`)]),_:3},8,[`title`,`filled-count`,`total-count`,`required-missing-count`,`zoom`,`pages`,`active-page-id`,`show-toolbar`,`show-validate-button`,`show-reset-button`,`show-submit-button`,`show-panel-toggle`,`panel-collapsed`,`readonly`,`disabled`])):(0,s.createCommentVNode)(``,!0),Ae.value?((0,s.openBlock)(),(0,s.createBlock)(o.default,{key:1,passed:Oe.value,summary:ke.value,errors:F.value,expanded:b.value,onToggle:t[2]||=e=>b.value=!b.value,onFocusError:We},null,8,[`passed`,`summary`,`errors`,`expanded`])):(0,s.createCommentVNode)(``,!0),z.value?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:3,class:(0,s.normalizeClass)([`gd-contract-template-renderer__workspace`,{"is-inline":f.interactionMode===`inline`}])},[(0,s.createElementVNode)(`div`,{ref_key:`pagesViewportElement`,ref:h,class:`gd-contract-template-renderer__pages-viewport`,"data-highlighted-variable-key":S.value},[(0,s.createElementVNode)(`div`,ne,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(L.value,(e,t)=>((0,s.openBlock)(),(0,s.createBlock)(a.default,{key:e.id,page:e,index:t,total:L.value.length,zoom:T.value,"show-meta":f.showPageMeta},null,8,[`page`,`index`,`total`,`zoom`,`show-meta`]))),128))])],8,te),f.interactionMode===`panel`?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:0,class:(0,s.normalizeClass)([`gd-contract-template-renderer__panel-wrap`,{"is-collapsed":O.value&&f.collapsiblePanel}])},[f.collapsiblePanel?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Tooltip),{key:0,title:O.value?`展开填写面板`:`收起填写面板`},{default:(0,s.withCtx)(()=>[(0,s.createElementVNode)(`button`,{type:`button`,class:`gd-contract-template-renderer__panel-handle`,"aria-label":O.value?`展开填写面板`:`收起填写面板`,"aria-expanded":!O.value,onClick:t[3]||=e=>O.value=!O.value},[O.value?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.LeftOutlined),{key:0,"aria-hidden":`true`})):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(u.RightOutlined),{key:1,"aria-hidden":`true`}))],8,re)]),_:1},8,[`title`])):(0,s.createCommentVNode)(``,!0),(0,s.createElementVNode)(`div`,ie,[(0,s.createElementVNode)(`aside`,ae,[(0,s.createElementVNode)(`div`,oe,[(0,s.createElementVNode)(`div`,se,[(0,s.createElementVNode)(`div`,null,[t[6]||=(0,s.createElementVNode)(`strong`,null,`填写项`,-1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(B.value)+` / `+(0,s.toDisplayString)(I.value.length)+` 已填写`,1)]),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(V.value?`${V.value} 项必填未完成`:`必填项已完成`),1)]),(0,s.createVNode)((0,s.unref)(c.Input),{value:E.value,"onUpdate:value":t[4]||=e=>E.value=e,"allow-clear":``,size:`small`,class:`gd-contract-template-renderer__field-search`,placeholder:`搜索字段名称或标识`},{prefix:(0,s.withCtx)(()=>[(0,s.createVNode)((0,s.unref)(u.SearchOutlined),{"aria-hidden":`true`})]),_:1},8,[`value`]),(0,s.createElementVNode)(`div`,ce,[(0,s.createVNode)((0,s.unref)(c.Segmented),{value:D.value,"onUpdate:value":t[5]||=e=>D.value=e,size:`small`,class:`gd-contract-template-renderer__field-filter`,options:_e},null,8,[`value`]),(0,s.createVNode)((0,s.unref)(c.Button),{size:`small`,disabled:!Ce.value,onClick:et},{default:(0,s.withCtx)(()=>[...t[7]||=[(0,s.createTextVNode)(` 下一个未填项 `,-1)]]),_:1},8,[`disabled`])]),(0,s.createVNode)((0,s.unref)(c.Progress),{percent:De.value,size:`small`,"show-info":!1},null,8,[`percent`])]),R.value.length?((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:1,ref_key:`fieldListElement`,ref:g,class:`gd-contract-template-renderer__field-list`,onKeydownCapture:at},[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(Ee.value,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id,class:`gd-contract-template-renderer__field-group`},[(0,s.createElementVNode)(`div`,le,[(0,s.createElementVNode)(`strong`,null,(0,s.toDisplayString)(t.title),1),(0,s.createElementVNode)(`span`,null,(0,s.toDisplayString)(t.variables.length)+` / `+(0,s.toDisplayString)(t.totalCount)+` 项`,1)]),(0,s.createElementVNode)(`div`,ue,[((0,s.openBlock)(!0),(0,s.createElementBlock)(s.Fragment,null,(0,s.renderList)(t.variables,t=>((0,s.openBlock)(),(0,s.createElementBlock)(`div`,{key:t.id||t.key,"data-field-key":t.key},[(0,s.renderSlot)(e.$slots,`field`,(0,s.mergeProps)({ref_for:!0},$e(t)),()=>[(0,s.createVNode)(r.default,{variable:t,value:_.value[t.key],errors:Ge(t.key),active:C.value===t.key,readonly:f.readonly,disabled:f.disabled,options:X(t).options,loading:X(t).loading,"load-error":X(t).error,registration:Ke(t),"selector-http":f.selectorHttp,"selector-url-prefix":f.selectorUrlPrefix,onUpdateValue:e=>U(t.key,e),onFocusVariable:e=>J(t.key)},null,8,[`variable`,`value`,`errors`,`active`,`readonly`,`disabled`,`options`,`loading`,`load-error`,`registration`,`selector-http`,`selector-url-prefix`,`onUpdateValue`,`onFocusVariable`])])],8,de))),128))])]))),128))],544)):((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Empty),{key:0,class:`gd-contract-template-renderer__field-empty`,description:I.value.length?`没有符合条件的填写项`:`暂无填写项`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},(0,s.createSlots)({default:(0,s.withCtx)(()=>[E.value||D.value!==`all`?((0,s.openBlock)(),(0,s.createBlock)((0,s.unref)(c.Button),{key:0,type:`link`,size:`small`,onClick:nt},{default:(0,s.withCtx)(()=>[...t[9]||=[(0,s.createTextVNode)(`清除筛选`,-1)]]),_:1})):(0,s.createCommentVNode)(``,!0)]),_:2},[E.value||D.value!==`all`?{name:`description`,fn:(0,s.withCtx)(()=>[t[8]||=(0,s.createElementVNode)(`span`,null,`没有符合条件的填写项`,-1)]),key:`0`}:void 0]),1032,[`description`,`image`]))])])],2)):(0,s.createCommentVNode)(``,!0)],2)):((0,s.openBlock)(),(0,s.createElementBlock)(`div`,ee,[(0,s.createVNode)((0,s.unref)(c.Empty),{description:`暂无可渲染的合同页面`,image:(0,s.unref)(c.Empty).PRESENTED_IMAGE_SIMPLE},null,8,[`image`])]))],34))}});exports.default=f;
|
package/dist/lib/components/pro-contract-template-designer/src/composables/use-template-designer.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
2
|
-
`)}function
|
|
3
|
-
`)}function
|
|
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
|
+
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`),o=require(`../utils/advanced-controls.cjs`);var s=[{format:`A0`,width:3178,height:4493,label:`A0`},{format:`A1`,width:2245,height:3178,label:`A1`},{format:`A2`,width:1587,height:2245,label:`A2`},{format:`A3`,width:1123,height:1587,label:`A3`},{format:`A4`,width:794,height:1123,label:`A4`},{format:`A5`,width:559,height:794,label:`A5`},{format:`Letter`,width:816,height:1056,label:`Letter`},{format:`Legal`,width:816,height:1344,label:`Legal`}],c={...s[4]},l={color:`#1f2937`,background:`transparent`,fontSize:14,fontFamily:e.DEFAULT_CONTRACT_FONT_FAMILY,placeholderColor:`#7a818b`,lineColor:`#565b66`,textAlign:`left`,borderStyle:`solid`,objectFit:`contain`},u=3,ee=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 te(e){let t=Number(e);return Number.isFinite(t)&&t>=1?Math.max(1,Math.floor(t)):20}var g=[{type:`text`,label:`输入框`,defaultWidth:160,defaultHeight:32},{type:`date`,label:`日期`,defaultWidth:140,defaultHeight:32},{type:`number`,label:`数字`,defaultWidth:120,defaultHeight:32},{type:`image`,label:`图片`,defaultWidth:160,defaultHeight:96},{type:`checkbox`,label:`复选框`,defaultWidth:96,defaultHeight:28}],_=[{type:`select`,label:`下拉框`,defaultWidth:180,defaultHeight:32},{type:`radio`,label:`单选框`,defaultWidth:220,defaultHeight:32}],v=[{type:`user-selector`,label:`用户选择器`,defaultWidth:240,defaultHeight:36},{type:`dept-selector`,label:`部门选择器`,defaultWidth:240,defaultHeight:36},{type:`role-selector`,label:`角色选择器`,defaultWidth:240,defaultHeight:36},{type:`org-selector`,label:`组织架构`,defaultWidth:240,defaultHeight:36}],y=[{type:`custom`,label:`自定义控件`,defaultWidth:200,defaultHeight:36}],b=[...g,..._,...v,...y],x=0;function S(e){return x+=1,`${e}-${Date.now().toString(36)}-${x.toString(36)}`}function C(e){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 w(e){return s.find(t=>t.format===e)}function T(e){if(e)return e.format&&e.format!==`Custom`?e.format:s.find(t=>t.width===e.width&&t.height===e.height)?.format}function E(e,t=c){let n=T(t)??t.format,r=e?.format??T(e)??n??`Custom`,i=r===`Custom`?void 0:w(r),a=A(i?.width??e?.width,t.width),o=A(i?.height??e?.height,t.height);return{format:i?.format??r,width:a,height:o,label:e?.label??i?.label??t.label??r}}function D(e){return`${e.format??`Custom`}:${e.width}:${e.height}`}function O(e){let t=(Array.isArray(e)?e:s).map(e=>{let t=Number(e?.width),n=Number(e?.height);if(!Number.isFinite(t)||t<=0||!Number.isFinite(n)||n<=0)return;let r=e?.format;if(r&&r!==`Custom`){let t=w(r);return t?{...t,label:e.label??t.label}:void 0}let i=r?void 0:T(e),a=i?w(i):void 0;if(a)return{...a,label:e.label??a.label};if(r!==`Custom`)return;let o=Math.round(t),s=Math.round(n);if(!(o<=0||s<=0))return{format:`Custom`,width:o,height:s,label:e.label??`Custom`}}).filter(Boolean),n=new Set,r=t.filter(e=>{let t=D(e);return n.has(t)?!1:(n.add(t),!0)});return(r.length?r:s).map(e=>({...e}))}function k(e,t){let n=D(e);return t.find(e=>D(e)===n)}function ne(e,t){let n=O(t),r=n[0],i=E(e.pageSize,r),o=k(i,n)??r,s=new Map,c=e.pages.map(e=>{let t=E(e.pageSize,i),a=k(t,n)??r;return D(t)!==D(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 A(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t:Math.round(n)}function j(e=1,t){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:`<p>请输入合同正文。</p>`}}function M(e=1,t,n=`<p></p>`,r){return{id:S(`page`),title:`第 ${e} 页`,pageSize:t?E(t):void 0,contentHtml:n,contentJson:r}}function N(e=c){let t=E(e);return{pages:[j(1,t)],variables:[],pageSize:t,signingPlacements:[]}}function re(e=c){let t=E(e);return{pages:[M(1,t,`<p></p>`)],variables:[],pageSize:t,signingPlacements:[]}}function P(e,t=g){return t.find(t=>t.type===e)??b.find(t=>t.type===e)??g[0]}function F(e,t=g,n={}){let r=e.type===void 0?`text`:e.type,i=P(r,t),a=ie(r);return{id:e.id??S(`variable`),key:e.key,label:e.label??i.label??e.key,type:r,placeholder:e.placeholder??a.placeholder??``,width:Math.max(24,Math.round(e.width??i.defaultWidth??140)),height:Math.max(24,Math.round(e.height??a.height??i.defaultHeight??32)),required:e.required??!1,defaultValue:e.defaultValue??``,format:e.format??a.format??``,precision:e.precision??a.precision,useGrouping:e.useGrouping??a.useGrouping,checkedText:e.checkedText??a.checkedText??``,uncheckedText:e.uncheckedText??a.uncheckedText??``,options:Array.isArray(e.options)?e.options.map(e=>({...e})):[],dataSource:e.dataSource?{...e.dataSource}:void 0,multiple:e.multiple??!1,componentKey:e.componentKey??``,componentConfig:e.componentConfig?{...e.componentConfig}:{},multiline:e.multiline??!1,rows:Math.max(1,Math.round(e.rows??3)),lineHeight:Math.max(18,Math.round(e.lineHeight??28)),style:{...l,...a.style,...n,...e.style}}}function ie(e){return e===`date`?{placeholder:`年 月 日`,format:`YYYY年MM月DD日`,style:{border:!1,underline:!0}}:e===`number`?{placeholder:`0`,format:`decimal`,useGrouping:!0,style:{border:!1,underline:!0,textAlign:`right`}}:e===`image`?{placeholder:`图片`,height:96,style:{border:!0,underline:!1,borderStyle:`dashed`,background:`transparent`,lineColor:`#d9dce0`,textAlign:`center`,objectFit:`contain`}}:e===`checkbox`?{height:28,checkedText:`已选`,uncheckedText:``,style:{border:!1,underline:!1}}:e===`select`||e===`radio`?{placeholder:e===`select`?`请选择`:`请选择一项`,multiple:!1,style:{border:!0,underline:!1}}:e===`user-selector`||e===`dept-selector`||e===`role-selector`||e===`org-selector`||e===`custom`?{placeholder:`请选择`,multiple:!1,style:{border:!0,underline:!1}}:{style:{border:!1,underline:!0}}}function I(e){return e!==void 0&&!i.isContractTemplateFieldType(e)}function L(e,t=c){if(!e)return N(t);let n=E(e.pageSize,t),i=(e.pages?.length?e.pages:[j(1,n)]).map((e,t)=>({id:e.id||S(`page`),title:e.title||`第 ${t+1} 页`,pageSize:E(e.pageSize,n),contentHtml:e.contentHtml||`<p></p>`,contentJson:e.contentJson})),o=[],s=new Map,l=Object.fromEntries(i.map(e=>[e.id,E(e.pageSize,n)]));return(e.variables??[]).forEach(e=>{let t=F({...e,id:e.id||S(`variable`)});o.push(t),t.key&&s.set(t.key,t)}),i.forEach(e=>{de(e).forEach(e=>{if(!e.key)return;let t=s.get(e.key);if(!t){let t=F(e);o.push(t),s.set(e.key,t);return}if(I(e.type)){let n=F({...t,type:e.type});s.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 ae(e){return e.pages.map((t,n)=>G(e,t,n,t.contentHtml,{})).join(`
|
|
2
|
+
`)}function R(e){return e.pages.map((t,n)=>G(e,t,n,be(t.contentHtml))).join(`
|
|
3
|
+
`)}function oe(e){return z(e).map(({page:t,contentHtml:n},i)=>{let a=E(t.pageSize,e.pageSize),o=r.buildPageDecorationsHtml(e.pageDecorations,i+1,e.pages.length,e.variables,{});return`<section ${K(t,e.pageSize,e.pageDecorations,i+1)} style="width:${a.width}px;min-height:${a.height}px">${o}<div class="gd-contract-template-page__content">${n}</div></section>`}).join(`
|
|
4
|
+
`)}function z(e){let t=new Map(e.variables.map(e=>[e.key,e])),n=Array.isArray(e.signingPlacements)?e.signingPlacements:[];return e.pages.map(e=>({page:{...e,...e.pageSize?{pageSize:{...e.pageSize}}:{}},contentHtml:pe(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 B=class extends Error{constructor(e){super(e[0]?.message||`页面装饰配置无效`),this.errors=e,this.name=`ContractTemplatePageDecorationValidationError`}};function se(e){let t=r.validatePageDecorations(e.pageDecorations,e.variables);if(t.length)throw new B(t);let n=C(e);return n.pageDecorations&&=r.normalizePageDecorations(n.pageDecorations),{...n,rendererVersion:d,styleVersion:f,html:R(n)}}function V(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)),I(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=>{H(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 H(e){let t=new Set;function n(e){if(!e||typeof e!=`object`)return;let r=e;ce(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 ce(e){return e===`templateVariable`||e===`templateField`}function U(e){let t=new Set;return e.pages.forEach(e=>{H(e).forEach(e=>t.add(e))}),t}function W(e){let t=U(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 le(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 G(e,t,n,i,a){let o=r.buildPageDecorationsHtml(e.pageDecorations,n+1,e.pages.length,e.variables,a);return`<section ${K(t,e.pageSize,e.pageDecorations,n+1)}>${o}<div class="gd-contract-template-page__content">${i}</div></section>`}function K(e,n,i,a=1){let o=E(e.pageSize,n);return[`class="${r.buildPageDecorationClassNames(i,a)}"`,`data-page-id="${t.escapeHtmlAttribute(e.id)}"`,`data-page-format="${t.escapeHtmlAttribute(o.format??`Custom`)}"`,`data-page-label="${t.escapeHtmlAttribute(o.label??o.format??`自定义`)}"`,`data-page-width="${o.width}"`,`data-page-height="${o.height}"`].join(` `)}var ue=/<span\b[^>]*data-template-variable=["']true["'][^>]*>/g;function de(e){let n=new Map;function r(e){if(!e.key)return;let t=n.get(e.key);(!t||I(e.type)&&!I(t.type))&&n.set(e.key,e)}function i(e){if(!e||typeof e!=`object`)return;let t=e;t.type===`templateVariable`&&typeof t.attrs?.key==`string`&&r(fe(t.attrs,t.attrs.key)),t.content?.forEach(i)}i(e.contentJson);let a=e.contentHtml||``;return t.canUseDomHtml()?new DOMParser().parseFromString(a,`text/html`).querySelectorAll(`[data-template-variable]`).forEach(e=>{r(q(t.createElementAttributeReader(e)))}):t.forEachHtmlTag(a,ue,e=>{r(q(t.createTagAttributeReader(e)))}),Array.from(n.values())}function q(e){let n=e(`data-key`)??``,r=e(`data-variable-type`),i=e(`data-precision`),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`)??``,options:o.decodeContractTemplateJsonAttribute(e(`data-control-options`))??[],dataSource:o.decodeContractTemplateJsonAttribute(e(`data-control-source`)),multiple:e(`data-multiple`)===`true`,componentKey:e(`data-component-key`)??``,componentConfig:o.decodeContractTemplateJsonAttribute(e(`data-component-config`))??{},multiline:e(`data-multiline`)===`true`,rows:t.readNumberAttribute(e(`data-rows`),3),lineHeight:t.readNumberAttribute(e(`data-line-height`),28),style:{border:t.readOptionalBoolean(e(`data-border`)),underline:t.readOptionalBoolean(e(`data-underline`)),color:e(`data-color`),background:e(`data-background`),fontSize:t.readNumberAttribute(e(`data-font-size`),14),fontFamily:e(`data-font-family`),placeholderColor:e(`data-placeholder-color`),lineColor:e(`data-line-color`),textAlign:Z(e(`data-text-align`)),borderStyle:Q(e(`data-border-style`)),objectFit:$(e(`data-object-fit`))}}}function fe(e,n){let r=t=>typeof e[t]==`string`?e[t]:void 0;return{key:n,label:r(`label`)??n,type:e.type===void 0?`text`:e.type,placeholder:r(`placeholder`)??``,width:t.readNumberAttribute(e.width,160),height:t.readNumberAttribute(e.height,32),required:e.required===!0,defaultValue:r(`defaultValue`)??``,format:r(`format`)??``,precision:typeof e.precision==`number`?e.precision:void 0,useGrouping:typeof e.useGrouping==`boolean`?e.useGrouping:void 0,checkedText:r(`checkedText`)??``,uncheckedText:r(`uncheckedText`)??``,options:Array.isArray(e.options)?e.options:[],dataSource:e.dataSource,multiple:e.multiple===!0,componentKey:r(`componentKey`)??``,componentConfig:e.componentConfig,multiline:e.multiline===!0,rows:t.readNumberAttribute(e.rows,3),lineHeight:t.readNumberAttribute(e.lineHeight,28),style:{border:typeof e.border==`boolean`?e.border:void 0,underline:typeof e.underline==`boolean`?e.underline:void 0,color:r(`color`),background:r(`background`),fontSize:t.readNumberAttribute(e.fontSize,14),fontFamily:r(`fontFamily`),placeholderColor:r(`placeholderColor`),lineColor:r(`lineColor`),textAlign:Z(e.textAlign),borderStyle:Q(e.borderStyle),objectFit:$(e.objectFit)}}}function pe(e,n){if(!e)return e;if(t.canUseDomHtml()){let t=new DOMParser().parseFromString(e,`text/html`);return me(t),t.querySelectorAll(`[data-template-variable]`).forEach(e=>{he(e,n)}),t.body.innerHTML}return t.replaceTemplateVariableSpans(_e(e),(e,r)=>{let i=t.createTagAttributeReader(r);return i(`data-key`)?ge(i,n):e})}function me(e){e.querySelectorAll(`script,style,meta,link`).forEach(e=>e.remove()),e.querySelectorAll(`*`).forEach(e=>{Array.from(e.attributes).forEach(t=>{let n=t.name.toLowerCase(),r=t.value;if(n.startsWith(`on`)||n===`srcdoc`){e.removeAttribute(t.name);return}if((n===`href`||n===`src`)&&Y(r)){e.removeAttribute(t.name);return}n===`style`&&X(r)&&e.removeAttribute(t.name)})})}function J(e,r){let i=e(`data-key`)??``,a=r.get(i),o=a?.type??e(`data-variable-type`)??`text`,s=ye(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:ve(a,e)});return{key:i,label:a?.label??e(`data-label`)??i,presentation:c,text:c.type===`image`&&c.hasDefaultValue?` `:c.displayText||` `}}function he(e,n){let{key:r,label:i,presentation:a,text:o}=J(t.createElementAttributeReader(e),n);e.setAttribute(`data-template-variable`,`true`),e.setAttribute(`data-key`,r),e.setAttribute(`data-label`,i),e.setAttribute(`data-variable-type`,a.type),e.setAttribute(`data-width`,String(a.width)),e.setAttribute(`data-height`,String(a.height)),e.setAttribute(`data-border`,String(a.border)),e.setAttribute(`data-underline`,String(a.underline)),e.setAttribute(`data-color`,a.color),e.setAttribute(`data-background`,a.background),e.setAttribute(`data-font-size`,String(a.fontSize)),e.setAttribute(`data-font-family`,a.fontFamily),e.setAttribute(`data-placeholder-color`,a.placeholderColor),e.setAttribute(`data-line-color`,a.lineColor),e.setAttribute(`data-text-align`,a.textAlign),e.setAttribute(`data-border-style`,a.borderStyle),e.setAttribute(`data-object-fit`,a.objectFit),e.className=a.classes.join(` `),e.setAttribute(`style`,a.styleText),e.textContent=o}function ge(e,n){let{key:r,label:i,presentation:a,text:o}=J(e,n);return`<span data-template-variable="true" data-key="${t.escapeHtmlAttribute(r)}" data-label="${t.escapeHtmlAttribute(i)}" data-variable-type="${t.escapeHtmlAttribute(a.type)}" data-width="${a.width}" data-height="${a.height}" data-border="${a.border}" data-underline="${a.underline}" data-font-family="${t.escapeHtmlAttribute(a.fontFamily)}" class="${t.escapeHtmlAttribute(a.classes.join(` `))}" style="${t.escapeHtmlAttribute(a.styleText)}">${t.escapeHtmlText(o)}</span>`}function _e(e){return e.replace(/<\s*(script|style|meta|link)\b[\s\S]*?<\s*\/\s*\1\s*>/gi,``).replace(/<\s*(meta|link)\b[^>]*>/gi,``).replace(/\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi,``).replace(/\s+(href|src)\s*=\s*(["'])(.*?)\2/gi,(e,t,n,r)=>Y(r)?``:` ${t}=${n}${r}${n}`).replace(/\s+style\s*=\s*(["'])(.*?)\1/gi,(e,t,n)=>X(n)?``:` style=${t}${n}${t}`)}function ve(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 ye(e,t){return e===`image`&&Y(t)?``:t}function Y(e){let t=e.trim().replace(/[\u0000-\u001F\s]+/g,``).toLowerCase();return t.startsWith(`javascript:`)||t.startsWith(`vbscript:`)||t.startsWith(`data:`)&&!t.startsWith(`data:image/`)}function X(e){return/expression\s*\(|javascript:|vbscript:/i.test(e)}function be(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 xe(e){return e===`left`||e===`center`||e===`right`}function Se(e){return e===`solid`||e===`dashed`}function Ce(e){return e===`contain`||e===`cover`||e===`fill`}function Z(e){return xe(e)?e:void 0}function Q(e){return Se(e)?e:void 0}function $(e){return Ce(e)?e:void 0}function we(e,t=[]){let n=[...t,...V(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.ALL_DEFAULT_FIELD_TYPES=b,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=B,exports.DEFAULT_ADVANCED_CHOICE_FIELD_TYPES=_,exports.DEFAULT_BUILTIN_SELECTOR_FIELD_TYPES=v,exports.DEFAULT_CUSTOM_FIELD_TYPES=y,exports.DEFAULT_FIELD_STYLE=l,exports.DEFAULT_FIELD_TYPES=g,exports.DEFAULT_MULTILINE_LINE_HEIGHT=ee,exports.DEFAULT_MULTILINE_ROWS=u,exports.DEFAULT_PAGE_SIZE=c,exports.PAGE_SIZE_OPTIONS=s,exports.buildTemplateExpressionHtml=R,exports.buildTemplateHtml=ae,exports.buildTemplatePreviewHtml=oe,exports.buildTemplatePreviewPages=z,exports.cloneTemplateValue=C,exports.collectTemplateLocationRuleExportErrors=we,exports.collectTemplateValueVariableKeys=U,exports.collectTemplateVariableKeys=H,exports.constrainTemplatePageSizes=ne,exports.createBlankPage=M,exports.createBlankTemplate=re,exports.createDefaultPage=j,exports.createDefaultTemplate=N,exports.createDesignerId=S,exports.createTemplateVariable=F,exports.exportTemplateValue=se,exports.findPageSizeOption=k,exports.getFieldOption=P,exports.getPageSizeKey=D,exports.getPageSizeOption=w,exports.inferPageFormat=T,exports.normalizeContractTemplateMaxPages=te,exports.normalizePageSizeOptions=O,exports.normalizeTemplateValue=L,exports.resolvePageSize=E,exports.splitPageContentByMeasurements=le,exports.syncTemplateVariablesWithPages=W,exports.validateContractTemplateVariableKey=h,exports.validateTemplateValue=V;
|